膝の上のモーションキャプチャ(骨格アニメーション2)

2007年5月12日に、Jochen Diehlは非常に興味深い記事Skeletal Animationsを公開しました。







本質を簡単に説明してください:



  1. 記事には骨格アニメーションはありません(最初の文では、著者は「これは本当の骨のアニメーションではありません」と述べています)
  2. 10フレームアニメーションのデータはポイントの配列です
  3. ポイント自体、著者は、カーソルからカーソルを合わせて座標を書き出すことで、人の歩容を記録から収集します。 彼は、時間をかけて均等に分配された10個のフレームを使用しました。
  4. クリップを再生する過程で、補間を使用してアニメーションが平滑化されます
  5. 記事の最後で、著者は実験を続けることを提案しています。

    • 補間のあるフレームの代わりに時間ベースのアニメーションを使用する
    • 独自のアクション(ジャンプ、実行など)を記録し、アクション間のスムーズな移行を試みます
    • 影を追加する
    • スケルトンを追加して、ラグドールを人生のように死にかけます
    • フォーラムの購読解除




このメソッドに私を惹きつけたもの:



  1. 3Dモデリングに深く入り込まない能力-3Dモデラーに任せましょう
  2. 3Dをフラッシュに移行する問題を掘り下げる機会はありません-私にとって小さなプロジェクトの場合、これは役に立ちません
  3. キャラクターのさまざまなアクションを取得する非常に簡単な方法


*面白い場合は、新しい動き、キャラクターをハブに追加する方法を詳しく書き留めます。



次:



私が最初にしたことは、アニメーションを時間ベースに変換することです(ここでは何も複雑ではありません)。



public function update(time:Number):void { render(currentFrame); currentFrame+=(actionArray.length*time/actionLoopTime); currentFrame = int(currentFrame*100)/100; if(currentFrame>actionFrameNumber) { currentFrame-=actionFrameNumber; } }
      
      







しかし、その後、メソッドに没頭する過程で、画面上のNPCキャラクターの群衆を多様化する少なくとも1つの魅力的な(私にとって)機会があることに気付きました。 結局のところ、必要な方法でキーフレームの最初の「スケルトン」をわずかに変形し、図形やキャラクターのオプションを無限に取得するだけで十分です。



例(コードはMain.handleGUIChangeのソースコードで見ることができます-ここに本質を示します):



これはすべて、キーフレームの1つのシーケンスのみに基づいています(!)



膝の上に組み立てられた実例がここにあります

サンプルコードはこちら



備考:





PS:まあ-結果の行列を「勾配」で計算する際の誤差は、度ではなくラジアンを行列に代入することでした。 ドキュメントをよく読んでください!

修正してリロードします。



All Articles