旋转对象以从 3D 中的各个角度查看它
Rotate an object to view it from every angle in 3D
我正在使用 DirectX,相机和其他东西的设置已经存在。相机正在注视一个我想要旋转的物体,以便从各个角度都可以看到它。
渲染对象时,通过将旋转矩阵与平移矩阵相乘来创建一个矩阵。我现在拥有的旋转矩阵是使用 XMMatrixRotationRollPitchYaw(x,y,z) 创建的。
有没有办法设置 x,y,z 以便我可以完成此操作?
理论上你可以做三个嵌套的 for
循环 运行ning 从 0 度到 180 度,每个偏航,俯仰和滚动(因为 XMMatrixRotationRollPitchYaw
需要弧度和不是度数,所以实际上 运行 从 0 到 XM_PI 弧度)。
Note, however, you may run into gimbal lock problems using Euler angles, which is why quaternions are often used for camera rotation controls.
当然,这是假设您希望从每个单度角度查看对象。如果你只想确保对象的每个部分都可见,你可以用更大的增量来做到这一点,比如 45 度(XM_PI / 4.f 弧度)。
你最终会得到一些重复,因为你可以组合不同的欧拉角来产生相同的 3D 旋转。
我正在使用 DirectX,相机和其他东西的设置已经存在。相机正在注视一个我想要旋转的物体,以便从各个角度都可以看到它。
渲染对象时,通过将旋转矩阵与平移矩阵相乘来创建一个矩阵。我现在拥有的旋转矩阵是使用 XMMatrixRotationRollPitchYaw(x,y,z) 创建的。
有没有办法设置 x,y,z 以便我可以完成此操作?
理论上你可以做三个嵌套的 for
循环 运行ning 从 0 度到 180 度,每个偏航,俯仰和滚动(因为 XMMatrixRotationRollPitchYaw
需要弧度和不是度数,所以实际上 运行 从 0 到 XM_PI 弧度)。
Note, however, you may run into gimbal lock problems using Euler angles, which is why quaternions are often used for camera rotation controls.
当然,这是假设您希望从每个单度角度查看对象。如果你只想确保对象的每个部分都可见,你可以用更大的增量来做到这一点,比如 45 度(XM_PI / 4.f 弧度)。
你最终会得到一些重复,因为你可以组合不同的欧拉角来产生相同的 3D 旋转。