【问题标题】:Three.js: ways to reduce file size of models?Three.js:减小模型文件大小的方法?
【发布时间】:2017-12-22 00:22:33
【问题描述】:

目前我使用 ObjectLoader 将所有模型加载到场景中。我还使用 Three.js 编辑器来应用我的纹理。我目前的做法是从 3Ds Max 导出 OBJ 文件并将其导入 Three.js 在线编辑器,然后在其中添加纹理。

OBJ 文件大约 30mb,但导出的 JSON 文件几乎 100mb。怎么会有这么大的差别?纹理尺寸非常小,所以这不是原因。有没有人对此有任何见解或有更好的方法来做到这一点?

【问题讨论】:

  • 为什么不直接使用 OBJLoader 将 .obj 文件加载到 three.js 中?
  • 我这样做只是因为编辑器在应用纹理时非常方便。我以前从未使用过 OBJ 加载器,但我想我会尝试一下。还有没有办法进一步减小文件大小?谢谢。
  • 好的,谢谢您的指导。

标签: json three.js


【解决方案1】:

您的原始 obj 文件可能不包含法线和 UV 列表。当您添加纹理时,仅这一事实就可以轻松地将文件推到 300% 大小。

OBJ 是一种传统的逐行格式。 JSON 是一个多维对象,包含所有内容。 JSON 中的数组和对象在不考虑的情况下带有重要的足迹,例如逗号、引号、括号和重要的换行符,以及重复标记的可能性。 three.js 的开发者在 3d json 格式中非常聪明,不会重复元信息。

相比之下,OBJ 格式在每行仅使用简单的一个和两个字母指示符,每行使用空格分隔的值。

例如:

f v1 v2 v3

虽然经过了简化,但这使得 OBJ 文件更难处理,并且在加载 json 文件时不存在三个.js 中的 ObjLoader 和 ObjLoader2 的加载限制。

您选择哪种文件类型取决于您。 Threejs 有各种格式的加载器和导出器,例如 STL 和 Collada,并包括 obj 导出。

Exporters

Loaders

在使用 json 或 obj 的任何一种情况下,当向浏览器提供 3d 模型时,使用 JIT GZIP 正确设置您的服务器至关重要。见this decent article我刚刚通过谷歌找到。这将简化 3d 数据的服务。

减少 3d 模型尺寸以在网络上或游戏中交付的正确方法是use mesh decimation plugins

这并不重要,但我更喜欢在我的数据流中使用 OBJ 以符合各种 3d 工具集,因为它得到了广泛的支持。

【讨论】:

  • 感谢您的详细解释
【解决方案2】:

您可以通过将数字四舍五入到小数点后 1 位或 2 位来减少(很多)obj 文件的大小。
guruware OBJexporter 可以自动为您执行此操作。只需在 Precision 输入中输入 1 或 2。

【讨论】:

  • 在哪种情况下最好只使用二进制文件?
  • 大文件和高速编码/解码?
  • 感谢您的建议
猜你喜欢
  • 2021-09-07
  • 1970-01-01
  • 1970-01-01
  • 2018-10-16
  • 2011-04-09
  • 2012-03-26
  • 1970-01-01
  • 2011-12-27
  • 2010-10-08
相关资源
最近更新 更多