2017-04-25 32 views
0

有沒有方法可以識別模型中的節點是否有孔?查找模型中節點形狀的邊或孔

例如,我們想知道牆壁或其他開口處是否有窗戶,以及有多少這種開口及其位置。

我嘗試遍歷節點的多邊形,取其質心和正常,試圖找到一個不連續點,但它沒有給出高置信度的結果。

還試圖計算邊緣以外的直線,但有時直線出現在牆的中間。

那麼還有另一種方法可以做到這一點嗎?也許Three.js中有一個內置的函數來計算網格的邊緣?

+0

你應該檢查這篇文章[這裏](https://aboosbox.wordpress.com/2017/04/17/three-js-for-absolute-beginners/) –

+0

@Aboopallikara這是如何相關? – shinzou

+0

您是否考慮過[EWS](http://www.devdept.com/eyeshot/webservice)?您可以將模型轉換爲XML並訪問所有BRep數據,例如外部和內部面循環。 – abenci

回答

1

有可能很容易的方法來計算邊緣等,但恐怕他們不會幫助很多,除非你有非常簡單的幾何形狀,沒有特殊情況。

對於一個更一般的解決方案,我認爲你最好的選擇是使用頂點,邊,法線等從你的多邊形生成一個實體模型,以及一些能夠處理實體的3D幾何庫他們的拓撲。

這裏是想出了 「JS 3D布爾」

https://duckduckgo.com/?q=js+3d+boolean

FinalMesh布爾3D庫搜索時的第一個:

http://finalmesh.com/boolean3d.htm

這一個說,它可以處理帶孔的多邊形並優化它們,包括去除孔,去除多餘的點並從三角形生成多邊形。

給定一個多邊形P,你可以刪除它的孔,產生的空穴少多邊形Q,然後自Q減去p,以得到在P.所有的開口

我相信有很多人可以在那裏爲你評估和比較。

+0

謝謝,好主意,但我沒有看到Finalmesh有一個js庫,只是一個離線軟件和C++庫。你有推薦的另一個圖書館嗎? – shinzou

+0

哦對不起,我沒有注意到。嘗試搜索自己。這個搜索字符串可能會更好地工作:[「JavaScript庫布爾運算3d」](https://duckduckgo.com/?q=javascript+library+boolean+operations+3d)。例如,它找到[csg.js](https://evanw.github.io/csg.js/)。 –

+0

也檢查這些其他stackoverflow線程: - [three.js將兩個形狀綁定爲一個](https://stackoverflow.com/questions/8322759/three-js-bind-two-shapes-together-as-one) - [如何使用three.js進行動態csg操作](https://stackoverflow.com/questions/22138151/how-to-do-dynamic-csg-operation-with-three-js)。 –