2017-01-05 135 views
9

我想切片相對於無限平面的3D模型(在WPF中)。我正在檢查邊緣是否與無限平面相交。如果屬實,我會在交叉位置創建一個新點,所以我得到了幾個要生成上限的點,以便在切片後關閉模型。例如,如果這是橫截面,則結果如下: Example result 注意:三角測量不重要。我只需要三角形。切片3D模型?

我還需要檢測孔如下(孔標記爲紅色): Example result with holes

如果不能做到這一點,我認爲的方式(這似乎是如此),則應該如何我這麼做?切片後開發人員如何限制對象?

也有太多的困惑。例如,第一張照片的結果可能是: Confusion 我在想什麼?


編輯: 經過一番研究,我知道一兩件事,我很想念: enter image description here

輸入現在是穩健的,我需要完全相同的輸出。我如何做到這一點?

+1

我不確定我完全理解你以後的樣子。你的意思是切割這樣的模型嗎? http://www.mathalino.com/sites/default/files/images/conic-sections_0.jpg – Chairs

+1

如果你只是在視覺效果之後,我可能會爲你渲染着色器。 – Chairs

+1

我需要修改幾何圖形@Chairs。結果將被3D打印。 – None

回答

5

過去,我用BSP做過這種事。

對不起,太模糊了,但它不是一個小問題!

基本上,您可以將三角形網格轉換爲BSP表示形式,將剪裁平面添加到BSP,然後再將其轉換回三角形。

+0

該鏈接似乎被打破。你有鏡子嗎? – code11

+0

對不起,現在應該修復。 –

2

建立關於zwcloud的說法,您的觀點表示模糊不清。你根本沒有足夠的分數來確定任何凹陷/凹口的實際位置。然而,如果你可以通過獲得額外的點來解決這個問題(你需要段的中點),那麼你只需要將這些點扔進shrinkwrap算法中即可。那麼至少你會有帽子。

這些孔是有點棘手。也許你可以通過查看收縮包裝計算輸出中排除的點並試圖找到其他形狀,試探性地偏向位於新創建的多邊形質心附近的點。

另外的想法:如果你可以限制你自己的凸多邊形只有一個相似的凸孔,問題將是很多更容易解決。

4

由於code11表示已經有太多的數據來解決這個問題,所以這些要點還不夠。

而不是削減邊緣產生新的點,你應該剪切整個三角形,這會給你新的邊緣。這樣,而不是一堆點,你會有一堆連接的邊緣。

在你的例子中,有了這個單獨的修改,你會得到3個多邊形 - 這幾乎是你所需要的。那麼你將需要只計算正確的三角測量。

查找CSG term或Constructive Solid Geometry

編輯:

如果通用CSG是你太慢了,你已經裁剪邊緣,那麼我建議嘗試的「耳朵削波」算法。

這裏的一些描述與支持孔: https://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf

您也可以嘗試 '掃描線' 的辦法:在SO http://sites-final.uclouvain.be/mema/Poly2Tri/

而且類似的問題,有很多想法: Polygon Triangulation with Holes

我希望它有幫助。

+1

CSG對於我的目的太慢了,我已經更新了我的問題,以便輸入是一組連接的邊。 – None

+0

我發現了幾個算法,也許這會有所幫助。 – kolenda