Reading and Understanding COLLADA documents

  •  COLLADA Documents

    • stored in XML format
    • 예제 파일  astroBoy_walk를 가장 좋아하는 텍스트 편집기로 열어보자.
      만약 당신이 Notepad++과 같은 XML타입 언이 지원 편집기를 쓴다면 너는 <COLLADA>태그 앞에 (-) 표시를 눌러 한줄로 줄일 수 있다. ( 모든 COLLADA 문서가 그렇다.)
      ColladaFile.jpg
    • .dae 혹은 .xml 파일의 root 부분인 <COLLADA> 노드 안에서, 지오매트리 정보를 저장하는데 사용하는 <library_geometries>와, 장면의 Lights 정보를 저장하기 위해 사용되는 <library_lights>과 같은, 여러가지 다른 타입의 정보를 저장하기 위해 사용되는 libraries를 찾을 수 있다. (위 그림 참조)
    • 위 라이브러리들을 통하여 actual 데이터를 찾는 것이다.
      예를 들어, 너의 장면에서 한가지 이상의 빛이나 지오매트리 정보를 저장하기 위하여 <geometry> 노드에서 기하학 정보를, <light> 노드는 빛 정보를 가질 수 있다.
  •  <library_geometries>

    •  COLLADA 라이브러리에서 가장 중요한 것으로, 캐릭터를 애니메이트할때 이 데이터가 필요하다.
    • 하위에 장면의 <geometry> 노드를 담고 있다.
    • 한개의 <geometry> 노드에 한개의<mesh>노드를 담고 있다고 가정한다.
  • <mesh>

    • mesh는 우리가 geometry정보를 찾을 수 있는 노드이다. 만약 이 노드를 분석하면 하위에 (의존 타입, 버텍스 정보를 담고있고, 표준과 텍스쳐 좌표를 담고있는)  한개나 두개 이상의 <source >노드를 가진것을 발견한다.  
  • <souce>

    • 모든 XML node들은 한 ID를 가지며, 그들은 COLLADA document 안의 노드의 위치를 찾는데 쓰인다. 그러나 Source노드는 예외이다. <source> 는 많은 자식 노드들을 가질수 있지만, 가장 중요한 것들은 <float_array> 또는 <NAME_array> 및 <technique_common>등 이다.
    • 이름에서 알수 있듯이 float_array는 float을, <technique_common>은 그들을 사용할수 있는 여러 다른 용도와 방식을 설명한다. <Name_array>는 스트링을 가진다.

      Source%20Node(1).jpg 

    • 위 그림처럼 float array의 (count = "6") 값은 <accesor>의 (카운트="2") 2개 의  정점의 3개의 (x,y,z) float 컴포넌트를 가르킨다,
      3개의 <param>노드는 <accesor >의 자식 노드로 3(x,y,z) 컴포넌트를 가리킨다. (3D vertex) 이 개념을 이해하는 것은 중요하다.
    • 한 마디로 이 source는 "나는 3개의 컴포넌트들로 구성된 2개의 점(vertices)로 구성된다. 이들은 <float_array> 에 6개의 float값으로 저장되어있다." 고 말하는 것이다.
      Components는 "X", "Y" 그리고 "Z"로 부른다. 그리고 float타입이다. 만약 텍스쳐 좌표를 저장한 <source>였다면, 이 Components는 "S", "T", 그리고 "P" 였을 것이다.
    • 우리는 <source>들을 디코딩할수 있다...
  • <triangle>

     

    COLLADA 도큐멘트에서 <polyist> 외에는 <mesh>의 자식 노드로만 <triangles>를 볼 수 있다.

     

     

     Triangles%20Node.jpg

     

  •  

     

     

 

이 글은 스프링노트에서 작성되었습니다.

Posted by BLUE-NOTE