블로그 이미지
이태원에서 사는 다섯식구의 무직 가장. 흰둥에미

카테고리

분류 전체보기 (184)
Itaewon (2)
ryu's?? (1)
20121210이전 (20)
20130827이전 (147)
soo'study (13)
Total39,071
Today5
Yesterday7

'local tm'에 해당되는 글 1건

  1. 2013.02.14 3.ASE Node

1. ASE File의 전반적인 구조

 - File Header : ASE파일의 버전정보 등

   Scene : Scene에 대한 전반적인 정보(Frame수 등)

   Material List : 사용된 Material들의 List

   Object List : GeoObject, ShapeObject, LightObject, CameraObject, HelpObject 등이 있음.


 - GEO Object : 일반적인 Mesh를 가진 객체로써, 가장 핵심적인 오브젝트

      Mesh를 가지고 있으며, Mesh는 Face의 모임, Face는 3개의 Vertex로 이루어져 있음(메시, 텍스처, 법선 정점 등으로 나뉘어 있음)

   Shape Object : 선을 가진 객체를 의미, Wire만으로 형성된 객체

   Light Object : 광원에 대한 객체를 의미, D3D에 비해서 다양한 형태의 광원을 만들수 있음

   Camera Object : 카메라에 대한 객체를 의미

   Help Object : Group나 Object에 대한 부수적인 정보를 가짐

   Group : 여러 개의 Object들을 묶어 놓은 것을 의미


 - ASE 파일의 오브젝트들은 트리 형태의 계층적 구조를 가짐

 - 각 오브젝트들은 기본적으로 Node의 속성을 가지고, 각각의 타입에 따라 필요한 정보를 가짐

 - 구조

*GEOMOBJECT {                             ----> Node의 종류

  *NODE_NAME  “Name”                    ----> Node의 이름

  *NODE_PARENT “Parent_Name”       ----> 부모 Node의 이름

  *NODE_TM {                                 ----|

  …                                                      |-> Node Transform Matrix

  }                                                  ----|


  *MESH {

  …

  }

  

  *PROP_MOTIONBLUR 0

  *PROP_CASTSHADOW 1

  *PROP_RECVSHADOW 1

  *TM_ANIMATION  {                       ----|

  …                                                     |-> Node TM에 대한 애니메이션

  }                                                 ----|


 - Node Transform Matrix

   객체의 World상의 Transform 정보를 의미

   노드의 이름, 노드의 상속 관계, TM에 대한 정보, TM을 나누어 놓은 정보로 이루어짐.

   Node TM에 대해 애니메이션이 있다면, Animation 정보를 가질 수 있으며, 이동, 회전, 확대 축소에 대해 가지고 있음.


2. Node TM의 해석

*NODE_TM {

  *NODE_NAME "Box01"                                         ----> Node 이름

  *INHERIT_POS 0 0 0                                             ---|

  *INHERIT_ROT 0 0 0                                                 |-> 상속 정보

  *INHERIT_SCL 0 0 0                                             ---|

  *TM_ROW0                1.0000   0.0000    0.0000        ---|

  *TM_ROW1                0.0000  -0.0000   1.0000             |

  *TM_ROW2                0.0000  -1.0000  -0.0000            |-> Node Transform : Affain Node TM(곱해진 형태)

  *TM_ROW3                0.4751   0.0000    0.0000        ---|

  *TM_POS                   0.4751  0.0000    0.0000        ---|

  *TM_ROTAXIS           -1.0000  0.0000    0.0000            |

  *TM_ROTANGLE         1.5708                                   |

  *TM_SCALE               1.0000  1.0000  1.0000              |-> Node Transform : Decomp.Affain Node TM(분해된 형태)

  *TM_SCALEAXIS         0.0000  0.0000  0.0000              |

  *TM_SCALEAXISANG  0.0000                               ---|

}

 - Node 이름은 크게 의미는 없으나, Node TM을 두개가질때의 구분을 위해 사용

   상속 정보는 실질적인 의미가 그다지 없음

   Node Transform은 첫번째는 변환행렬이 완성된 형태, 두번째는 각 변환의 종류에 따라 나뉜 형태로 직접 변환 행렬로 만들어줘야함.

   - 곱해진 Node TM의 경우 변환행렬로 사용시, 0, 0, 0, 1을 4열에 추가하여 사용.

      Negative Scale의 확인 : Scale값이 음수를 갖는것으로, 상황에 따라 Normal이나 Animation 처리시 문제가 발생

                                        Rotation을 나타내는 ROW0-ROW1이 각각 X, Y, Z축을 의미하므로, 두 축을 외적한 값이 다른 한축과

                                        방향이 같은지를 검사하면 됨.

      MAX는 오른손 좌표계를 사용하므로, D3D에서 사용을 위해 Y와 Z값을 바꿔줘야 함. (ROW 1-2 바꾸기, COL 1-2 바꾸기)

      분해된 Node TM에서도 Y와 Z값을 바꿔줘야 함.

      SCALE의 경우, SCALEAXIS(-1) X SCALE X SCALEAXIS의 연산을 통해 실제 SCALE행렬을 얻을 수 있음

                           (SCALE의 값이 SCALEAXIS를 축으로 변환된 것이기 때문)

   NodeTM = ScaleTM X RotationTM X PositionTM 임.


3. Local TM

 - 모든 Object들은 자신만의 pivot이 있음. Local TM은 자신의 부모 Node와 pivot과 자신의 pivot과의 상대적인 변환 행렬임.

   NodeTM은 원점 기준, LocalTM은 자신의 부모가 기준.

   LocalTM = NodeTM X ParentNodeTM(-1)

   LocalTM으로 계층 구조를 구현한 이후 IK나 FK의 애니메이션에 많이 사용.


   

'20130827이전 > 3DDataExport' 카테고리의 다른 글

ASE Material  (0) 2013.02.16
ASE GeoObject  (1) 2013.02.15
3.ASE Node  (0) 2013.02.14
2. ASE Lexer와 Parser  (0) 2013.02.04
1. 3D Data Exporting 개요  (0) 2013.02.04
Posted by 흰둥에미

최근에 달린 댓글

최근에 받은 트랙백

글 보관함