script 제작(특히 expression제작)이나 vfx를 위해서는 수학이 필요성이 절실합니다. 최상위 실력자가 되려면 3d 수학을 필히 학습하세요. 국내에는 도서가 없읍니다. 가르쳐 주는 곳도 없읍니다.
3d 프로그램에서의 3×3 행렬의 의미
3d 프로그램은 공간에서 물체의 방향과 크기를 묘사하기 위해 3×3 행렬을 사용합니다.(단, 3d프로그램은 공간에서 물체의 위치를 묘사하기 위해, 4×4 행렬을 사용합니다.)
아래의 행렬은 3×3 단위 행렬입니다. 이 단위 행렬은 방향과 크기에 어떠한 변화도 발생하지않은 상태를 의미하는 행렬입니다. 이 단위 행렬을 가지고, 물체의방향과 크기 변화를 설명하겠습니다.
![]()
위 3×3 단위 행렬을 숫자들의 집합으로 생각하지 말고, 3d 프로그램(maya, xsi, Houdini)의viewport의 가장자리에있는 axis icon으로 일단 간주하세요.
![]()
위의 단위 행렬에서 맨 첫 번째 줄(즉, 1 0 0)은 x축을 의미하고, 두번째 줄(즉, 0 1 0)은 y축을 의미하고, 세 번째 줄(즉, 0 0 1)은 z축을 의미한다고 생각하세요. 그러면, 위의 단위 행렬은 아래와 같은 행태로 생각할 수 있습니다.
![]()
그래서, x축은 x축을따라서 1 unit의 위치에 있는 지점을 의미하고, y축은y축을 따라서 1 unit의 위치에 있는 지점을 의미하고, z축은 z축을 따라서 1 unit의위치에 있는 지점을 의미한다고 간주할 수 있습니다.
만약 axis icon의 크기가 모든 방향으로 두 배로 크기가 커졌다면, 각각의 축에 따라서 원래 위치의 2배가 되는 위치로 이동시키면 됩니다. 그러면 아래와 같이 작성할 수 있습니다.
![]()
아래 비디오 클립은 axis icon을 두 배로 키울 때, 화면의 왼쪽 상단 부분에서, 3×3 행렬의 값이 어떤 식으로 변화하는 지를 보여주고 있읍니다.
지금까지 object의 위치를 묘사하기 위해서 3×3 행렬이 사용되는 방식을설명하였습니다.
다음으로 object의 회전을 묘사하기 위해서, 3×3 행렬이 사용되는 방식을설명하겠습니다.
설명의 용이성을 위해서, 다시 단위 행렬을 가지고 설명하겠습니다. 즉, axis 아이콘을 y축을따라서 반 시계방향으로 회전한 경우를 생각해 보세요. 이 경우, 기존의x축은 –z축 방향을 향하게 되고, 기존의 z축은 +x축방향을 향하게 됩니다.
그러면, 각각의 축은 아래와 같이 변경이 되었다고 생각할 수 있읍니다.
![]()
시각화를 위해서 아래 비디오 클립을 삽입하였습니다. Axis icon을y축으로 반 시계방향으로 회전할 때, 화면의 왼쪽 상단 부분에서3×3 행렬의 값이 어떤식으로 변화하는 지를 보여주고 있읍니다.
지금까지는 object가 회전하거나 크기가 변경된 후에 3×3 행렬의 값이 어떤식으로 변경되는 지를 관찰했읍니다. 그러나, 만약 object의 상태를 묘사하는 행렬이 아래와 같은 경우를 생각해 보겠습니다.
![]()
위의 행렬을 이 post의 맨 위쪽에서 설명한 3×3 단위 행렬과 비교하여설명하겠습니다. 위 행렬의 맨 첫 번째 줄과 단위 행렬의 맨 첫 번째 줄은 서로 동일하기 때문에, 크기나 방향에 어떠한 변화가 없습니다.
위 행렬의 두 번째 줄과 단위 행렬의 두 번째 줄을 비교하면, 위행렬은 y축 방향이 거꾸로 되어서 아래쪽을 향하게 됩니다.
위 행렬의 세 번째 줄과 단위 행렬의 세 번째 줄을 비교하면, 위행렬은 z축 방향이 거꾸로 된 것을 알 수 있습니다.
위 행렬 상태를 얻을 수 있는 방법에는 2가지 방법들이 있습니다.
한 방법은 scale tool을 사용해, y축 방향과 z축 방향으로 거꾸로 scaling하는 방법입니다.
다른 또 하나의 방법은 x축을 중심으로 180도 회전시키면 됩니다.
이 2가지 방법들 중 어느 하나의 방법을 사용하더라도, 위의 행렬 상태를 얻게 됩니다.
|
2013년 2월 12일 화요일
3×3 행렬 maya scripting
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기