Maya で 1 分間のアニメーションを作成しており、それを OpenGL でレンダリングするつもりです。私はこれを大学でのプロジェクトとしてやっています。
シーンは、歪んだ表情をしている人間の顔だけで構成されています。メッシュには約 2200 のクワッド フェースがあります。
Wavefront オブジェクト ファイルを頂点配列と法線配列に変換する perl スクリプトを見つけました。Maya で 24 fps でアニメートし、すべてのフレームのメッシュを Wavefront オブジェクト ファイルにエクスポートし、それらすべてを perl スクリプトで実行して、頂点と法線の配列を取得します。
そのため、実現可能性をテストするために、Maya のアニメーションの 2 つのフレームをオブジェクト ファイルに変換し、(微調整した後に) スクリプトを実行したところ、数千のglVertex
andglNormal
呼び出しが得られました。そのすべてを C++ プログラムにコピーしてコンパイルしました。それはスムーズに実行されます。
プログラムに 60sec*24frame 分のglVertex
andglNormal
ステートメントをコピーすると、プログラムがどれだけ大きくなるかを考えて、VBO を使用してみます。それで、私はそれについて読みましたが、実装を完全に把握していません。
したがって、私の最初の質問は次のとおりです。この場合、VBO を実装する最良の方法は何ですか?
頂点と法線の両方の 2D 配列を、フレームごとに 1 つずつ考えています。のGL_STATIC_DRAW_ARB
「使用法」パラメータについては、glBufferDataARB()
.
たとえば、アニメーションの長さが 5 フレームで、顔のメッシュが 2200 の頂点と法線で構成されている場合、次のように作成します。
GLfloat face_vertices[5][2200] = {.....};
GLfloat face_normals[5][2200] = {.....};
私の 2 番目の質問: 上記のコードは VBO で機能するか、「うまく」実行されますか?
また、この情報が重要かどうかはわかりませんが、私のコンピューターは Intel 82945G グラフィック カードで実行されており、大学の PC も Intel で実行されていると確信しています。私はそれについて言及したいと思っただけです。
アップデート
パフォーマンスも懸念事項です。