12

これまでのところ、静的 OBJ ファイル (.h に変換) を OpenGL アプリケーションに正常にロードできました。

次に、これらのオブジェクトをアニメーション化するために変換を適用できます。

プロジェクトの次のステップは、プロの 3D アニメーターに Maya でアニメーションを作成してもらい、OpenGL を使用してそれらを 3D で表示する「ローダー」を作成することです。

ビデオ ゲームや静的モデルのロードを扱った例をオンラインでたくさん見つけましたが、アニメーションはアニメーターによって完全に事前定義されているため、ロードするだけで済みます。

ユーザーが文字通りアニメーションを歩き回ることができるARライブラリの上にこれを構築しているため、ビデオにレンダリングできないことに言及することが重要です。その部分は解決され、OpenGLを使用してアニメーションをレンダリングする必要があるだけです

アニメーターが Maya からエクスポートするために使用する適切な形式に関するこの質問を調べました。

.dae (COLLADA) ファイル形式は、モデルとアニメーションの情報をカプセル化し、Assimpを使用してロードするのに適しているようですが、このローダーが iOS や Android (私たちが開発しているプラ​​ットフォーム) 用にコンパイルされていることはわかりませんでした。

オンラインで推奨されているもう 1 つの方法は、一連の OBJ ファイルをエクスポートし、各フレームに対応する OBJ をロードすることです。

他に「エンジン」を使う方法も見られますが、あまりにも多すぎてどれに注目すればいいのかわかりません。

エンジンにお金を払ってもかまいませんが、どのエンジンが最も効果的かをどのように判断しますか?

これらの例は見つかりましたが、明確な「勝者」は見当たりません。

iOS または Android デバイスでこのような機能を実現した人はいますか?

あなたのおすすめは何ですか?

4

2 に答える 2

2

まあ、OpenGL(-ES)自体はただの描画APIであり、アニメーションに関することは何もしません。アニメーションの再生は、独自のアニメーション システムによって管理されます。このようなシステムの出力は、後で OpenGL で描画するときにジオメトリを配置および変形するために使用できる変換パラメーターです。最近のこれに対する通常のアプローチは、スケルトン アニメーション システムです。つまり、モデルにスケルトンを追加します。このモデルでは、各頂点がボーンのセットにバインドされ、頂点ごとのボーンごとの重み付けが行われます。ボーンは、平行移動と四元数の組み合わせとして表すことができます。通常、移動は定数であるため、通常のアニメーション システムで得られるのは、スケルトン ポーズを表すクォータニオンのベクトルです。これを均一 (vec4) または GL_RGBA32F 1D テクスチャに読み込みます。幅はボーンの数です。これは、ポーズに基づいて頂点ごとの変換を適用するために頂点シェーダーで使用されます。頂点とボーンの重みは通常、追加の頂点属性として送信されます。

于 2012-08-28T10:36:51.013 に答える
1

Android用の3Dフレームワークを作成しましたが、これがアニメーションの考え方です:

スケルトン アニメーションは、コードを使用して簡単に実行できます。すべての手足の OBJ をロードし、CPU にスケルトン計算を実行させてから、各 OBJ を CPU によって指定された座標と角度に変換します。

キーフレーム アニメーションは、同じ数の頂点を持つ OBJ を使用して実行できます。次に、変数 t(time) を取り、結合されたメッシュを与える線形関数を使用できます。ベジエ曲線を使用してアニメーションをよりスムーズにすることもできます。

もう 1 つ指摘したい点は、MD5 ファイルをインポートできることです。MD5 ファイルにはアニメーション データを含めることができ、バイナリであるため、読み込みは高速で、パーサーは必要ありません。

MD5 の詳細については、こちらをご覧ください

PS 必要に応じて、モバイルで開発する際の 3D に関する多くの問題を扱った素晴らしい本をお勧めします。コメントを残すだけです。そして.. お金を使うことを気にしないなら、Unity を購入してください。それは非常に優れており、非常に用途が広いです。

于 2012-08-28T12:15:21.967 に答える