Android 如何减小3D.obj文件的大小

Android 如何减小3D.obj文件的大小,android,opengl-es-2.0,.obj,Android,Opengl Es 2.0,.obj,我正在用Android OpenGLES2开发一个游戏。使用.obj文件绘制三维模型,由于.obj文件的大小(即3MB),加载时间太长。请建议一种最小化obj文件大小的方法。您应该使用现成的二进制数据,而不是解析移动设备上的obj文件。这太慢了。 第一个选项,通过减少形成对象的三角形数量来降低对象的复杂性 第二个选项,尝试在单个块中读取OBJ文件,而不是逐行读取。这将有利于设备的读取时间 第三个选项,尝试将OBJ的基本转换器构建为二进制格式。这听起来很傻,但是很容易实现,因为在内存中加载模型时,

我正在用Android OpenGLES2开发一个游戏。使用.obj文件绘制三维模型,由于.obj文件的大小(即3MB),加载时间太长。请建议一种最小化obj文件大小的方法。您应该使用现成的二进制数据,而不是解析移动设备上的obj文件。这太慢了。

  • 第一个选项,通过减少形成对象的三角形数量来降低对象的复杂性
  • 第二个选项,尝试在单个块中读取OBJ文件,而不是逐行读取。这将有利于设备的读取时间
  • 第三个选项,尝试将OBJ的基本转换器构建为二进制格式。这听起来很傻,但是很容易实现,因为在内存中加载模型时,已经进行了初始转换(文本到二进制)。此时,您只需要将内存中的二进制文件转储到一个文件中。从那里,您可以编写新的加载程序(在逻辑上与转储程序相同)
  • 第四种选择。这是非常不实际的,尝试用自己的算法压缩磁盘上文件的内容。读它压缩。在内存中展开。这几乎就是apk文件中发生的情况。从理论上讲,这是一个很大的努力,可能会导致在一天结束时浪费时间和表现不佳
不幸的是,这些是唯一可用的选项

建议#1

我知道这是一篇比较老的帖子,但如果它对任何人都有帮助的话

我能够使用AccuTrans 3D大幅减小OBJ文件的文件大小。

它可以将3D文件转换为多种不同的文件格式。如果导出为OBJ并选择设置自己的选项,则可以减少顶点的小数位数,设置比例因子,并包括或消除顶点法线、纹理UV和组名称等内容。使用这些选项可以根据您熟悉的细节、精度或平滑程度将某些文件大小减半

只要小心一点,玩一玩,直到你明白了选择。消除顶点法线将删除对象平滑,这对于您的应用程序来说可能是也可能是不可接受的。根据使用的设置,降低顶点坐标精度可能会创建一些像素化

免责声明:我与AccuTrans或其所有者没有任何关联。这是我使用的一个在线3D打印服务推荐的

建议2


在您的服务器上,如果您将OBJ文件作为mime类型text/plain提供,则可以使用gzip压缩。

谢谢您的建议。请建议如何做到这一点。。我找不到任何帮助/eample Online对于一个游戏模型来说,听起来有很多三角形,你能减少它吗?