将threeJS场景导出为STL文件会导致文件大小非常大

时间:2016-01-17 15:10:11

标签: javascript three.js filesize exporter

我想将我的threeJS场景导出到STL文件。 我正在使用此导出程序:https://gist.github.com/kjlubick/fb6ba9c51df63ba0951f

我的问题是我得到的文件大小。例如,对于4个球体(通过new THREE.SphereGeometry(1,32, 32)创建),我得到了一个15MB的文件,如果您认为这个球在http://archive3d.net/?a=download&id=469e26a6小于0.5 MB,我认为这个文件很大。

有没有办法减少文件大小?为什么只有4个球体这么大? 一种方法是在导出时创建一些低res(new THREE.SphereGeometry(1, 16, 16))临时球体并在之后删除它们,但还有其他更好的方法吗?

编辑:我在导出过程中独立完成了一个错误,当我纠正它时,它的大小下降到6 MB,但对于2个球体来说仍然非常大。

提前感谢您,我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

您已链接的导出使用ASCII STL format,其本质上非常详细,并占用大量字节来存储单个三角形。你的每个球体都将由数千个三角形组成。选项是:

  • 使用二进制STL文件格式。这是一个更紧凑的表示,每个面使用50个字节。根据包络计算的一些背面*,每个球体需要大约0.1MB。 three.js存储库有binary STL exporter example
  • 降低用于导出数字的数字精度。如果您导出0.1而非0.100001之类的数字,则保留结果所需的字符数较少(但您将失去精确度)。
  • 使用较少的三角形来构成您的球体,如问题中所述。
  • 如果您真的非常迫切希望使用ASCII,您也可以尝试删除导出器生成的一些不必要的空格缩进,但这只会产生非常小的改进。

*假设每个球体有32 * 32 * 2个三角形,32 * 32 * 2 * 50 = ~100e3 = ~0.1MB