2013-08-22 13 views
11

OpenGLでモデル(たとえば、人間、歩く)をアニメーション化したいと思います。私はブレンダーで OpenGLで3Dモデル(メッシュ)をアニメートする方法は?

  • をそのモデルのスケルトンを作成しますブレンダー
  • でモデルを作成し
    1. ....今ん(トリッキーな数学付き)スケルトン・アニメーションのようなものがあると知っているが、何本について歩行そのモデルとBlenderのアニメーションやスケルトン
    2. は、そのアニメーションのいくつかの「キーフレーム」を取ると(OBJファイルとして)単一のモデル としてすべての「キーフレーム」をエクスポート
    3. (OpenGLのためのOBJファイルローダーを作ります頂点、テクスチャ、法線、面のデータを取得する)
    4. glMapBufferRange

    [OK]をクリックして、おそらく何か... OpenGLでそのアニメーションモデルを描く(とVBOで現在の「キーフレーム」/モデルを変更する方法をいくつかのトリッキーなアイデアを得るためにVBOを使用して、私はこのアイデアを知っていますちょっとしたスクリプトですが、さらに調べる価値はありますか? VBOの "keyFrame"/modelsを変更する良いコンセプトは何ですか?

    私はそのメモリの問題を知っていますが、小さなモデル(とあまりにも多くのアニメーションではありません)で行うことができます。

  • 答えて

    8

    はい、あなたが参照している方法は、初期の3Dビデオゲーム(地震など)で非常に一般的でした。

    私はそれを少し違って実装することをお勧めします。アニメーションのすべての可能なフレームのキーフレームをエクスポートする代わりに。より多くの展開されたキーをエクスポートし、頂点の位置を補間します。これにより、メモリ使用量を大幅に減らしてよりスムーズな再生が可能になります。

    これには、単一の(ストリーミングまたはダイナミック)VBOが必要です。各フレームでは、前と次のキーフレームを見つけて頂点を補間し、結果をVBOにアップロードします。

    実際には、シーンのすべてのフレームをOBJとして書き出すためにブレンダーを設定することができます。カスタムツールを使用すると、これらのファイルを素晴らしいアニメーション形式にコンパイルできます。ここで読む

    +3

    を正直に言うとは、頂点レベルでこのキーフレームのトゥイーンを実装することは、おそらく多くのですより多くの努力、実現する骨格アニメーションシステムに慣れている。 CPUはそのような追加の頂点変換をすべて実行する能力がなかったので、骨格アニメーションは「古い」日には行われませんでした。しかし、今日のGPUでは、朝食用の行列と補間が追加されており、GLSLのコードも非常に少なくなっています。 – datenwolf

    +0

    @datenwolf私はパフォーマンスのことについてあなたに同意しますが、骨格アニメーションの実装の容易さについては同意しません。頂点のトゥイーンは次のようになります。voo-> verts [i] = lerp(t、previous [i]、next [i])} 'クォータニオンの階層をslerpingと比較すると、悪いことではありませんが、頂点と骨の重さを関連付ける必要があります)。管理するデータがほんの数あります。 –

    +1

    速い答えのためのthx! – user2602528

    関連する問題