中级教程八 - OGRE 3D 中文
Daz3dStudio中文教程

Daz3dStudio中文教程•50:02•Daz3d Studio 4.9.4 新手安装教程中文视频入门•上传者:传世太尉•644次播放•02:49•Daz3D Studio 安装photoshop插件中文教程3D Bridge Plugin•上传者:传世太尉•200次播放•40:16•快速制作路人甲3D角色模型一张照片生成3d模型facegen daz3d iclone 中文视频教程•上传者:传世太尉•683次播放•33:38•DECIMATOR FOR DAZ3D STUDIO 模型减面工具中文安装使用教程 iclone 角色导入•上传者:传世太尉•202次播放•19:20•Daz3d studio 安装使用第三方素材包中文教程•上传者:传世太尉•286次播放•Daz3d Studio 角色模型导入虚幻4游戏引擎工作流程中文教程•上传者:传世太尉•284次播放•39:02•Daz3d角色模型导入maya并使用mixamo动作库maya怎么控制自定义骨骼 3D动画设计•上传者:传世太尉•266次播放•20:42•Daz3d studio 场景模型导出到c4d maya 3dmax流程演示中文教程•上传者:传世太尉•261次播放•26:47•Daz3d Studio 角色动画导入虚幻4游戏引擎 ue4 01 Daz3d自身骨骼•上传者:传世太尉•328次播放•34:08•Daz3d Studio 角色动画导入虚幻4游戏引擎ue4 02 montionbuilder标准角色动画•上传者:传世太尉•98次播放•12:37•Daz3d Studio 角色动画导入虚幻4游戏引擎ue4 03 3dsmax 常用bip动作库 montionbuiler•上传者:传世太尉•69次播放•16:08•Daz3d Studio 角色动画导入虚幻4游戏引擎 ue4 04 mixamo 动作库多条动作剪辑工作流程•上传者:传世太尉•119次播放•05:11•Daz3D Studio角色表情导出到Unity3d Morphs to Blendshapes 工作流程中文视频教程•上传者:传世太尉•88次播放•10:25•Daz3d Studio 角色动画导入虚幻4游戏引擎 ue4 05 替换第三人称玩家角色闲置走跑动画•上传者:传世太尉•133次播放•03:45•Daz3d Studio 角色骨骼导出后模型骨骼不一致的bug修复方法•上传者:传世太尉•66次播放•56:45•Autodesk MotionBuilder 中文教程 21 - 快速制作一分钟动画maya 3dmax c4d iclone ue4•上传者:传世太尉•543次播放•Daz3d Studio 导入外部动作捕捉数据流程 bvh导入 G2 G3 G8 •上传者:传世太尉•50次播放•13:18•Daz3d Studio Iray快速渲染设置方法•上传者:传世太尉•112次播放•02:24•Daz3d Studio 4.9 基础入门中文视频教程 01 Daz3d studio是什么•上传者:传世太尉•224次播放•23:03•Daz3d Studio 4.9 基础入门中文视频教程 02 基础入门操作•上传者:传世太尉•207次播放•07:12•Daz3d Studio 4.9 基础入门中文视频教程 03 快捷键大全操作演示•上传者:传世太尉•112次播放•20:47•daz3d studio 中文视频教程如何导出角色给maya 3dmax c4d 修复法线贴图眼睛发白•上传者:传世太尉•185次播放•23:33•Daz3d Studio 4.9 基础入门中文视频教程 04 iray渲染基础•上传者:传世太尉•154次播放•07:52•Daz3d Studio 4.9 基础入门中文视频教程 05 posing造型•上传者:传世太尉•119次播放•05:17•Daz3d Studio 4.9 基础入门中文视频教程 06 Shaping变形•上传者:传世太尉•96次播放•09:26•Daz3d Studio 4.9 基础入门中文视频教程 07 Presets保存角色姿式为预设•上传者:传世太尉•94次播放•08:20•Daz3d Studio 4.9 基础入门中文视频教程 08 Lighting 灯光基础•上传者:传世太尉•228次播放•06:53•Daz3d Studio 4.9 基础入门中文视频教程 09 Environment 环境渲染参数•上传者:传世太尉•141次播放•06:12•Daz3d Studio 4.9 基础入门中文视频教程 10 Cameras 相机景深设置•上传者:传世太尉•76次播放•09:13•Daz3d Studio 4.9 基础入门中文视频教程 11 auto-fit 自动修正不同基础模型适配素材•上传者:传世太尉•106次播放•15:48•Daz3d Studio 4.9 基础入门中文视频教程 12 动画基础关键帧动画相机渲染动画序列•上传者:传世太尉•161次播放•20:02•Daz3d Studio 插件教程 Mimic Live! 语音转口型动画 lip sync studio 面部表情捕捉•上传者:传世太尉•221次播放•03:36•无标记面部表情捕捉系统软件中文教程一支持普通摄像头kinect daz3d montionbuilder•上传者:传世太尉•749次播放•14:20•daz studio 角色导iclone7新表情工作流程中文视频教程•上传者:传世太尉•201次播放•daz studio 衣服布料动力学模拟解算新功能演示 4.10测试版安装指导中文视频教程•上传者:传世太尉•106次播放•daz3d studio 角色导入iclone 弹簧乳摇效果材质调整头发动力学工作流程中文教程•上传者:传世太尉•89次播放•daz studio 重新建立sc智能控制面板数据库索引重装系统后如何导入模型素材数据库•上传者:传世太尉•44次播放•05:38•daz goz-zbrush 导入导出全身变形美人鱼 Full Body Morphs •上传者:传世太尉•117次播放•daz studio 4.10 dForce 转换现有服装衣服到动态布料工作流程中文视频教程•上传者:传世太尉•47次播放•14:36•daz studio 4.10 dforce 3d服装动态布料模拟参数详解•上传者:传世太尉•234次播放。
vs2005+ ogre 出现“应用程序正常初始化(0xc0150002)失败”

