0

私は、opengl android でいくつかの複雑な 3d オブジェクトを作成するタスクを与えられました。グーグルで調べたところ、Blender を使用して 3D オブジェクトを作成し、Android プロジェクトにインポートされていることがわかりました。

4

3 に答える 3

0

...それからそれはアンドロイドプロジェクトにインポートされます

実際には、通常はインポートされませんが、ターゲットアプリケーションによってファイルからロードされるだけです。Cコードを出力したり、OpenGL呼び出しを書き出したりするBlenderのエクスポートスクリプトがいくつかあります。それらを使用しないでください、それらはあなたのプログラムを台無しにするだけです。

OpenCTMのような3Dオブジェクトストレージ用の優れたライブラリがいくつかあります

于 2011-04-28T10:24:24.153 に答える
0

必要なのは、次のように、頂点/法線を表す float の配列です。

float [ ]  vertices = {
VertexX, VertexY, VertexZ, NormalX, NormalY, NormalZ,
VertexX, VertexY, VertexZ, NormalX, NormalY, NormalZ,
VertexX, VertexY, VertexZ, NormalX, NormalY, NormalZ,
VertexX, VertexY, VertexZ, NormalX, NormalY, NormalZ,
..., ..., ..., ..., ..., ...,
};

各面には、それに関連付けられた 3 つの一意の頂点ラインがあります。この配列を OBJ ファイルまたは必要な形式から作成したら、理解する必要があるコードを使用して、次のようにしてレンダリングできます。

glVertexPointer(3, GL_FLOAT, sizeof(vertices[0])*6, &vertices[0]);
glNormalPoitner(GL_FLOAT, sizeof(vertices[0])*6, &vertices[3]);
glDrawArrays(GL_TRIANGLES, 0, numVertices);

obj ファイルがどのように配置されているかについては、OBJ 形式に関するウィキペディアのページを参照してください。形式を理解すれば、ファイルの解析は非常に簡単です。

于 2011-05-02T14:37:46.317 に答える