我具有GameObject对象和Camera.main的世界坐标,我想计算相对于Camera.main的位置和旋转。 位置很容易:
object.transform.position-相机.main.transform.position
如何相对于摄影机为给定对象计算四元数?
我可以设置object.transform.parent = Camera.main.transform并读取localRotation,但是还有更优雅的解决方案。
答案 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;