2012-05-11 2 views
3

필자가 작성한 collada에 대한 내 자신의 로더를 사용하여 정적 지오메트리를로드 할 수있었습니다. 그러나 다음 단계는 애니메이션을 추가하는 것입니다. 내가 겪고있는 문제는 instance_controller가 여러 개의 뼈대를 가지고있을 때 무엇을 할 것인가이다. 내 현재 모델에서는 모든 노드를로드하려고합니다. 모든 노드는 모든 조인트를 참조합니다. 예 :여러 개의 골격을 가진 collada 애니메이션

<instance_controller url="#geom-Cylinder018-skin1"> 
<skeleton>#node-Bone024</skeleton> 
<skeleton>#node-Bone020</skeleton> 
<skeleton>#node-Bone016</skeleton> 
<skeleton>#node-Bone009</skeleton> 
<skeleton>#node-Bone005</skeleton> 
<skeleton>#node-Bone001</skeleton> 
<skeleton>#node-Bone025</skeleton> 

나는 이걸 어떻게 처리해야할지 모르겠다. 지금은 visual_scene의 올바른 노드에 모두 연결하고 있습니다. 그러나 모델의 모든 노드는 위에서 보았던 것을 수행합니다! 필자는 AssimpView를 사용하여 실제 파일이 렌더링되었고 제대로 작동하는지 확인하기 위해로드했습니다. 위의 상황에서 내가하고있는 일을 누군가가 나에게 설명 할 수 있습니까? 감사합니다

COLLADA spec에서

답변

6

, 그것은 말합니다 그 <skeleton><instance_controller> 아래 : 피부 컨트롤러가 그래서

을 필요로 공동 노드를 검색 할 시작이다

여러를 갖는 나타냅니다 instance_controller 안의 해골 포인터는 가리키는 노드가 모두 올바른 조인트 노드를 검색해야한다는 것을 의미합니다. <controller> 자체는 관절에 어떤 노드를 사용해야하는지 알려줍니다. 그것은 다음과 같은 형태 소스를해야합니다 : <skeleton> 점은 각 관절 이름의 sid와 노드를 검색해야하는 <node> 것을

<library_controllers> 
    <controller id="skin"> 
    <skin source="#base_mesh"> 
     <source id="Joints"> 
     <Name_array count="4"> Root Spine1 Spine2 Head </Name_array> 
     ... 
     </source> 
     ... 
    </controller> 
</library_controllers> 

. 예를 들어, 상기 컨트롤러 노드와 같은 모양이 지적 :

<node id="Skeleton1" sid="Root"> 
    <node sid="Spine1"> 
    <node sid="Spine2"> 
     <node sid="Head"/> 
    </node> 
    </node> 
</node> 

컨트롤러의 각 관절 이름 해당 SID 값의 노드에 대응한다. 스켈레톤 태그가 여러 개이면 주어진 sid에 대해 더 많은 노드를 검색해야 함을 의미합니다.

+0

정말 고마워요! 나는 당신의 답장에 그들을 링크시킬 몇몇 다른 웹 사이트에 이것을 게시했다. –

+0

문제 없습니다, 행운을 비네! – jterrace

관련 문제