是否可以创建一个简单的3D模型(例如在3DS MAX中),然后将其导入Android?
答案 0 :(得分:37)
这就是我要去的地方:
int vertices[] = context.getResources().getIntArray(R.array.vertices);
gl.glDrawElements(GL10.GL_TRIANGLES, 212*6, GL10.GL_UNSIGNED_SHORT, mIndexBuffer);
- 您可以在OFF文件的顶部找到该数字(在本例中为212)在这里,您可以找到使用此解决方案的项目页面:Github project > vsiogap3d
答案 1 :(得分:12)
您可以将其导出为ASE格式。 从ASE,您可以手动或以编程方式将其转换为您的代码。 在Android中,您将需要Vertex用于顶点数组和面向索引。 不要忘记你必须设置
gl.glFrontFace(GL10.GL_CCW);
因为3ds max默认为逆时针。
答案 2 :(得分:6)
应该可以。您可以将该文件作为程序的数据文件(因此它将被推送到模拟器并打包以便安装到实际设备上)。然后,您可以使用Android和GLES库在Java中编写模型加载器和查看器来显示模型。
这方面的具体资源可能有限。 3ds是一种专有格式,因此第三方装载机供不应求,而且大多是逆向工程。其他格式(例如blender或milkshape)更加开放,你应该能够很容易地找到在java中为它们编写加载器的细节。
答案 3 :(得分:6)
你有没有尝试过min3d for android?它支持3ds max,obj和md2模型。
答案 4 :(得分:3)
不确定Android的具体情况,但一般来说,您需要3DS Max中的脚本,手动从模型中写出您需要的格式。
至于Android是否存在,我不知道。
答案 5 :(得分:2)
您也可以使用 3D对象转换器
执行此操作此工具可以将3ds对象转换为text \ xml格式或c代码。
打开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转换器可用于此期间。