如何使 FromToRotation 以所需的向上向量结束,类似于使用 LookRotation 时?

问题描述 投票:0回答:1

用例:将运动跟踪检测到的玩家的肩膀、肘部和手腕位置转换为游戏中的头像。我不想将每个位置作为真实位置或使用 IK,而是想要每个关节的相对旋转,我可以将其传递到 Unity 的“目标旋转”中(这样,当且仅当没有障碍物时,头像才会采用用户手臂的形状) ).

在这种情况下,我已经成功地使用

FromToRotation
将肩关节的旋转转换为游戏中的头像(目前,肘部处于所需的位置,但关节并不总是面向正确的方向)。我仍然需要根据手腕的位置指定肩关节的 Z 轴旋转(实际上决定了肘关节的方向)。 Z 轴旋转沿着手臂本身的轴线,并指示肘关节指向的方向。因此,理想情况下,我希望第一步具有 0 度的 Z 轴旋转并指定“向上”作为向上向量,但实际上,即使手臂指向正确的方向。

IIUC,在 LookRotation 中,生成的四元数将允许生成的方向向上成为输入向上向量。我希望 FromToRotation 也一样,在旋转结束时,向上向量对应于输入向上向量。这样,我可以将手臂指向正确的方向,同时指定“向上”作为向上向量,并消除任何 Z 轴旋转分量。是否有我可以调用的算法或一系列函数来实现所需的结果?

unity-game-engine quaternions
1个回答
0
投票

这似乎是一个简单的问题和简单的答案,我不确定为什么没有人回答。我最终自己弄清楚了。将生成的 FromToRotation 四元数与

Vector3.forward
相乘。然后拨打
LookRotation(resultingVector, Vector3.up)

© www.soinside.com 2019 - 2024. All rights reserved.