Quaternion.Euler(x,y,z)
예상대로 작동 하는 Quaternion으로 벡터를 회전하려고하는데 문제는 회전이 세계 좌표계를 기준으로 수행되는 반면 벡터 자체를 기준으로 회전하고 싶다는 것입니다.
그래서 저는 좌표계를
z = vector's direction,
x = vector's perpendicular (any)
y = world y.
그래서 내 코드는 다음과 같습니다.
myVector = euler * myVector;
그러나 나는 필요하다
myVector = localEuler * myVector;
그래서 계산해야합니다 localEuler
(A)의 함수로 euler
하고 myVector
.
어떻게 할 수 있습니까?
도움을 주셔서 감사합니다!
localEuler = Quaternion.Euler(euler.x * myVector.x ,euler.y * myVector.y ,euler.z * myVector.z );
작동하지 않았습니다. 나는 이것이 내적이라고 생각한다.
나는 이것이이 생각하는 코드에 내장 된 Transform
S : Transform.RotateAround()
하지만 나는 그것을 할 필요 Vector3
하는 없습니다 Transform
.
내 문제를 해결했습니다.
내 해결책은 다음과 같습니다.
Quaternion.AxisAngle(angle : float , rotationAxis : Vector3)
;예를 들어 "local"x를 중심으로 회전 rotationAxis
하려면는 myVector의 수직이어야하며 다음과 같이 계산됩니다.
var rotationAxis : Vector3 = Quaternion.Euler(0,90,0) * myVector;
rotationAxis.y = 0;
새 쿼터니언은 다음과 같이 계산됩니다.
var localEuler:Quaternion = Quaternion.AngleAxis(euler.x , rotationAxis);
그러면 벡터가 올바르게 회전합니다.
myVector = localEuler * myVector;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다