2017-11-19 8 views
0

모든 프레임을 업데이트하는 함수에서 객체에 matrix4를 점차적으로 적용하고 싶습니다.three.js : 두 행렬 간의 변환

두 행렬이있는 경우 두 행렬의 차이점을 알 수있는 방법은 무엇입니까? 두 가지 차이점의 첫 번째 + 0.2를 나타내는 행렬을 알고 싶습니다.

+1

매트릭스 사이를 직접 보간 할 수 없습니다. [이 질문] (https://stackoverflow.com/questions/3093455/3d-geometry-how-to-interpolate-a-matrix)은 더 많은 통찰력을 줄 수 있습니다. – BDL

+0

회전 데이터 만있는 행렬입니까? – Tlatis

+1

No. 회전과 함께 특히 불가능합니다. 대개 회전 각도의 선형 보간이 필요하지만 행렬에는 각도의 sin과 cos 만 포함됩니다. 당신은 이상한 결과를주는 것을 보간 할 것입니다. 행렬을 분해하고 각을 보간 한 다음 새 행렬을 작성하십시오. – BDL

답변

1

THREE.Quaternion.slerpTHREE.Vector3.lerp 방법을 조사해야합니다.

Slerp는 "구형 선형 보간법"을 나타내며 lerp는 "선형 보간법"을 나타냅니다.

매트릭스는이 두 가지를 기반으로 3 가지로 구성해야하지만 myObject3D.positionmyObject3D.quaternion을 설정하면 내부적으로 3 가지를 처리해야합니다.

출발점이 matrix4 인 경우 decompose을 쿼터니온 및 벡터로 입력 한 다음 새로운 결과에서 compose을 입력 할 수 있습니다. 행렬에 최종 결과 만 나타내려면 makeRotationFromQuaternion(quaternion) 다음에 setPosition(position)을 사용할 수 있습니다.

+1

'matrix.decompose (position, quaternion, scale)'을 사용하여 행렬에서 값을 얻고'matrix.compose (position, quaternion, scale) '을 사용하여 값을 다시 행렬 형식으로 가져올 수 있습니다. –

+1

그것에 대한 추가 정보가 추가되었습니다. – pailhead