Ogre空间变换,setPosition(),setDerivedPosition()和translate()的正确使用。

在Ogre里,节点的位置移动可以使用Node::setPosition(p)和Node::translate(p1,p2)来个空间变换函数,其中设置位置函数setPosition() 只有一个参数—一个三维坐标点,它是相对

要移动节点的父节点而言的。
相对父节点位置偏移的例子(以父节点的位置为坐标原点):
ParentNode   WorldPosition(0,10,0)
ChildNode      setPosition(0,10,-10)—>WorldPosition(0,20,-10)
然而setDeriverdPosition()是设置该节点的世界绝对坐标的,
相对世界坐标原点位置偏移的例子(设定在世界坐标的位置):
ParentNode   WorldPosition(0,10,0)
ChildNode      setDeriverdPosition(0,10,-10)—>WorldPosition(0,10,-10)与其他任何节点都没有关系!
 
最后说说 tanslate(p1,p2),它是相对父节点移动的,两个参数,其中一个是移动量(三维向量),另一个是参考空间TransfromSpace,这个参考空间是决定移动方向的。其中有世界空间,父空间,本地空间。 最终决定移动方向的是这三个参考空间的当前朝向
 
在实现第一人称控制角色中,选用的参考空间便是本地空间,因为角色是会跟随鼠标的移动而切换朝向的,即节点的本地坐标空间总是
在变化的,要想让角色朝着自己的“前后左右”移动,就需要用自身的坐标空间来确定移动方向了。

转载于:https://www.cnblogs.com/zhuofanxu/archive/2013/05/25/3099262.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值