私はAndroidのOpenGL ES2で骨格アニメーションを実装しようとしていますが、io_threeを使ってBlenderからJSONモデルをエクスポートしています。このファイルから読み取ることができますBones配列はそれぞれ3つの浮動小数点配列、 4つの浮動小数点配列とスケールと親である整数として、私は理解したように階層リストを持つアニメーションも持っています。各骨組みはフレームごとに処理され、各階層には親とキーのリストがあり、だから私は多くのチュートリアルを読んでたくさんの試みをしましたが、残念ながら私は成功しませんでした。 私は骨のクラスを持っているので、それぞれにベクトルがあります。そして、各骨の相対的な行列を得ることができます。そして、それを親の絶対行列と掛け合わせて、骨の絶対行列を求め、逆行列を逆行列にします。 各キーの計算は同じですが結合できないので、骨と各フレームの関係を理解する必要があります。 私の問題はコードではなくロジックである。OpenGL骨格アニメーションロジック
答えて
t
がアニメーション全体の開始時刻と終了時刻の間にあるアニメーションのt
でアニメーションスケルトンを計算する方法を説明しようとします。
Iはそれぞれが3台のフロートアレイ、4台のフロートアレイとスケールとしてクォータニオン回転などの位置を有するこのファイル骨アレイから読み取ることができる
またすなわち、もし上記のタイミングデータを有するされなければなりませんあなたのアニメーションには、各フレームの時間情報である17個のフレームがあります。あなたがこれを持っていると仮定するか、io_three
からこのデータを得ることができます、あなたはアニメーションマトリックスを計算することができます。よりきめ細かな手順は以下のとおりです。t1 < t < t2
:
- は、あなたが時間
t1
とt2
ようにとの2つのフレームを見つけ、すなわち時間t
のための位置データを検索します。これで、補間された変換行列を計算できます。 - 1と同様に、補間された回転行列とスケール行列を計算します。
- ここでローカルアニメーションマトリックス:Aを計算したばかりのT、R、S行列から求めます。
- 次に、ローカルのアニメーションマトリックスに骨の逆バインド変換を掛けます。
- ここで、累積アニメーションマトリックスを持つように、親マトリックスを掛けます。
computation hereのサンプルを見ることができます:Assimpを使用して、ObjectiveCにあることに注意してください。
スケルトンの各ボーンに対してステップ1〜4を実行し、スケルトンのルートから完全に下に移動します。これにより、各ボーンに対して累積アニメーションマトリックスが確保されます。あなたはIdentityMatrix
を親マトリックスとして始めます。
スケルトンのルートから始める必要があるので、ルートも知っている必要があります。データがスケルトンのルートを提供するか、スケルトンルートを導出する必要があります。ボーンノードのツリーがある場合、最も深いノードがルートになります!
各ボーンのアニメーションマトリックスを取得したら、各頂点に影響を与えるボーンの数とその影響の重みを知る必要があります。次に、変形された頂点をCPUまたはGPUで計算することができます。 both have their pros and consに注意してください。
骨格アニメーションの方がはるかに優れていますが、Assimpライブラリの説明はpost's top answerに記載されています。
全体として、骨格アニメーションの全体的なロジックは単純ですが、難しい部分は、すべてのデータを含み、正しいアニメーションマトリックス、スケルトンのルートノードの識別、および頂点から骨/アニメーションデータへのマッピングを含むデータ構造のナビゲーションにあります。
- 1. OpenGL ES2骨格アニメーション
- 2. エラーカルコゲノフルバレン骨格データベース
- 3. OpenGL ESでの骨格アニメーションの頂点の最適化
- 4. SceneKit:骨格アニメーション私は次のコードで、骨格アニメーションをロードしようと
- 5. 不適切なJSONデータカルコゲノフルバレン骨格
- 6. オリジナル骨格位置(FBXのインポート)
- 7. 複数の骨格を持つコラージュアニメーション
- 8. Colladaの骨格とコントローラ関係
- 9. 私は、以下の骨格構造持つバックボーン
- 10. キネクト&プロセッシング:骨格の手のデータをマウスの位置に渡す
- 11. 無料の骨格アニメーションモデルは何ですか?
- 12. アウレリア活字体の骨格NPM startコマンドで-navigationエラー
- 13. 骨格アニメーションのSRT値を保存する
- 14. 骨格アニメーションの頂点シェーダのパフォーマンスに関する問題
- 15. CでOpenCVを使用した骨格化#
- 16. 骨格のあるボディに高さがない
- 17. Blenderで骨格アニメーションを作成してthree.jsで再生する方法
- 18. Rail's generate on Cloud9を使用して骨格ファイルを生成する方法
- 19. アウレリア骨格typescriptです-WebPACKのは、Windows上で起動しない
- 20. 骨を計算する
- 21. 裸の骨Scala Webフレームワーク?
- 22. Libgdxのレンダリングメソッドからアニメーションロジックを削除する
- 23. iOS - ストーリーボード(デザイン&アニメーションロジック用)で使用されるNIBのビュー
- 24. 顎骨作成食事/食事タイプ
- 25. Three.jsが骨にオブジェクトをつける
- 26. 骨のデータをglslシェーダに送信
- 27. 残念ながら、2つの骨格メッシュを併合することはできません
- 28. gitで多くの空のフォルダを追加する/フォルダの骨格をチェックするには?
- 29. 骨格アニメーションの頂点を変換するにはどうすればよいですか?
- 30. OSX上で骨格を追跡するためにlibfreenect2でOpenNI2とNITEをセットアップするには?
清潔で明確な説明、ありがとう – Mohamed