2012-01-26 2 views
3

colladaファイルの 'animation'ノードからジョイントデータ情報を読み込めません。Colladaアニメーションジョイントを読み込んでいますか?

まず、私は 'library_visual_scenes' から関節をロードしよう:

最初の2つの関節のことのように見える:

うまくいった
<visual_scene id="" name=""> 
    <node name="joint1" id="joint1" sid="joint1" type="JOINT"> 
     <translate sid="translate">0.000000 -2.000000 0.000000</translate> 
     <rotate sid="jointOrientZ">0 0 1 90.000000</rotate> 
     <rotate sid="rotateZ">0 0 1 0.000000</rotate> 
     <rotate sid="rotateY">0 1 0 0.000000</rotate> 
     <rotate sid="rotateX">1 0 0 0.000000</rotate> 
     <scale sid="scale">1.000000 1.000000 1.000000</scale> 
     <extra> 
     <node name="joint2" id="joint2" sid="joint2" type="JOINT"> 
      <translate sid="translate">2.000000 0.000000 0.000000</translate> 
      <rotate sid="rotateZ">0 0 1 0.000000</rotate> 
      <rotate sid="rotateY">0 1 0 0.000000</rotate> 
      <rotate sid="rotateX">1 0 0 0.000000</rotate> 
      <scale sid="scale">1.000000 1.000000 1.000000</scale> 
      <extra> 

マヤジョイント:

http://www.hostingpicture.fr/upload/c3eaf96247e99b90f9087b2d37fb509f.PNG

私の関節は:

私は絵を入れたいが、新しいメンバーとして、私は許しませんよ。この場合私を信頼しなければなりません。私のエンジンでは、ジョイントはマヤと同じ場所にあります。

次に、「アニメーション」ノードからジョイントをロードしようとします。ここに問題がある、私はどんなjointOrientも見つけることができない。ここに誰が助けることができる

http://www.hostingpicture.fr/image.php?nom=upload/b26b6f8ed80f2bcdb69645d400ac023d.png

<animation id="joint1-anim" name="joint1"> 
<animation> 
    <source id="joint1-translate.Y-output"> 
     <float_array id="joint1-translate.Y-output-array" count="2">-2.000000 -2.000000</float_array> 
<animation> 
    <source id="joint1-rotateZ.ANGLE-output"> 
     <float_array id="joint1-rotateZ.ANGLE-output-array" count="2">0.000000 0.000000</float_array> 

<animation id="joint2-anim" name="joint2"> 
<animation> 
    <source id="joint2-translate.X-output"> 
     <float_array id="joint2-translate.X-output-array" count="2">2.000000 2.000000</float_array> 

だから負荷関節の後、彼らはそのように見えますか?

ありがとうございました。

(私は10人の以上の評判を持っていないと申し訳ありませんが、私は写真を置くことは許されないよ。)

答えて

3

私は最終的に興味があるかもしれない人のために、答えを考え出しました。

colladaのvisual_sceneノードは、関節のバインドポーズを提供します。 だから、私は構造でvisual_scene共同座標をロードするつもりです:そのような

何か:

struct Pose 
{ 
    vec3 translation, 
      orientation, 
      rotation, 
      scale; 
}; 

Pose bind_pose; 

をその後、私はそのコンストラクタで、構造体を「ポーズ」の別のインスタンス化を作成するつもりですパラメータとしてポーズを取る:

Pose anim_pose(bind_pose); 

ので施工後、visual_sceneとanim_poseからbind_poseは同じです。

それから私は、library_animations内のすべてのアニメーションノードを反復処理チャンネルを見つけて、と興味を持ってもらうつもりです:

  • 共同アニメーション情報を見つけるために教えてソースデータ、(「n」はフロート"n"アニメーションの場合は:)
  • とターゲットジョイントです。

    <channel source="#joint1-translate.X" target="joint1/translate.X"></channel> 
    

この私たちは、ソース値と目標値を置き換えるしようとしていることを教えて(と私は少し失われたところです)。

チャネルノード内のソースデータの検索がターゲットデータと同じ場合、つまり、 :

bind_pose.translation.xはvisual_sceneデータをロードした後の値として-3.0を持ち、かつ

<source id="joint1-translate.X-output"> 
    <float_array id="joint1-translate.X-output-array" count="1">-3.000000</float_array> 

私は何もしません。

ソースデータがターゲットデータと異なる場合は、単にanim_poseを適切な値に置き換えます。

これは、コラージュからアニメーションジョイントを正しくロードするために必要な作業です。

ここに間違いがある場合は教えてください。

希望すると、これが役立ちます。

関連する問題