关于游戏中摄像机的方向,人物的行走的一些理解

         游戏中的玩家无论是通过鼠标控制人的移动也好,还是通过键盘来控制人的移动也好,都要涉及到方向,有了方向自然就会涉及到旋转。而四元数是控制旋转的一个不错的选择。但是关于四元数的理解很让人费解,至今我还是不能完全能够理解好。不过通过实践还算是总结出了了一些关于四元数的使用经验。我直接通过几个例子来讲解我对四元数的理解。

          Quaternion quaTest( Radian(Degree(Real(90)).valueRadians()),Vector3::UNIT_Y );
          Vector3 xAxis,yAxis,zAxis;
          quaTest.ToAxes(xAxis,yAxis,zAxis);

       这个例子很简单,首先我构造了一个围绕y轴旋转了90度的四元数。下面就是调用ToAxis函数,这个函数在ogre文档中的解释是转化到用三个vector3表示的矩阵。关于矩阵我表示我不是很理解。但是作为一个程序员我觉得没必要了解的太清楚(个人观点)。这里通过ToAxis函数得到的xAxis,yAxis,zAxis表示的是方向,而且都是单位化了的。接下来可能就是大家的容易在理解上进入误区的地方。得到的zAxis是什么东西?表示的哪个方向?你的结果是什么?先自己想想在往下看!

         为了帮助大家理解,也为了我能够说清楚,我决定再举例说明。

         假设在世界坐标系的中心我设置了一个摄像机,该摄像机的局部坐标系与世界坐标系完全的重合。此时如果我对该摄像机setOrientation(quaTest ),quaTest就是上面例子中的值。那么现在的摄像机应该是围绕y轴旋转了90度(摄像机的局部坐标系也就围绕y轴旋转了90度),此时摄像机的局部坐标的z轴与世界坐标系的x轴完全重合,而我们通过ToAxis函数得到的zAxis的值就是摄像机局部坐标系的z轴相对于世界坐标系的坐标值。我是按照右手坐标系来进行描述的。所以得到的zAxis值为(1,0,0),有的可能得到的有点误差,不过不影响。我想这样大家就能够很好的理解了吧。。。。

         这篇帖子未完待续。。。。现在继续工作,有空接着写,如果还是不能明白我所说的,请加qq:237095598.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值