58

シンプルな 3D モデル (3DS MAX など) を作成し、それを Android にインポートすることはできますか?

4

6 に答える 6

42

それが私が到達した場所です:

  • 私はGoogleのAPIDemosを出発点として使用しました。そこには回転する立方体があり、それぞれが頂点とインデックスの2つの配列で指定されています。
  • 私はBlenderを使用してモデルを構築し、それをOFFファイルとしてエクスポートしました-これは、すべての頂点をリストし、次にこれらの頂点(インデックス付きジオメトリ)の観点から面をリストするテキストファイルです
  • 次に、それをオフにして、配列を含む2つのXML(1つは頂点用、もう1つはインデックス用)として書き込む単純なC++アプリを作成しました。
  • 次に、これらのXMLファイルがres / valuesにコピーされ、このようにして、それらに含まれるデータを次のような配列に割り当てることができます。
    int vertices[] = context.getResources().getIntArray(R.array.vertices);
  • また、ここで描画する面の数を手動で変更する必要がありgl.glDrawElements(GL10.GL_TRIANGLES, 212*6, GL10.GL_UNSIGNED_SHORT, mIndexBuffer);ます。-その数(この場合は212)はOFFファイルの上にあります。

ここに、このソリューションを使用する私のプロジェクトページがあります:Githubプロジェクト> vsiogap3d

于 2009-04-12T17:35:43.603 に答える
13

ASE 形式にエクスポートできます。ASE から、手動またはプログラムでコードに変換できます。Android では、頂点配列の頂点とインデックスの面が必要になります。設定する必要があることを忘れないでください

gl.glFrontFace(GL10.GL_CCW);

3ds max のデフォルトは反時計回りであるためです。

于 2009-04-12T15:19:26.490 に答える
7

Android用のmin3dを試しましたか?3ds max、obj、md2 モデルをサポートしています。

于 2012-04-26T09:47:57.340 に答える
7

それは可能であるべきです。このファイルは、プログラムでデータ ファイルとして使用できます (そのため、エミュレーターにプッシュされ、実際のデバイスにインストールするためにパッケージ化されます)。次に、Android および GLES ライブラリを使用して Java でモデル ローダーとビューアーを作成し、モデルを表示できます。

ただし、これに関する特定のリソースはおそらく限られています。3ds は独自のフォーマットであるため、サードパーティのローダーは不足しており、ほとんどがリバース エンジニアリングされています。他の形式 (blender や milkshape など) はよりオープンであり、Java でそれらのローダーを作成する方法の詳細を簡単に見つけることができるはずです。

于 2008-10-15T11:24:07.353 に答える
4

特に Android についてはわかりませんが、一般的に言えば、モデルから必要なフォーマットを手動で書き出す 3DS Max のスクリプトが必要です。

Android用が存在するかどうかはわかりません。

于 2008-10-15T11:20:13.100 に答える
4

3D オブジェクト コンバーターで 3DS MAX モデルを変換することもできます

http://web.t-online.hu/karpo/

このツールは、3ds オブジェクトを text\xml 形式または c コードに変換できます。このツールは無料ではないことに注意してください。30 日間の試用期間を試すことができます。「C」コードと XML コンバーターが利用可能です。

'c' OpenGL の出力例:

glDisable(GL_TEXTURE_2D);
glEnable(GL_LIGHTING);
glEnable(GL_NORMALIZE);

GLfloat Material_1[] = { 0.498039f, 0.498039f, 0.498039f, 1.000000f };

glBegin(GL_TRIANGLES);

  glMaterialfv(GL_FRONT,GL_DIFFUSE,Material_1
  glNormal3d(0.452267,0.000000,0.891883);
  glVertex3d(5.108326,1.737655,2.650969);
  glVertex3d(9.124107,-0.002484,0.614596);
  glVertex3d(9.124107,4.039649,0.614596);

glEnd();

または直接 'c' 出力:

Point3 Object1_vertex[] = {
       {5.108326,1.737655,2.650969},
       {9.124107,-0.002484,0.614596},
       {9.124107,4.039649,0.614596}};
long Object1_face[] = {
       3,0,1,2,
       3,3,4,5
       3,6,3,5};

これらのオブジェクトのコレクションよりも Java コードに移行できます。

于 2012-09-26T22:40:41.270 に答える