vs2005+ ogre 出现“应用程序正常初始化(0xc0150002)失败”的解决方法我用vs2005+ogre SDK里的例子编译运行,出现了“应用程序正常初始化(0xc0150002)失败”的错误,之后看了很多帖子解决了问题.如果vs2005,不是sp1的,要打sp1的补丁,vs2005中文版补丁是 VS80sp1-KB926604-X86-CHS.exe,400多M英文版要用另外一个 ,具体名字不记得。
然后打完补丁再装vcredist_x86.exe 这个比较小,就十几M。
如果上面的步骤都进行过了还不行,要再打个补丁/download/D/2/3/D23F9F62-3DEE-4EC0-B3B9-D64E9F573D1F/VS80sp1-KB971090-X86-INTL.exe注意,这个不是一般情况下说的sp1补丁,sp1是KB926601,400M左右,这个是KB971090,200M左右(1)打sp1的补丁下载地址1为:/download/6/3/c/63c69e5d-74c9-48ea-b905-30ac3831f288/VS80sp1-KB926601-X86-ENU.exe(英文版)下载地址2为:/download/8/0/7/8071514d-9370-45c3-8af1-4ff09a70e59d/VS80sp1-KB926604-X86-CHS.exe(中文版)大约为430M。
(2)装vcredist_x86.exe/soft/16405.html<注意双击vcredist_x86.exe,不要双击Setup.exe。
>(3)下载安装VS80sp1-KB971090-X86-INTL.exe/download/D/2/3/D23F9F62-3DEE-4EC 0-B3B9-D64E9F573D1F/VS80sp1-KB971090-X86-INTL.exe注意,这个不是一般情况下说的sp1补丁,sp1是KB926601,400M 左右,这个是KB971090,200M左右。
OgreODE基础入门教程

OgreODE基础入门教程OgreODE基础入门教程既然用了Ogre,那么一定是要有一个物理引擎的。
最后选择了ODE,因为ODE在持续更新,文档稍微要多一些。
但是中文文档基本没有,为了以后能快速阅读,只好自己先翻一下了。
这只是一个介绍性的文档,其中的代码并不能形成一个完整的可执行程序。
如果结合着OgreODE的Demo的代码看这篇文章,效果会很好的。
原文:/index.php/First_steps_with_OgreODE这是一个为OgreODE初学者所写的一个入门教程。
因为这里(OGRE wiki)没有OgreODE的详尽的文档,所以写了这个教程,希望能对初学者有所指引和帮助。
SimpleScenes是另一个学习的好地方,那里有7个带有实际代码的教程。
本教程的所有代码都是从那7个教程里节选的。
一、初始化OgreODE,创建一个最简单的物理世界在我们开始学习之前,你需要准备好:1.带有一个sceneManager、一个camera、一些basic light的可工作的Ogre程序2.OgreODE和ODE头文件3.一个带有material and texture 的 Ogre mesh,比如一个平面或者一条街道之类的(基础世界)4.一个盒装的带有material and texture 的 Ogre mesh(世界中的物体)如果你学习完了Ogre Tutorials,那么你能很轻松地做到这些。
在一个最好是你申明了Ogre::Root的头文件里,包含上OgreODE的头文件,并申明以下变量:#include "OgreOde\OgreOde_Core.h"OgreOde::World *mWorld;OgreOde::Space *mSpace;OgreOde::StepHandler *mStepper;OgreOde::World类似Ogre::Root,是OgreODE最顶层的对象。
sp3d基础操作中文教程

位置关联
• 连接点关联
- 强制一台设备的一个端口与另外一台设备的一个端口连在一起
- 绝对移动命令
精选课件
26
位置关联
• 最小距离关联 (E-W, N-S, Vertical)
- 在一个三维点与一个面之间关联
Surface
3D Point
精选课件
27
位置关联
• 平行关联
- 只旋转被选择的设备产生约束
46
长度控制工具
输入或选择一个长度值,它是当前路径长度 - Length Lock: Lock or unlock the length field. -By Default: 动态显示从上一个拐点或前一次直管段的连接点到当前 布置点的长度 -能够记忆前10次保存的长度值
精选课件
47
利用 PinPoint 命令布置管线
定义目标点 (即临时 0,0,0点)
[F12]
将当前使用的坐标系统的 原点设定为(0,0,0)点
打开或关闭 跟踪显示动 态坐标 [F9]
跟踪关联
指定当前 坐标系统
矩形坐标系 统或球形坐
标系统
精选课件
48
角度控制工具
输入或选择一个角度 - Angle Lock: 锁定或非锁定当前激活角 - By Default: 动态显示光标移动时所产生的虚线与前一次放置的管 段之间的夹角 - 当工作面设定为 NO Plane 时,当前激活角只能设定为0度或90度
• 设备与设备之间 • 外形与外形之间 • 设备部件与设备部件之间
精选课件
33
设备
外形体
• 点击一次即放置 • 激活参考放置步骤提示 • 放置时可用键盘上的箭头键旋转方向
精选课件
InsideORGE

1 / 18 OGRE 3D探索笔记
http://www.gplusplus.net
OGRE 3D探索笔记 By 燕良From: http://www.gplusplus.net 转载请注明出处。 注:以下文章整理自我的博客(2006年8月)。
目录 OGRE 3D探索笔记 ........................................................................................................................... 1 Ogre Basic Tutorial .................................................................................................................... 2 Ogre中Mesh的加载 ............................................................................................................... 3 Ogre中Mesh的渲染流程 ....................................................................................................... 4 Ogre的OctreeSceneManager .................................................................................................. 7 Ogre的TerrainSceneManager ................................................................................................. 8 Ogre的BspSceneManager ..................................................................................................... 10 概览 ................................................................................................................................. 10 Quake3 bsp的加载 ......................................................................................................... 11 Bsp tree scene的渲染 .................................................................................................... 13 Ogre的光照 ............................................................................................................................ 14 Ogre的骨骼动画 .................................................................................................................... 15
【免费下载】MA3D中文说明书

