我想将我的 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 个球体就这么大?
一种方法是在导出时创建一些低分辨率( new THREE.SphereGeometry(1, 16, 16)
)临时球体,然后将其删除,但是还有其他更好的方法吗?
编辑:我在导出过程中犯了一个错误,当我更正它时,大小下降到 6 MB,但对于 2 个球体来说仍然很大。
预先感谢您,如有任何意见,我们将不胜感激。
最佳答案
您链接的导出使用 ASCII STL format ,它本质上是相当冗长的,并且占用大量字节来存储单个三 Angular 形。每个球体都由数千个三 Angular 形组成。选项是:
- 使用二进制 STL 文件格式。这是一种更加紧凑的表示形式,每个方面使用 50 个字节。根据一些粗略计算*,每个球体大约需要 0.1MB。 Three.js 存储库有一个 binary STL exporter example .
- 降低导出数字时使用的数字精度。如果您导出
0.1
等数字而不是0.100001
,则需要更少的字符来保存结果(但会丢失精度)。 - 按照问题中的讨论,使用更少的三 Angular 形来组成球体。
- 如果您真的非常渴望使用 ASCII,您也可以尝试删除导出器生成的一些不必要的空格缩进,但这只会带来非常小的改进。
* 假设每个球体有 32 * 32 * 2 个三 Angular 形,则 32 * 32 * 2 * 50 = ~100e3 = ~0.1MB
关于javascript - 将 ThreeJS 场景导出到 STL 文件结果导致文件大小非常大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34839871/