我正在使用DirectX,摄像头和设备的设置已经存在。相机正在查看我想要旋转的物体,以便从各个角度进行查看。
渲染对象时,通过将旋转和平移矩阵相乘来创建矩阵。我现在使用XMMatrixRotationRollPitchYaw(x,y,z)创建旋转矩阵。
有没有办法设置x,y,z以便我可以完成这个?
答案 0 :(得分:0)
从理论上讲,你可以为偏航,俯仰和滚转中的每一个做0到180度的三个嵌套for
循环(因为XMMatrixRotationRollPitchYaw
需要弧度而不是度数所以从0开始实际运行到XM_PI弧度)。
但请注意,使用欧拉角可能会遇到gimbal lock问题,这就是四元数通常用于相机旋转控制的原因。
当然,这假设您希望从每个单度角度看到对象。如果你只想确保对象的每个部分都是可见的,你可以用更大的45度增量(XM_PI / 4.f弧度)来做到这一点。
你最终会得到一些重复,因为你可以组合不同的欧拉角来产生相同的3D旋转。