我用四元数表示世界旋转。我需要将这个世界旋转转换为局部旋转。
我有一个用四元数表示的世界旋转:
val rotationQuaternion: Quaternion = scene.camera.worldRotation
这种旋转看起来像这样:
localRotation = rotationQuaternion
但是它会影响其他多个世界和局部转换,因此我需要将此旋转转换为局部旋转。
使用方法worldToLocalDirection在我看来是正确的,因此我需要从rotationQuaternion中提取方向(我相信是这样的):
val direction = Quaternion.rotateVector(rotationQuaternion, Vector3.forward())
然后我得到了一个本地空间方向:
val vectorInLocalSpace: Vector3 = worldToLocalDirection(direction)
我必须返回四元数:
worldRotation = Quaternion.lookRotation(Vector3.forward(), vectorInLocalSpace)
val rotationQuaternion: Quaternion = scene.camera.worldRotation
val direction = Quaternion.rotateVector(rotationQuaternion, Vector3.forward())
val vectorInLocalSpace: Vector3 = worldToLocalDirection(direction)
worldRotation = Quaternion.lookRotation(Vector3.forward(), vectorInLocalSpace)
我阅读了多篇文章,并应用了总结的步骤。虽然,整个事情看起来完全不正确。