2016-01-17 38 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