unity计算相对于主摄像机的四元数

时间:2019-07-22 21:16:27

标签: c# unity3d

我具有GameObject对象和Camera.main的世界坐标,我想计算相对于Camera.main的位置和旋转。 位置很容易:

object.transform.position-相机.main.transform.position

如何相对于摄影机为给定对象计算四元数?

我可以设置object.transform.parent = Camera.main.transform并读取localRotation,但是还有更优雅的解决方案。

1 个答案:

答案 0 :(得分:1)

按定义:

obj.transform.parent.rotation * obj.transform.localrotation = obj.transform.rotation

因此,表达您的问题的另一种方式是,您要找到四元数q,使得Camera.main.transform.rotation * q == object.transform.rotation。因此,您可以代数解决此问题:

                        cam_rotation * q = obj_rotation  
inverse(cam_rotation) * cam_rotation * q = inverse(cam_rotation) * obj_rotation  
                                       q = inverse(cam_rotation) * obj_rotation

并统一计算:

Quaternion q = Quaternion.Inverse(Camera.main.transform.rotation) * object.transform.rotation;