COLLADA 1.5 Specification Samsung Software Membership 3D MIM 신진수
Introduction COLLADA COLLAborative Design Activity XML schema *.dae file Sony & Khronos Group COLLADA Dom / FCollada
Index COLLADA Design Considerations Animation Controller COLLADA Dom
Design Considerations Address Syntax ID : URI fragment 고유 식별자. Source 및 Target 등 인스턴스 도큐먼트이 참조 <source id="here" /> <input source="#here" /> <bind target="here" /> SID : 부모 엘리먼트 범위 내에서 유일한 값으로 제한 <node id="pSphere1" name="pSphere1" type="NODE"> <translate sid="translate">-4.36491 3.025364 4.657058</translate> <scale sid="scale">1 1 1</scale> <channel source="#pSphere1.translate_pSphere1_translate-sampler" target="pSphere1/translate"/>
Design Considerations Instantiation Instation_* 형태의 노드 <instance_animation> <instance_camera> <instance_controller> <instance_formula> <instance_geometry> <instance_light> <instance_node> <instance_visual_scene> Parameters in COLLADA <param> (core) : 직접 사용되는 파라미터의 타입과 값을 정의 <newparam> : 파라미터의 생성 <setparam> : 파라미터의 값과 타입을 바꾸거나 설정 함 <param> (reference) : <newparam> 으로 생성된 파라미터를 참조함.
Design Considerations <COLLADA> <asset> <library_lights> <library_cameras> <library_materials> <library_effects> <library_geometries> <library_visual_scenes> <library_animations> <scene> <instance_visual_scene url = “#visualSceneNode”> <scene> </COLLADA>
Design Considerations Reading COLLADA documents
Animation animation animation_clip channel instance_animation 애니메이션 정보 선언 카테고리 animation_clip 정의된 애니메이션 곡선과 식의 구획은 한 animation_clip로서 함께 쓰인다. channel 한 애니메이션의 출력채널을 선언한다. instance_animation COLLADA 애니메이션 리소스의 구체적 예(인스턴스) library_animation_clips <animation_clip>엘리먼트 장소에 라이브러리 제공 library_animations <animation> 엘리먼트 장소에 라이브러리를 제공 sampler 한 애니메이션을 위한 보간 샘플링 함수 선언.
controller controller instance_controller joints library_controller COLLADA controller 리소스의 instantiates joints joint, 혹은 skeleton, node의 attribute data에 관련된 노드 library_controller <controller> 엘리먼트에 library를 제공함. morph 정적 mesh들을 블렌딩하고 set하는 사이에 요구되는 데이터를 묘사한다. skeleton 필요한 joint 노드의 searching을 시작하기 위한 skin controller를 가리킴. Skin 가중치에 의해 blend–weight-skinning 묘사될 정점 및 관련 정보들 Targets Morph의 타겟과 가중치, 각 속성을 가리킴 Vertex_weights Skin에 쓰일 Joints와 weight의 조합
controller Vertex_weights <vertex_weights count="4"> <input semantic="JOINT" source="#joints" offset="0"/> <input semantic="WEIGHT" source="#weights" offset="1"/> <vcount>3 2 2 3</vcount> <v> 1 0 0 1 1 2 1 3 1 4 1 3 2 4 1 0 3 1 2 2 </v> </vertex_weights> Count : 가중치의 수 ( = skinning되는 geometry의 vertices의 수 ) <vcount> 만큼씩 count 번 <v>를 읽음 (가중치) 위) 첫번째 버텍스 – 3개의 작용 - 중 첫번째 작용 – joint index ( joint <source>의 <Name_array> 값의 index) = 1 그것의 가중치 <source>의 <float_array>의 weight 인덱스 = 0
controller Skinning accumulate outV = (i=0~n)∑ { ( (v * BSM) * IBMi * JMi) * JW } n : vertex V 에 영향을 주는 joints의 number BSM : Bind Shape Matrix IBMi : Bind 행렬의 역행렬 (mesh 좌표) JMi : joint i 의 행렬 JW : vetex V의 joint i 에 대한 가중치 Bind Shape : base mesh Joints Weights Inverse bind matrix : <joints>엘리먼트의 관련 역행렬 Bind Shape matrix : skinning 전의 bind shape을 나타내는 한 개의 행렬
Q&A