json - Three.js:减少模型文件大小的方法?

标签 json three.js

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

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

最佳答案

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

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

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

例如:

f v1 v2 v3

虽然经过简化,但这使得 OBJ 文件更难以使用,并且在 Three.js 中使用 ObjLoader 和 ObjLoader2 存在加载限制,而加载 json 文件时则不存在这些限制。

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

Exporters

Loaders

无论使用 json 还是 obj,在向浏览器提供 3D 模型时,使用 JIT GZIP 正确设置服务器至关重要。请参阅this decent article我刚刚通过谷歌找到的。这将简化 3D 数据的服务。

减小 3D 模型尺寸以便在网络或游戏中交付的正确方法是 use mesh decimation plugins .

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

关于json - Three.js:减少模型文件大小的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45144656/

相关文章:

javascript - Angular $http 服务不加载 json 文件

json - 使用 Powershell 将文件内容转换为可以使用 JSON 传输的字符串

html - Three.js Hello World 和包含文件

javascript - 如何在 Cannon.js 中对对象主体(父/子)进行分组?

javascript - 虚线移动线 react 三纤维

javascript - 如何使用 Rails 或 Javascript 提取 URL 内容

javascript - 状态更改时 React 组件不会重新渲染

python - Scrapy 处理 JSON 响应

javascript - 将 THREE.js 着色器转换为 PIXI.js

javascript - Three.js MeshBasicMaterial 线框不会渲染