繁体   English   中英

如何基于四个 vector3 点旋转 object?

[英]How would I rotate an object based on four vector3 points?

我目前正在研究程序 animation,试图了解基本原理以及如何更好地实现它。 我一直在试图弄清楚如何根据四足动物的腿来旋转它的身体。 我知道我必须得到双腿之间的距离,但我不明白如何将其转换为四元数/旋转值并将其应用到身体的中心!

任何建议或帮助将不胜感激! 谢谢!

在此处输入图像描述

首先,我将使用您的计算来确定前臀部和左后臀部所需的 position。 然后,我会使用一些向量数学和Quaternion.LookRotation来解决旋转问题:

Quaternion GetBodyRotation(Vector3 frontLeftLegWorldPosition, 
        Vector3 frontRightLegWorldPosition, 
        Vector3 rearLeftLegWorldPosition)
{
    Vector3 localForward = frontLeftLegWorldPosition - rearLeftLegWorldPosition;
    Vector3 localRight = frontRightLegWorldPosition - frontLeftLegWorldPosition;
    Vector3 localUp = Vector3.Cross(localForward, localRight);
    
    return Quaternion.LookRotation(localForward, localUp);
}

然后,我会使用bodyTransform.rotation = resultOfAboveMethod;将该旋转应用于身体。 .

然后,假设左后髋和右前髋旋转对称定位,您可以设置身体的bodyTransform.position = 0.5f * (frontRightLegWorldPosition + rearLeftLegWorldPosition);使其位于右前髋和左后髋之间bodyTransform.position = 0.5f * (frontRightLegWorldPosition + rearLeftLegWorldPosition);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM