关于OGRE四元数和旋转的一些浅显认识`

本文介绍了OGRE引擎中四元数用于旋转的理解和实践经验,包括四元数的基本转换、旋转方向的调整、叠加旋转偏移、以及从角度轴到四元数和四元数到角度轴的转换。通过实例讲解了如何使对象按照特定方向旋转,并讨论了平滑旋转的重要性。
摘要由CSDN通过智能技术生成

对于OGRE四元数原理的理解,其实我也并非很清楚,但在我的使用过程中,

我逐渐的认知到了其实际是对于一种空间偏移,可以是绕轴旋转theta的偏移,

也可以理解为对w, x, y, z一种相对抽象表示的偏移。

(在OGRE中默认的相对轴好像是OGRE::Vector3::NEGATIVE_UNIT_Z吧...)

如果我的理解有误,也可以请各位大侠斗胆指出,小生不吝求教,

或许我也该找个时间好好看看《计算机图形学》了,毕竟知道原理才是根本呀!!


好了,多余的话也不说了,下面我写出一些在实践过程中使用OGRE四元数的经验,

也好让那些同样使用OGRE图形引擎的童鞋门有个好的参考:


1.OGRE中四元数中轴axis,弧度角rad和四元数quat的基本转换

(这里只是指出基本的转换原理,没有具体的代码实践, 不要骂我变量没有初始化=。=)


(       Ogre::Quaternion quat;

        Ogre::Vector3 axis;

        Ogre::Radian rad;         //类型表示 )

quat.w = cos (rad / 2) ;

quat.x = axis.x * sin (rad / 2) ;

quat.y = axis.y * sin (rad / 2) ;

quat.z = axis.z * sin (rad / 2);



2.已知源模型的朝向,要使其向着世界空间特定方向的旋转。

(这里我以一个雷龙AI的对象为例举例说明,

m_DragonNode表示雷龙AI被添加到的场景节点,m_Direction表示域使其面向的方向,

这个向量是通过m_DragonNode与攻击对象的场景节点位置作差计算出来的)

  //设置雷龙AI的朝向(其默认局部空间的X轴为其正向朝向)
  Ogre::Vector3 src = m_DragonNode->getOrientation()* Ogre::Vector3::UNIT_X;


  //雷龙AI的X轴到目标方向的旋转
  Ogre::Quaternion quat = src.getRotationTo(m_Direcion);
  m_DragonNode->rotate(quat, Ogre::Node::TS_WORLD);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值