2016-01-17 47 views
0

我想将我的threeJS场景导出到STL文件。 我正在使用此出口商:https://gist.github.com/kjlubick/fb6ba9c51df63ba0951f将三个JS场景导出到STL文件结果到非常大的文件大小

我的问题是我得到的文件大小。例如,对于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))温度范围,然后删除它们,但是还有其他更好的方法吗?

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

在此先感谢您的意见,我们将不胜感激。

+2

它的文本3D格式的性质。如果你有很多三角形,文件将会很大。也许你可以尝试二进制STL:https://en.wikipedia.org/wiki/STL_%28file_format%29#Binary_STL – kovacsv

回答

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

+0

感谢您的答案。 1.二进制stl是一个好主意,但目前没有任何二进制输出器,但现在我正在努力自行开发一个二进制输出器。我错过了任何js stl bin。出口商? 2.我试过了你的想法,但就尺寸而言,它给了我很少的结果 – ThanosSar

+0

3.我做到了这一点,它真的帮了大忙! – ThanosSar

+0

4.我不是绝望的使用ascii,我只是还没有一个二进制输出。 – ThanosSar