在网上看到好多资料,不过老版本的太多了,自己记录一些东西吧
1. setAmbientLight()。
首先需要为整个场景设置环境光,这样才可以看到要显示的内容,通过调用setAmbientLight函数并指定环境光的颜色就可以做到这些。指定的颜色由红、绿、蓝三种颜色组成,且每种色数值范围在 0 到 1 之间(我开始不知道,直接写个256上去,可运行,颜色奇怪)。
mSceneMgr->setAmbientLight(ColourValue(1,1,1));
注释: void Ogre::Materail::setAmbient(Real red, Real green, Real blue) 为每一个Technique中的每一个Pass设置环境光反射系数。
注意: 此属性已被转移到Pass类,它是通过Technology访问。为简单起见,此方法允许您为每个当前技术设置这些属性,并且每一个Pass包含在这些Technology中。如果您需要更精确的信息,检索Technology和Pass的情况,并设置其属性
另外还有: Pass::setAmbient
2.创建场景节点:
Ogre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
整个场景由节点层次结构维持,它允许这样像相对变换,在渲染状态一般变动等(参见SceneNode获取更多的信息)事情的发生。在这个基本场景管理器类,应用程序使用Ogre是自用的使用这种层次结构无论他是什么样子,因为除了相对于每个节点相对变换,它还没有什么真实的意义(更具体的子类将构造专门的节点结构提供一些功能方法,例如加载节点BSP树)。
3. 创建实体(Entity):
Ogre::Entity* ogreHead = mSceneMgr->createEntity("Head", "ogrehead.mesh");
参数:
entityName 创建实体的名字(必需唯一) meshName 网格(mesh)的名字(比如:‘knot.oof’),该网格会被加载如果它是第一次加载的话。
注:网上有很多写的 Entity* ogreHead 编译不过,因为1.8必须加命名空间Ogre::Entity* ogreHead
这个实体可以通过
headNode->attachObject(ogreHead);
绑定到节点上,然后我突发奇想同一个实体绑定两次会怎样。编译通过,运RE,我想这是必然的。
那么你还可以多加点实体
Ogre::Entity* ogreHead = mSceneMgr->createEntity("Head", "ogrehead.mesh");
Ogre::Entity *ent = mSceneMgr->createEntity("Robot","robot.mesh");
Ogre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
headNode->attachObject(ogreHead);
headNode->attachObject(ent);
就会产生这种恶心的图像(我指的是重叠了)
4.移动节点
headNode->translate(25,0,0);
沿着笛卡尔坐标轴移动节点 这种方法通过沿着笛卡尔坐标轴(也就是世界坐标系下的x,y,z)的固定向量来移动节点 参数: d 向量x,y,z的值代表着移动距离
5.缩放网格
headNode->scale(0.5,1,2);
根据给定的向量缩放AABB。
试了才知道,产生了更恶心的图像
PS.我找了本《Ogre_3d_1.7_beginner_Guide》中文版,看这正规点的会不会比网上资料坑。。。。