问题在下图中解释。现在我有Q1,Q2和Q3的Quaternions数据。我该如何计算Q4?在此先感谢您的帮助。
为了更清楚:
我想开发一个3D室内导航应用程序,允许用户上传路线并在同一位置重现路线。
创建路径并上传时:首先,用户打开摄像机并获得启动位置为O,然后他将存储X的平移和旋转数据,这是一个预定义的位置。最后通过记录另一个像Y相对于O的点来创建它们的路径。
当再现之前创建的路径用户时,他们再次打开相机并获得另一个启动位置O'。他可以再次进入预定位置并再次进行X的平移和旋转。然后我可以计算相对于O'的Y并重现该点。
在我看来,我可以通过矢量计算来计算翻译:O'X - OX + OY = O'Y
但我不熟悉四元数和旋转部分。我尝试过相同的方法,但结果不正确。因此,我将问题简化为图中描述的模型并寻求帮助。
我认为Quaternion.SetLookRotation
适合你的问题,它将前向矢量(和向上矢量)转换为四元数,而人们的向上矢量通常是Vector3.up
,所以:
var Q4 = Quaternion.SetLookRotation(/* vector Y-O' here */);