OGRE(一)

1.加载一个模型

Ogre::Entity* ent = mSceneMgr->createEntity("MyEntity","Sinbad.mesh");
mSceneMgr->getRootSceneNode()->attachObject(ent);

ent:指向一个实例的指针.

mSceneMrg:指向一个场景管理器.

"MyEntity":为自己的实例取个名称.

"Sinbad.mesh":导入mesh文件的名称.

getRootSceneNode():获取场景根节点.

attachObject(ent):把ent(指针)实例加入到根节点.


2.创建场景节点

Ogre::SceneNode* node = mSceneMgr->createSceneNode("Node1");
mSceneMgr->getRootSceneNode()->addChild(node);
node->attachObject(ent);

node:指向一个场景节点的指针.

createSceneNode("Node1"):初始化一个场景节点,名字为Node1.

addChild(node):把node加入到场景根节点,作为它的一个子节点.


3.设置场景结点的位置

node->setPosition(10,0,0);
setPosition(10,0,0):把node节点设在父空间坐标系(10,0,0)上.

node2->pitch(Ogre::Radian(Ogre::Math::HALF_PI));
pitch:绕着X轴进行旋转.

Radian:表示括号后的是弧度.

node3->translate(20,0,0);
node3->yaw(Ogre::Degree(90.0f));
node4->roll(Ogre::Radian(Ogre::Math::HALF_PI));

translate:表示场景节点node3相对于父节点空间的当前位置移动(20,0,0).但是如果加上参数Ogre::Node::TS_WORLD,则代表在世界坐标移动一段距离.

注意:空间分为世界空间,父空间和局部空间.

yaw:表示绕着Y轴逆时针旋转.

Ogre::Degree:表示要旋转的角度,而不是弧度.

roll:表示绕着Z轴旋转.

4.缩放场景节点

node2->scale(2.0f,2.0f,2.0f);
node2->setScale(2.0f,2.0f,2.0f);
scale:对场景节点进行缩放.
setScale:setScale与scale的关系相当于setPosition和translate的关系.
注意:从严格意义上说,场景结点是不能缩放的,它只保存着不被渲染元数据.更严格的说每个渲染的对象将会代替原有结点造成缩放.
Ogre::SceneNode* node3 = node->createChildSceneNode("node3",Ogre::Vector3(20,0,0));
createChildSceneNode:创建了node的一个子节点,第一个参数是子节点的名称,第二个参数是node3节点出现在世界坐标系的位置.
以上代码相当于:

Ogre::SceneNode* node3 = mSceneMgr->createSceneNode("node3");
node->addChild(node3);
node3->setPosition(20,0,0);
注意:一个父结点的变换将会传递给它所有的子结点.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值