DX函数RotationYawPitchRoll说明是绕着导入模型本身的3个轴旋转,但调用的时候不指明是哪个模型,这样的话如果我导入a.x, b.x, c.x,我想让b绕着自己的某个轴转怎么实现呢?仅仅是RotationYawPitchRoll(x, y, z)表明绕哪个轴转?难道有a->RotationYawPitchRoll(x, y, z)么(a是LPD3DXMESH的一个成员)吗?

解决方案 »

  1.   

    RotationYawPitchRoll用来计算一个旋转矩阵,用来对点P(a.x, b.x, c.x)坐标进行变换,坐标轴就是P点所在坐标系下的轴(本地坐标),变换后的坐标是新坐标系下的坐标(如:世界坐标)
      

  2.   

    那假设我现在想让模型a绕自己x轴转,b绕自己的y轴转,如何实现?
      

  3.   

    对a,RatationX()计算旋转矩阵,乘平移矩阵得世界变换矩阵
    再用setTransform()来设b的类似
      

  4.   

    3D ROTATE算法有好多帖呢.你search一下,就能找到代码.
      

  5.   

    谢谢,这个我明白了。
    再请教一下,如果我想在想让模型a绕自己的x轴转,同时b也绕a的x轴转怎么实现?
    如果用RotationYawPitchRoll(matrix,angle,0,0),输出的矩阵貌似就是b绕自己的x轴,而不是所要求的。
      

  6.   

    m1 // rotate x
    setTransform(m1)
    a->draw()
    m2 // rotate y
    setTransform(m2)
    b->draw()