GrandMA 3D中文说明书内容1引言52系统要求3安装63.1奶奶办公桌或奶奶onPC版本3.2的IP 73.3连接奶奶办公桌3.4 1姥姥或奶奶2模式4数据94.1主/从94.2坐标系统5个快速启动6计划表面6.1菜单栏6.2工具栏6.3(第一阶段视图,三维对象视图)主要的Windows6.3.1第一阶段检视6.3.2鼠标+键盘操作6.3.3安排(对齐对象)的对象6.3.4复制(复制的三维物体)6.3.5三维对象6.4资产(信息窗)6.5属性6.6媒体数据库6.7材料6.8移动Pathes6.9会议6.10状态栏7灯具类型8三维建模和导入8.1三维模型8.2参数8.2.1轴8.2.2旋转轴8.2.3线性轴8.2.4束光.8.3自动导入8.4分配模型夹具类型8.5三维建模清单8.6创建一个三维模型9视频创建10常见问题11个键盘快捷键12指数马照明科技有限公司Dachdeckerstr。
16 D - 97297Waldbüttelbrunnwww.malighting.de1引言:奶奶3D是一个独特的新的用户界面,三维可视化创建利用与奶奶产品范围结合的阶段布局。
系列I和系列第二站的支持。
该软件被设计成一个灯光设计师的预编程工具。
它简化了创建显示,以节省时间和金钱的过程。
奶奶3D包括一个基本图形元素库。
使用多个窗口前/侧/顶视图可以在同一时间打开和更新。
所有的舞台元素被定位在X / Y / Z方向,也可能是周围的各种轴旋转。
习俗这些元素的表面纹理,可以导入位图格式,或可能选择从一个图书馆。
灯笼,灯具或移动灯的设置,可以简单地检索到的奶奶控制台或电子转帐的奶奶onPC每放映文件。
有没有需要设置的DMX 线,DMX地址或单个装置的操作模式,因为这些细节,都已经预先调整中的奶奶。
当切换到3D渲染模式,奶奶3D软件变得极其强大的可视化实时渲染设施。
所有绘图元素,装置及灯笼与表面纹理,作为一种虚拟现实。
Ogre中级教程7翻译版
Ogre中级教程7 翻译by CatD Table of contents目录••先决条件••创建场景••创建纹理••写出我们的纹理到文件••实现迷你场景••从头创建一个材质••使用一个渲染目标监听器••渲染到纹理和阴影••练习••简单••中级••困难••地狱(括弧笑)••总结••全部代码••下一节Introduction先决条件This tutorial covers the basics of rendering a scene to a texture. This technique is used for a variety of effects. It is particularly useful in combination with shaders. Motion blur effects can be created in this way.本教程涵盖了渲染纹理到一个场景,这个技术用于制作出各种效果,它在结合着色器时格外的有用,可以用这种方法创建动态模糊效果。
The basic idea is rather simple. Instead of just sending render information strictly to our render window, we will also send the information to be rendered directly to a texture in our scene. This texture will then be used like a texture loaded from the hard drive.基本的想法非常简单,咱在咱的场景里发送直接渲染的信息到纹理来代替咱发送严格的渲染信息,这种结构将用起来像是使用一个已经被硬盘加载的纹理。
本教程的完整代码链接。
注意:我们同时也准备了Baseapplication框架和Ogre1.7的资源链接。
NO.5.2_OGRE初级教程2
OGRE 初级教程 2 本章翻译由收费打工仔完成目录1 先决条件 2 简介 3 从这里开始 4 摄像机 4.1 Ogre 的摄像机 4.2 创建一个摄像机 5 视口 5.1 Ogre 的视口 5.2 建立视口 6 光照和阴影 6.1 Ogre 支持的阴影类型 6.2 在 Ogre 中使用阴影 6.3 故障排除 6.4 光源种类 6.5 建立光源 7 尝试要做的事情 7.1 不同的阴影类型 7.2 光源衰减 7.3 SceneManager::setAmbientLight 7.4 视口背景色 7.5 Camera::setFarClipDistance 7.6 平面 8 完整来源先决条件本教程假定你已经拥有了 c++程序设计的知识,并且已经安装和编译了一个 Ogre 的应用程序(如果你在设置你的应用程序中有困难,请参考 this guide获得更详细的编译步骤).这个教程同时也是建立在上一章基础上的,因此 默认你已经了解了上个教程的内容.简介在这篇教程里,我会向您介绍几个新的构架,同时还会补充一些过去的内容. 这篇教程主要介绍如何使用灯光对象以及如何产生阴影.我们还会稍微了解 一下摄像机的用法.当你看完这篇教程以后,你应该试着慢慢的添加一些代 码到你自己的工程里,然后看看结果.你可以参考这个教程里最终状态的源 代码.如果你在写代码时遇到了困难,也可以和最终工程里的源文件对比一 下.从这里开始像上一个教程一样,我们将使用一个先前建立的代码作为我们出发的起点. 我们将增加两个方法到 TutorialApplication class 中:createViewport 和 createCamera.这两个方法我们已经在基类 ExampleApplication 中定义了, 在这个教程中我们将看到摄像机和视口具体建立和使用. 为这个项目在编译器中创建一个工程,添加源文件包含这些代码:#include "ExampleApplication.h" class TutorialApplication : public ExampleApplication { protected: public: TutorialApplication() { } ~TutorialApplication(){ } protected: virtual void createCamera(void) { } virtual void createViewports(void) { } void createScene(void) { Entity *ent; Light *light; } }; #if OGRE_PLATFORM == PLATFORM_WIN32 || OGRE_PLATFORM == OGRE_PLATFORM_WIN32 #define WIN32_LEAN_AND_MEAN #include "windows.h" INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT ) #else int main(int argc, char **argv) #endif { // Create application object TutorialApplication app; try { app.go(); } catch( Exception& e ) { #if OGRE_PLATFORM == PLATFORM_WIN32 || OGRE_PLATFORM == OGRE_PLATFORM_WIN32 MessageBox( NULL, e.getFullDescription().c_str(), "An exception has occurred!", MB_OK | MB_ICONERROR | MB_TASKMODAL); #else fprintf(stderr, "An exception has occurred: %s\n", e.getFullDescription().c_str()); #endif }return 0; }如果你是在 Windows 下使用 OgreSDK 的,请确定添加 ""[OgreSDK_DIRECTORY]\samples\include"目录到这个工程 (ExampleApplication.h 文件所在的位置)除了标准包含以外.如果使用的是 Ogre 的源代码包,这个文件应该在 ""[OgreSource_DIRECTORY]\Samples\Common\include"目录中.请确保你 可以编译这段代码在进入下一阶段之前(我们并没有运行,因为他是会崩溃, 直到随后给他添加更多的东西).我们稍后将添加代码来完成这项工作.如 果你有问题,请查看这个 Wiki 页获得设置你编译器的信息,如果仍然有问题 请试着去看看帮助栏. 程序控制: 用键盘上 WASD 来移动,用鼠标观察四周.Ese 键退出.摄像机Ogre 的摄像机摄像机是用来观察我们所创建的场景的.摄像机是一个特殊的物体,她的工 作方式有点类似于场景节点.摄像机可以设置位置进行偏移,滚动,倾斜操 作和绑定到任意场景节点上.就像场景节点一样,摄像机的位置跟父节点有 关(就好像尊重长辈一样).对所有的移动和旋转来说,你可以把摄像机考 虑成场景节点.对于 Ogre 摄像机来说, 有一点跟你想象不一样的是同一个时间内你只能使用 一台摄像机(当前).这就是说,我们不能创建其中一个摄像机去观察场景 的一部分,而用第二个去观察场景的另一部分,并且仅通过打开或关闭某一 个摄像机就可以来呈现我们想要的一部分场景.不过要完成这一步有一个替 代方式就是通过一些创建场景节点来扮演"摄像机句柄". 这些场景节点简单的 参加到场景中指向摄像机可能要捕捉的位置.当只需要展示一部分场景时, 摄像机只需要简单的把自己绑定到适当的节点上就可以了.我们会在帧监听 教程里重温这项技术.创建一个摄像机我们将通过替换默认的 ExampleApplication 方法来创建摄像机. 找到 TutorialApplication::createCamera 方法.首先,我们将创建摄像机. 场景管理器里有自带的摄像机.我们就以此来创建我们的摄像机.添加下面 的代码到创建摄像机方法里:// 创建摄像机 mCamera = mSceneMgr->createCamera("PlayerCam");这将创建一个叫"PlayerCam"的摄像机. 如果你不打算保留它的指针, 那么你 可以调用场景管理器的方法 getCamera 通过传递它的名字来获取它. 接下来,我们继续设置摄像机的初始位置和朝向.我们将设置摄像机朝向坐 标原点,所以我们需要设置一个恰当的 Z 轴距离.添加下面的代码到刚才的 后面://设置摄像机位置和方向 mCamera->setPosition(Vector3(0,10,500)); mCamera->lookAt(Vector3(0,0,0));lookAt 方法是灵活的.你能够设置它面向任何你想要的角度.场景节点也有 同样的方法,能够通过此方法在任何情况下,很容易的达到你想要的方向. 最后,我设置一个 5 单位距离的近距离裁剪.通过设置摄像机的裁剪距离, 来规定该距离内的事物是你看不到的.设置近距离裁剪后,你能够在离实体 很近的时候,很容易的透过实体看到场景.还有一种很微小的情况就是,当 你和某个物体很近时,这个物体将填满你的整个视野.同样,你也可以设置 远距离裁剪.这个值的设置能够让引擎不去渲染远于它的物体.这主要在你 需要远距离渲染大场景的时候,用来增加帧速.添加如下代码,以实现近距 离裁剪:mCamera->setNearClipDistance(5);设置远距离裁剪和上面一样, 只是方法名是这个: setFarClipDistance. 当然, 在这个例子里,你没必要设置远距离裁剪.视口Ogre 的视口当你开始处理多个摄像机时,视口类的概念就变得对你很有用了.我提出这 个主题的原因是, 我认为了解当渲染一个场景时 Ogre 是如何决定使用哪个摄 像机的是非常重要的.在同一个时间内 Ogre 中可能有多个场景管理器在运 行.也有可能把场景分为多个区域,然后用分开的摄像机去渲染场景中不同的区域(例如:思考一下控制台游戏中两个人的观察).然而我们可能去做 这些事情的时候不用考虑他们是如何被做到的,这是高级教程的内容. 为了了解 Ogre 是怎样渲染场景的,考虑一下 Ogre 中建立的这些东西:摄像 机,场景管理器,和渲染窗口.渲染窗口我们还没有涉及到,但是她是所有 物体呈现的最基本的窗口.场景管理器实体创建摄像机去观察场景.你必须 告诉渲染窗口哪些摄像机去呈现场景,哪部分窗口被渲染进来.你告诉渲染 窗口的摄像机所呈现的区域就是视口,并且这里只有一个视口实体. 在这篇指南中我们将介绍怎样注册摄像机来创建视口.我们可以通过运用这 个视口实体来设置正在渲染的场景的背景色.建立视口我们将重点关注 ExampleApplication 里视口的建立,因此找到 TutorialApplication::createViewports 的成员函数.建立视口的方法通常是简 单的调用渲染窗口中 addViewport 函数,把她提供给正在使用的摄像机. ExampleApplication 类已经通过我们的渲染窗口移到 mWindow 类里面了, 因此添加这些代码:// Create one viewport, entire window Viewport* vp = mWindow->addViewport(mCamera);现在我们拥有自己的视口了,我们可以用他做什么呢?答案是:不多.最重 要的事情我们可以做的是调用 setBackgroundColour 方法给背景设置任意我 们选择的颜色.因为在这章中我们要处理光照因此我们把背景设置为黑色.vp->setBackgroundColour(ColourValue(0,0,0));注意颜色值分别是红绿蓝三种颜色的值他们的参数在 0 和 1 之间.最后也是 最重要的事情是我们需要设置摄像机的纵宽比.如果你用的是一些非标准全 窗口视口,而未能设置这个的话结果会出现一个非常奇怪的场景图.我们立 刻设置她尽管我们使用的是默认的纵宽比:// Alter the camera aspect ratio to match the viewport mCamera->setAspectRatio(Real(vp->getActualWidth()) / Real(vp->getActualHeight()));这就是所有的我们对视口的简单运用. 这时你应该首先去编译一下然后运行这个应用程序,尽管什么也呈现不了只 是黑的场景(用 Esc 来退出).确保你可以运行这个程序不会崩溃再继续.光照和阴影Ogre 支持的阴影类型Ogre currently supports three types of Shadows: Ogre 目前支持 3 种类型的 阴影(当前版本 1.4.x 目前已经支持四种阴影类型):1. 调制纹理阴影 (SHADOWTYPE_TEXTURE_MODULATI VE) - 是这 3 种中最节省资源的. 她创建一 个阴影投射者的黑与白渲染到纹理,然后 用于场景中.2. 调制模板阴影 (SHADOWTYPE_STENCIL_MODULATI VE) - 这项技术是在所有的非透明体被渲 染到场景以后再渲染所有的阴影体来调制 阴影,她耗费资源没有加成模板阴影强, 但是也不是非常精确. 3. 加成模板阴影 (SHADOWTYPE_STENCIL_ADDITIVE) 这项技术是渲染每一个光源作为分离的部 分附加到场景中. 对显卡来说这是比较麻 烦的,因为在场景中每一个附加的光源需 要一个附加渲染通路. Ogre 不支持软阴影作为引擎的一部分.如果你想用软阴影,你需要写你自己 的顶点和片段语言.注意这只是一个简单的介绍.Ogre 手册完整描述了阴影 以及他们的用法.在 Ogre 中使用阴影用阴影在 Ogre 中相对来说是比较简单的.SceneManager 类中有一个 setShadowTechnique 成员函数,我们可以使用她设置我们想要的阴影类型. 这样只要你创建了一个实体,调用 setCastShadows 方法来设置这个实体是 否投射阴影.我们现在将设置环境光全变暗,然后设置阴影类型.找到 TutorialApplication::createScene 成员函数添加如下代码:mSceneMgr->setAmbientLight(ColourValue(0, 0, 0)); mSceneMgr->setShadowTechnique(SHADOWTYPE_STENCIL_ADDITIVE);现在场景管理器运用的是加成模板阴影.让我们创建一个实体然后让他投射 阴影.ent = mSceneMgr->createEntity("Ninja", "ninja.mesh"); ent->setCastShadows(true); mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(e nt);另外,ninja.mesh 已经通过 ExampleApplication 为我们预载入了.我们还需 要一些东西来安放 Ninja(就是需要一些东西来接收她投射的阴影).为了做 到这个我们需要为此创建一个平面.这并不意味着我们需要用到 MeshManager 指南, 但是我将复习一些更基础的东西因为我们要用她来创建 一个平面.一开始我们需要定义平面实体本身,她需要提供一个法线和一个 到原点的距离.(举个例子)我们可以用平面来组织世界几何体的一部分, 在这种情况下我们需要指定一些东西与原点之间的距离不为 0. 现在我们仅 仅想要一个平面把 y 正半轴作为她的法线(这意味着我想让她面朝上),与 原点的距离为 0:Plane plane(Vector3::UNIT_Y, 0);现在我们需要注册这个平面以便于我们可以把她运用到我们的应用程序中. MeshManager 类了解所有读到我们应用程序中的模型 (例如: 她了解我们用到的 robot.mesh 和 ninja.mesh).createPlane 成员函数接收一个平面定义 通过参数制造的一个模型.这些是注册平面所用到的:MeshManager::getSingleton().createPlane("ground", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, plane, 1500,1500,20,20,true,1,5,5,Vector3::UNIT_Z);另外,我现在不想探究怎样用 MeshManager 的细节(如果你想准确的了解 每个参数的作用,请参考 API).基本上我们已经注册了我们的平面尺寸为 1500×1500,新模型名字叫"ground".现在,我们可以通过模型创建一个实 体把她放置到场景中:ent = mSceneMgr->createEntity("GroundEntity", "ground"); mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(e nt);漂亮吧?哈!对 ground 来说在结束之前我们还有两件事情要做.首先是告诉 场景管理器我们不想把她设置成投射阴影体直到她被用做阴影体.第二件事 是我们需要在上面贴纹理.我们的 robot 和 ninja 模型已经拥有了为他们定义 的材质脚本.当我们手动去创建 ground 模型的时候,我们不需要指定用什么 纹理.我们将用"Examples/Rockwall""Examples/Rockwall"材质脚本,Ogre 包含以下这个例子:ent->setMaterialName("Examples/Rockwall"); ent->setCastShadows(false);现在场景中我已经有一个 Ninja 和 ground,让我们来编译和运行这个程序. 我们等待...什么也没有!!发生什么事了?上一个指南中我们明明添加了 Robots 而且她也被呈现出来了.原因是 Ninja 没有露出来,因为场景中的环 境光设置的是全黑.因此让我们添加光源看看会发生什么.故障排除一些人报道在用 GCC 和 code::blocks 时他们的程序片段中遇到一些问题. 如果收到类似这样的错误:variable 'vtable for Ogre::MeshPtr' can't be auto-imported. Please read the documentation for ld's --enable-auto-import for details.You'll need to add the following to your linker options: 你需要添加如下的东 西添加到你连接器选项中:-Wl,--enable-runtime-pseudo-reloc如果用了 codeblocks::ide 点击 project name->build options->linker options, 在那设置一下.光源种类Ogre 提供了三种光源类型.1. 点光源 (LT_POINT) - 从一个点发出光放 射到四周.2. 聚光源 (LT_SPOTLIGHT) - 严格来说聚 光灯工作有点像手电筒. 你在某个地方设 置了灯光的起点,然后灯光射向一个方向. 你可以告诉光源内锥角度大小和外锥角度 大小(你知道手电筒内部会明亮一些.) 3. 有向光 (LT_DIRECTIONAL) - 有向光模 拟非常遥远地方的灯光,在场景中从某个 方向照射物体.如果你想要一个夜晚的场 景你就需要模拟月光.你可以通过为场景 设置环境光来做到这个,但是这并非是真 实场景的模拟因为月光并不平等地照亮所 有物体(日光也不是).一种方法解决这 个是设置一个有向的光源然后指向一个方 向,月光就会显示出来. 光源有一个范围属性描述光看上去的样子.两个更重要的属性是光的漫反射 颜色和镜面反射颜色(diffuse and specular color).每一个材质脚本定义有多 少漫反射和镜面反射光线由材质反射来,稍后我们将学习如果控制她.建立光源在 Ogre 中创建一个光源需要调用场景管理器中的 createLight 方法然后提供 光源的名称,就跟我们创建实体和摄像机一样,光源仅仅有两个方法 setPosition 和 setDirection(而且并不是像旋转,偏移,滚动一样有全套的移动函数).如果你需要移动光源(例如创建一个光源跟随角色),你需要把 光源绑定到场景节点上. 因此,让我们从基础的点光源开始吧.首先我们要创建光源设置她的类型和 她的位置:light = mSceneMgr->createLight("Light1"); light->setType(Light::LT_POINT); light->setPosition(Vector3(0, 150, 250));现在我们已经创建好了光源,我们可以设置她的漫射色和镜面色了.让我们 设置为红色:light->setDiffuseColour(1.0, 0.0, 0.0); light->setSpecularColour(1.0, 0.0, 0.0);好的现在编译和运行这个应用程序.成功了!我们现在可以看见 Ninja 和她 投射的影子了.确定你也可以从前面,侧面都可以看到她.有个要注意的事 是你看不见光源. 你看见产生的光事实上不是光照实体本身. 许多 Ogre 指南 里都添加了一个实体展示光是从哪发射出来的.如果你在应用程序中使用灯 光时遇到了困难, 你应该考虑创建这些东西这样你可以准确知道光源的位置. 接着让我们试试有向光. 注意为什么 ninja 前面有一些倾斜的黑色?让我们添 加一些黄色的有向光射向她的前面.设置光源和颜色的步骤和设置点光源是 一样的:light = mSceneMgr->createLight("Light3"); light->setType(Light::LT_DIRECTIONAL); light->setDiffuseColour(ColourValue(.25, .25, 0));light->setSpecularColour(ColourValue(.25, .25, 0));因为有向光是从无穷远的距离射来的,因此我们不需要设置她的位置,仅仅 是设置她的方向.我们设置光的方向是 z 正半轴和 y 负半轴(类似从 ninja 的 45 度角正前方射过来):light->setDirection(Vector3( 0, -1, 1 ));编译并运行这个应用程序.在场景中我们已经有两个影子了,因为有向光很 微弱,因此影子也比较弱.最后让我们来试试聚光灯.我们将创建一个蓝聚 光灯:light = mSceneMgr->createLight("Light2"); light->setType(Light::LT_SPOTLIGHT); light->setDiffuseColour(0, 0, 1.0); light->setSpecularColour(0, 0, 1.0);我们仍然需要设置位置和方向来确定聚光源.我们将创建一个聚光源盘旋在 Ninja 的右侧,然后直射下来:light->setDirection(-1, -1, 0); light->setPosition(Vector3(300, 300, 0));聚光源还允许我们指定光束的宽度.考虑一下手电筒的光束.中心的内光束 比周围光束明亮一些.我们可以设置这两种宽度通过调用 setSpotlightRange 方法.light->setSpotlightRange(Degree(35), Degree(50));编译运行她,紫色的 Ninja……好恐怖!尝试要做的事情不同的阴影类型这个 demo 里我们设置的阴影类型仅仅是 SHADOWTYPE_STENCIL_ADDITIVE(加成模板阴影).尝试设置成其他 两种阴影看看会发生什么.还有一些其他的与阴影相关的方法在场景管理器 类中.试试他们然后看看你能得到什么.光源衰减当离光源越来越远的时候,光源定义了一个 setAttenuation 方法允许你控制 定义光怎样渐弱.添加一个函数来调用点光源设置衰减为不同的值,看看会 怎样影响光?SceneManager::setAmbientLight实验一下这个方法 setAmbientLight,在 mSceneMgr 中.视口背景色在 createViewports 方法中改变默认的 ColourValue 值. 在这里改变颜色也许 并不是合适的,但是可以让你了解一下如何改变她.Camera::setFarClipDistance在 createCamera 中我们设置的摄像机距离很近.添加一个函数调用 setFarClipDistance,设置参数为 500,分别设置模板阴影开启和关闭并移动 摄像机来观察 Ninja.注意到速度变慢没? 注意:你需要设置 mSceneMgr->setShadowUseInfiniteFarPlane(false),否 则你将得到一些奇怪的影子(看看这里)平面在本指南中我们并没有涉及太多关于平面的内容(她不是本文的重点).在 后续章节中我们会重新提到她,但是现在你应该了解了解 createPlane 方法 试着去用用这些函数.完整来源如果有困难,可以看看源代码。
oFusion 材质制作教程
三.在NOVOKING中模型道具的oFusion材质运用我们的NOVOKING虚拟社区采用了开源的OGRE 3D实时渲染系统,而它所附属的oFusion材质的功能也非常强大。
在本章节中我们将针对NOVOKING社区中的道具或者模型,在使用oFusion材质时需要注意的地方以及会用到的参数和选项进行讨论。
而对于需要完整学习oFusion 材质所有参数和设置的用户,我们建议您查找或者购买专门的书籍或者资料进行学习。
就像开篇中谈到的一样,我们在这里仅涉及到与NOVOKING社区中模型制作和上传相关的部分。
1.1oFusion预览视窗设置仅更新被选择对象的材质效果oFusion视窗设置(将打开视窗设置面板)oFusion场景设置(将打开场景设置面板)oFusion对象设置(将打开对象属性设置面板)从oFusion视窗中清除目前的场景内容更新材质编辑器中当前被选择的材质批处理更新材质编辑器中当前被选择的材质导出当前场景(将打开场景导出窗口)在3ds max 主菜单中的oFusion菜单oFusion视窗设置oFusion预览视图中键盘按键的移动速度设置oFusion预览视图中鼠标移动的速度设置当编辑模型网格时oFusion视窗自动更新以反映结果在oFusion预览视图的过程中,自动更新视窗内容oFusion预览视窗中的背景色彩设置oFusion实时渲染系统所采用的图形引擎选择菜单在oFusion视图中打开/关闭灯光位置的显示(建议关闭这个钩选框)把当前的设置做为缺省设置进行存储载入缺省设置重新存储设置oFusion场景设置oFusion预览视窗中的背景色彩设置oFusion预览视图中所有模型环境光设置修改为亮度值():Value232提示对于oFusion菜单中其它位置的参数不需要修改,请保持默认设置即可。
1.2 oFusion 基础材质设置Dist 0材质通道中的子材质而言,只能为它指定oFusion Techniqe 材质,指定其出的模型将不能正确显示它的材质的特殊i/Sub-Object Material )的情况,请按照下面插图材质嵌结构进行处理:提示oFusion 材质本身为模型提供了根据观察距离显示不同材质的能力,但是在我们NG 社区中不用考虑模型的距离远近oFusion 材质时,程序自oFusion 不同而切换NOVOKI 问题,因此我们会固定使用Dist 0位置的材质通道。
CEGUI中文教程
CEGUI从入门到精通开发必备知识一:1.你的第一个CEGUI程序2.强烈建议仔细研究CEGUISample程序!因为那里介绍了它的一些基本用法,其实最后在游戏当中出现的,也就是这些例子的变化而已。
3.这里我会引导你写一个第一个自己的简单的CEGUI程序,它使用CEGUISampleHelper提供的框架,使用OpenGL渲染。
4.这是在CEGUI自己给的Sample程序基础上简化、简化、再简化得出的,目的是让大家对CEGUI程序有一个简单明了的认识,其实就是这么简单。
里面只定义了一个背景,一个静态文本,写着“Hello!CEGUI”。
5.具体的,有几块重要的东西。
有一些包含在框架里了,如下:6.DefaultResourceProvider,这个是CEGUI的一个全局的东西,可以在任何地方操作它的指针,但是一般只需要在一开始操作它。
7.在CEGuiOpenGLBaseApplication当中,你可以看见下面这样的代码,这就是在使用DefaultResourceProvider的指针在设置资源的路径,你可以毫不客气地复制粘贴到你的工程里8.CEGUI::DefaultResourceProvider* rp =static_cast<CEGUI::DefaultResourceProvider*>9.(CEGUI::System::getSingleton().getResourceProvider());10.11.rp->setResourceGroupDirectory("schemes","../datafiles/schemes/");12.rp->setResourceGroupDirectory("imagesets","../datafiles/imagesets/");13.rp->setResourceGroupDirectory("fonts","../datafiles/fonts/");14.rp->setResourceGroupDirectory("layouts","../datafiles/layouts/");15.rp->setResourceGroupDirectory("looknfeels","../datafiles/looknfeel/");16.rp->setResourceGroupDirectory("lua_scripts","../datafiles/lua_scripts/");17.下面是整个的代码:18.#ifndef _TDemo0_h_19.#define _TDemo0_h_20.21.#include "CEGuiSample.h"22.#include "CEGUI.h"23.24.// 例子类25.class TDemo0Sample : public CEGuiSample26....{27.public:28.// 用于实现初始化的方法29.bool initialiseSample();30.31.// 关闭32.void cleanupSample(void);33.};34.#endif //_TDemo0_h_35.36.37.38.39.40.#include "TDemo0.h"41.#include "CEGUI.h"42.#include "CEGuiBaseApplication.h"43.#include <cstdlib>44.45./**//*************************************************************************46.程序入口47.*************************************************************************/48.int main(int argc, char *argv[])49....{50.TDemo0Sample app;51.return app.run();52.}53.54./**//*************************************************************************55.实现初始化方法56.*************************************************************************/57.bool TDemo0Sample::initialiseSample()58....{ing namespace CEGUI;60.61.// 得到窗口管理器62.WindowManager& winMgr =WindowManager::getSingleton();63.// 装载资源,只说一下scheme就行,其它的system自己去调64.SchemeManager::getSingleton().loadScheme("TaharezLook.scheme");65.// 鼠标指针很特殊,但是其实是一样的用法66.System::getSingleton().setDefaultMouseCursor("TaharezLook", "MouseArrow");67.// 字体68.FontManager::getSingleton().createFont("Commonwealth-10.font");69.70.// 这里创建了一个window。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文档:教程:中级教程:中级教程八From OGRE 3D 中文示例框架揭秘初学者教程0:场景背后的秘密——示例框架揭秘
目录1 介绍 ■2 示例框架 ■3 示例程序 ■3.1 基础骨架 ■3.2 一步接一步 ■3.3 让我们开始! ■3.4 初始化 ■3.5 添加资源定位 ■3.6 初始化Ogre核心 ■3.7 创建场景管理器 ■3.8 创建摄影机镜头 ■3.9 创建视口 ■3.10 创建资源监听器 ■3.11 初始化资源 ■3.12 创建场景 ■3.13 销毁场景 ■4 添加帧监听器 ■4.1 什么是帧监听器 ■4.2 它的工作方式 ■4.3 增加代码 ■5 增加Ogre基本输入 ■6 移动摄影机镜头 ■6.1 移动摄影机镜头 ■6.2 OgreApplication additions ■6.3 帧开始函数 ■6.4 修改createFrameListener ■6.5 处理非缓冲输入更新 ■7 其它各种改进 ■8 最终代码 ■8.1 OgreApplication.h ■8.2 OgreApplication.cpp ■9 示例用法 ■9.1 MyApplication.h ■9.2 MyApplication.cpp ■
介绍如果你看看Ogre演示程序的代码,并读读Wiki教程,你可能注意到了ExampleApplication和ExampleFramelistener的使用。你可能会奇怪:示例框架在场景后面都做了写什么事情呢?对于Ogre编程来说,可以肯定的是要比
ExampleApp theApp; theApp.go();
Page 1 of 15文档:教程:中级教程:中级教程八 - OGRE 3D 中文2012-2-26mhtml:file://D:\Ogre中级教程\中级教程八 - OGRE 3D 中文.mht这点儿代码多得多,并且重载了createScene()函数。本教程将准确描述示例框架的工作方式。我们将通过框架实现我们的工作——并以包含所有示例框架代码的可以替代的Ogre应用程序类结束。注意:如果那你特别特别想拷贝粘贴代码,请选择正确的代码——在最最后的代码:-) 我们将逐步完成我们的工作,向“OgreStein类”中增加代码。注意2:如果你要使用Mac OS X,[这里有一些MacOSX命令行编译的提示 http://www.ogre3d.org/wiki/index.php/MacOsXCommandLineCompiling],可供参考。注意3:如果由于对OIS的改变而使你在Eihort(Ogre 1.4.X)下编译这个框架遇到任何麻烦,论坛上的[这个帖子 http://www.ogre3d.org/phpBB2/viewtopic.php?t=31659]可能会有所帮助。
示例框架
示例框架包括两个类:ExampleApplication(在ExampleApplication.h中)和ExampleFramelistener(在ExampleFramelistener.h中)。它们都位于Samples/Include目录下,用于Ogre演示程序之中。事实上,此框架被设计用来快速编写演示程序,不是一个大型设计项目。可能无法满足你想要的更大更严谨的设置使用要求。但是,它节省了大量的时间。而且它可以让你非常快地做一些Ogre测试。一个使用示例框架的应用程序以一个派生于ExampleApplication的类开始。
class GroovieDemo : public ExampleApplication { // details ... };
即意味着,所有ExampleApplication能做的事,GroovieDemo也都能做。 GroovieDemo需要定义ExampleApplication::createScene()函数,因为它是一个纯虚函数,所以GroovieDemo变成:
class GroovieDemo : public ExampleApplication { virtual void createScene() { // details ... } };
然后,你只要创建GroovieDemo实例,调用它的go()函数就行了。这样你就得到了最基本的Ogre演示程序。但是...ExampleApplication实际做了什么呢?
示例程序
这就是所发生的事: go() setup() new Ogre::Root setupResources() // parses resources.cfg configure() // shows the Ogre config dialog which configures the render system. // constructs a render window. chooseSceneManager(); // the scenemanager decides what to render createCamera(); // we need a camera to render from createViewports(); // a viewport to render to createResourceListener(); // Create any resource listeners (for loading screens) loadResources(); // Now we can load the resources: all systems are on-line. createScene(); // Now that the system is up and running: create a scene to render. mRoot->startRendering(); // Kick off Ogre
Page 2 of 15文档:教程:中级教程:中级教程八 - OGRE 3D 中文2012-2-26mhtml:file://D:\Ogre中级教程\中级教程八 - OGRE 3D 中文.mht就像你看到的,它先创建一个Ogre::Root实例。然后解析resources.cfg,显示配置对话框,装载渲染系统,构造渲染窗口,选择场景管理器,创建摄影机镜头和视口,装载资源并开始渲染。
基础骨架创建一个文件,取名OgreApplication.h并粘贴如下代码: #ifndef __OgreApplication_h__ #define __OgreApplication_h__
#include using namespace Ogre; class OgreApplication { public: OgreApplication(); virtual ~OgreApplication();
virtual void go(); protected: virtual bool initialise(); virtual bool initOgreCore();
virtual void createSceneManager(); virtual void createCamera(); virtual void createViewports(); virtual void createResourceListener();
virtual void addResourceLocations(); virtual void initResources();
virtual void createScene() = 0; // I am pure virtual, override me! virtual void destroyScene();
Root *mRoot; Camera* mCamera; SceneManager* mSceneMgr; RenderWindow* mWindow; };
#endif // __OgreApplication_h__
你会注意到一件事,就是某些函数命名不同于示例框架。那是因为新函数名更准确反映函数的功能。好了。这就是我们的OgreApplication所需要的东西,所以让我们开始吧!
一步接一步好了。让我们创建一个新文件,取名为OgreApplication.cpp,并粘贴如下代码: #include "OgreApplication.h" //------------------------------------------------------------------------------------- OgreApplication::OgreApplication() : mRoot(0) { }
//------------------------------------------------------------------------------------- OgreApplication::~OgreApplication() { delete mRoot; }
如你所见,mRoot在构造函数中被赋为空值,并在析构函数中被删除。接下来,我们将向此文件增加代码。
Page 3 of 15文档:教程:中级教程:中级教程八 - OGRE 3D 中文2012-2-26mhtml:file://D:\Ogre中级教程\中级教程八 - OGRE 3D 中文.mht