これを行う最善の方法は何ですか?グーグルは私にたくさんの方法を教えてくれましたが、現在最高のものは何ですか? モデルを Maya からエクスポートして iPhone の画面にレンダリングするだけでも十分満足ですが、それをレンダリングしてピンチ トゥ ズームなどをサポートする方法があればうれしいです。
ありがとうございました。今日、初めての 3D モデリング クラスを終えたところです。うれしく思います。
iPhone と iPad 用のフル機能のモデル ビューアーとマニピュレーターを書き終えたところです。基本的には、頂点の配列を格納する独自のファイル パーサーを作成し、レンダリング ループで配列をレンダリングするだけです。バイナリ ファイルは .obj ファイルよりもはるかに高速に読み込まれますが、実行するのはかなり簡単です。このようにして、「処理」したファイルだけでなく、任意のファイルを開くことができます。インターネット上にも多くの例があります。
頂点を最密配列に入れるだけです。
vertexX, vertexY, vertexZ, normalX, normalY, normalZ
フロートの 1 次元配列を持っていますが、上記のようにマップされます。float 配列を取得したら、レンダリングは簡単です。
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glVertexPointer(3, GL_FLOAT, sizeof(vertices[0])*6, &vertices[0]);
glNormalPointer(GL_FLOAT, sizeof(vertices[0])*6, &vertices[3]);
glColor4f(R, G, B, 1); //range 0-1
glDrawArrays(GL_TRIANGLES, 0, numVertices); //number of floats in array divided by 6
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
次に、これを OpenGL-ES 1.1 レンダリング ループに入れます。これでうまくいくかどうか教えてください。
明確にするために、OBJ ファイルをテキスト エディターで開くと、次のようにレイアウトされます。
list of vertices
list of texture coordinates
list of normals
list of faces
顔のリストは、他の 3 つのリストのインデックスを同じ順序で参照します。たとえば、1 行は次のようになります。
f 16/4/1 4/4/4 1/1/1
つまり、面の最初の頂点は、頂点のインデックス 16、テクスチャのインデックス 4、および法線のインデックス 1 を参照します。2 番目のインデックスは、頂点のインデックス 4、テクスチャのインデックス 4、法線のインデックス 4 などを参照します。次に、面を解析し、さまざまな配列から正しい値をプルして、頂点と法線に基づく単一の float 配列に入れる必要があります。顔のインデックス。
パンゲアの人からの本をチェックしてください。ここにリンクします。彼 [Brain] が Maya または Alias を読み取るコードを表示したかどうかは覚えていません。とにかく必読です。
[編集] 彼は第 13 章で Maya ファイルの読み方を示しています
まあ、誰かがより良い方法を持っていない限り、私はこの投稿に従いました: http://heikobehrens.net/2009/08/27/obj2opengl/ . モデルを .obj としてエクスポートし、Perl スクリプトを実行して C 構造の .h に変換します。