声明:
1)请转载的博主注明出处。
2)此笔记是本人在自习学习Ogre教程的过程中的笔记 在原教程第一个函数出现的时候,我都会引用OGRE API Reference做出相应的解释,在这里感谢免费打工仔还有该教程的翻译者付出的辛勤劳动。 Ogre教程详见http://www.ogre3d.cn 以后我几乎每天都会更新的,嘿嘿。。。
基础教程一
1. setAmbientLight()。
首先需要为整个场景设置环境光,这样才可以看到要显示的内容,通过调用setAmbientLight函数并指定环境光的颜色就可以做到这些。指定的颜色由红、绿、蓝三种颜色组成,且每种色数值范围在 0 到 1 之间。
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. 创建实体(Entity):
Entity *ent = mSceneMgr->createEntity(“Robot”,”robot.mesh”);
注: Virtual Entity* Ogre::SceneManager::createEntity(const String & entityName, const String & meshName) [virtual] 创建一个实体
参数: entityName 创建实体的名字(必需唯一) meshName 网格(mesh)的名字(比如:‘knot.oof’),该网格会被加载如果它是第一次加载的话。
3 创建场景节点:
SceneNode *node1= mSceneMgr->getRootSceneNode()->createChildSceneNode(“RotbotNode”);
注意: 3.1 virtual SceneNode* Ogre::SceneManager::getRootSceneNode(void) [virtual] 在场景层次跟节点处获得SceneNode
注意: 整个场景由节点层次结构维持,它允许这样像相对变换,在渲染状态一般变动等(参见SceneNode获取更多的信息)事情的发生。在这个基本场景管理器类,应用程序使用Ogre是自用的使用这种层次结构无论他是什么样子,因为除了相对于每个节点相对变换,它还没有什么真实的意义(更具体的子类将构造专门的节点结构提供一些功能方法,例如加载节点BSP树)。
3.2 Virtual SceneNode* Ogre::SceneNode::createChildSceneNode( const Vector3 & translate = Vector3::ZERO, const Quaternion & rotate = Quaternion::IDENTITY ) [virtual]
创建一个无名的新的SceneNode作为这个节点的孩子节点
参数: translate 最初孩子节点相对于父节点的平移偏移量 rotate 相对于父节点的初始化旋转
4 把实体绑定到已存在的节点上
Node1->attachObject(ent1);
Virtual void Ogre::SceneNode::attachObject(MovableObject* obj)[virtual]
添加一个场景对象的实例到这个节点上
评论: 场景对象可以包括实体对象,摄像机对象,灯光对象,粒子系统对象等,每一个可移动对象的子类都可以的。
5 移动节点:
Node1->translate(Vector3(25,0,0));
virtual void Ogre::Node::translate( Const Vector3 & d, TransformSpace relativeTo = TS_PARENT ) [virtual] 沿着笛卡尔坐标轴移动节点 这种方法通过沿着笛卡尔坐标轴(也就是世界坐标系下的x,y,z)的固定向量来移动节点
参数: d 向量x,y,z的值代表着移动距离 relativeTo 移动相关的空间 另外还有函数: virtual void Ogre::Node::translate( Real x, Real y, Real z, TransformSpace relativeTo = TS_PARENT ) [virtual]
6缩放网格: node->scale(0.5,1,2);
void Ogre::AxisAlignedBox::scale(const Vector3 & s)
根据给定的向量缩放AABB 在OgreAxisAlignedBox.h文件的645行处定义这个函数
7对象旋转 node->pitch(Degree(-90));//yaw,roll virtual void Ogre::Node::pitch( const Radian & angle, TransformSpace relativeTo = TS_LOCAL ) [virtual]
围绕X轴旋转节点
OGRE-旺
记于2009-11-28夜