3DモデルをAndroidにインポートする方法はありますか?
質問
単純な3Dモデルを作成して(たとえば3DS MAXで)、Androidにインポートすることはできますか?
解決
それが私が到達した場所です:
- 開始点としてGoogleのAPIDemosを使用しました-そこには回転するキューブがあり、それぞれが頂点とインデックスの2つの配列で指定されています。
- Blenderを使用してモデルを構築し、OFFファイルとしてエクスポートしました。これは、すべての頂点をリストし、これらの頂点(インデックス付きジオメトリ)に関して面するテキストファイルです
- 次に、これをオフにして、配列を含む2つのXML(頂点用とインデックス用)として書き込む単純なC ++アプリを作成しました
- これらのXMLファイルはres / valuesにコピーされ、この方法で、含まれるデータを次のように配列に割り当てることができます。
int vertices [] = context.getResources()。getIntArray(R.array.vertices);
- ここで描画する面の数も手動で変更する必要があります:
gl.glDrawElements(GL10.GL_TRIANGLES、212 * 6、GL10.GL_UNSIGNED_SHORT、mIndexBuffer);
-あなたはそれを見つけることができますOFFファイルの上部にある番号(この場合は212)
ここで、このソリューションを使用する私のプロジェクトページを見つけることができます。 Githubプロジェクト> vsiogap3d
他のヒント
ASE形式にエクスポートできます。 ASEから、手動またはプログラムでコードに変換できます。 Androidの頂点配列には頂点が、インデックスには面が必要です。 設定する必要があることを忘れないでください
gl.glFrontFace(GL10.GL_CCW);
3ds maxのデフォルトは反時計回りであるため。
それは可能であるはずです。ファイルをプログラムのデータファイルとして使用できます(そのため、エミュレータにプッシュされ、実際のデバイスにインストールするためにパッケージ化されます)。その後、AndroidおよびGLESライブラリを使用してモデルローダーとビューアをJavaで記述し、モデルを表示できます。
これに関する特定のリソースはおそらく制限されています。 3dsは所有権の形式であるため、サードパーティのローダーは供給不足で、ほとんどがリバースエンジニアリングされています。他の形式(ブレンダーやミルクシェイプなど)はよりオープンであり、それらのローダーをJavaで簡単に記述する詳細を見つけることができるはずです。
Android向けにmin3dを試しましたか? 3ds max、obj、md2モデルをサポートしています。
Androidについて具体的にはわかりませんが、一般的に言えば、モデルから必要な書式を手動で書き出す3DS Maxのスクリプトが必要です。
Androidに存在するかどうかはわかりません。
3Dオブジェクトコンバーター
でもこれを行うことができますこのツールは、3dsオブジェクトをtext \ xml形式またはcコードに変換できます。
open gl 'c'出力の例:
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コードに置き換えることができます。
P.s。このツールは無料ではなく、30日間の試用期間のみ使用できます。ただし、この期間は「c」コードとXMLコンバーターを使用できます。