행렬

ㅋㅋ·2022년 6월 2일

유니티강의

목록 보기
5/24

동차좌표

특정 목적으로 좌표계에 축을 하나 늘려 표현하는 것
(x, y, z) => (x, y, z, 1)


변환행렬

행렬을 특정하게 변환시키는 행렬들을 변환행렬이라고 하며,

변환행렬은 단위행렬, 크기 변환 행렬, 이동 행렬, 회전 행렬 등을 말한다.

변환행렬을 연속적으로 곱할 때는 T(이동) -> R(회전) -> S(크기) 순으로 하며,

회전의 경우 y -> x -> z 축을 순서로 곱해야 한다.

T ×\times Ry ×\times Rx ×\times Rz ×\times S ×\times [x, y, z, 1]


Quaternion rot = Quaternion.Euler(45, 0, 45);
Vector3 tran = new Vector3(2, 1, 5);
Vector3 scal = new Vector3(10, 10, 10);

worldMat = Matrix4x4.TRS(tran, rot, scal);

//worldMat = Matrix4x4.Translate(new Vector3(2, 1, 5)) * 
                                 Matrix4x4.Rotate(rot) * 
                                 Matrix4x4.Scale(new Vector3(10,10,10));

유니티에서 변환행렬을 만드는 방법

회전의 경우 일반적으로 사용하는 오일러 각을 사용할 시

짐벌락 문제가 발생하기 때문에 쿼터니언으로 변환하여 사용

Translate 함수를 이용 시에는 TRS 순서를 지켜서 곱해줘야 한다.


Matrix4x4 matrix = transform.localToWorldMatrix;

transform에서 해당 오브젝트의 변환행렬을 얻을 수 있음

0개의 댓글