簡體   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