algorithm - 去除封閉網格上的遮擋面




language-agnostic filter (2)

我需要刪除隱藏的三角形網格內的一些隱藏的面孔。 我找到了一個使用MeshLab的方法 ,但是有兩個問題:1)文章說在某些情況下它可能會失敗(你能在哪種情況下成像?)2)我想以編程方式你知道任何現有的實現?)。 我甚至不知道這種簡化過濾器的名稱。

我真的很感激任何提示。


你想要做的就是刪除幾何圖形裡面的所有東西。

羅馬人的解決方案可能是可以接受的,如果你只想看一個方向的對象。 由於不可見的表面可能變得可見,所以如果旋轉相機,這不是一個可接受的解決方案。

使用floodfill可以處理多維數組,但是它也可以與3D Koordinates一起使用嗎? 因為曲面並不總是(int),並且具有(1,0,0),(0,1,0)(0,0,1)以外的其他傾角,所以這種方法在我看來也是行不通的。

算法中的情況可能會失敗:計算的遮擋值會告訴您表面的頂點是否在對象內部。 但是:雖然所有頂點都在對象內部,但表面的一部分仍然可以顯示。 考慮一下:你有三個提升的對象,每個都包含一個頂點。 雖然沒有顯示頂點,但它們之間的表面是部分可見的。

我myselve不能幫助你,因為我也在尋找一個算法,可以做到這一點。

招呼


最明顯的(但幾乎肯定不是最有效的)算法做到這一點如下:

  1. 考慮網格中的一個三角形。 在三角形的三個頂點和相機點之間繪製三條線。 (如果相機無限遠,只考慮視角的方向)。
  2. 如果所有畫出的線與三角形表面相交,則不要顯示所考慮的三角形。 如果只有其中的一部分,部分顯示三角形。
  3. 對網格中的所有三角形重複。




mesh