2015-10-29 34 views
0

本網站介紹如何操作。 http://drububu.com/miscellaneous/voxelizer/index.html但我不明白如何在代碼中實現它。一個人可以建議我體驗3D模型嗎?

+0

你可以嘗試通過與三維平面相交併用立方體填充平面來「光柵化」物體(很像光柵化三角形) –

+0

@willywonka_dailyblah它就像是用不同的平面切割物體並在一個時間並存儲像素值來計算應該製作立方體的位置? – spuemaacne

+0

種,是的。將在一個月中變出一個答案 –

回答

0

步驟:

1)指定 垂直方向其確定多維數據集的定向。爲了方便起見,我將選擇它們分別作爲X軸和Z軸。 X將是交叉平面的法線,而Y,Z將是平面內的二維座標軸。

enter image description here

2)發現,圍繞您的網格最小的軸向定向的長方體(AABB)。我相信這很容易。在這種情況下,會給你6個數字,[X1,X2,Y1,Y2,Z1,Z2]。 3)假設你選擇你的立方體尺寸爲S;讓H = S/2。從X X = X1 + H開始,構造一個具有正常(1,0,0)和中心(X,0,0)的平面。

enter image description here

4)相交它的網格。數學運算&用C++實現:http://www.geometrictools.com/Documentation/ClipMesh.pdf

5)取交點所產生的邊緣。 通過找到共享公共端點的對並將它們插入某些雙向鏈表中,將它們加入。這樣他們可以被訂購到一條路徑。

enter image description here

6)查找用於該形狀的最小包圍矩形,給您[Y1,Y2,Z1,Z2]

7)從Z = Z1 + H開始,建立一個線,其變爲從(X,Y1,Z)到(X,Y2,Z)。將此行與路徑中的所有 邊相交以獲取點。沿着鏈接列表走,以避免重複測試。

enter image description here

8),與其Y座標排序的點。插入排序將做:https://en.wikipedia.org/wiki/Insertion_sort

9)爲相鄰對點,與Y座標A和B,從Y = A + H開始,放置大小S的立方體在(X,Y,Z)其中X和Z來自前面的步驟。

10)將來自步驟重複(9)對於每對點(如圖所示),而每一次遞增Y上S,直到Y>乙 - H.

enter image description here

11)重複步驟(7),每次將Z增加S,直到Z> Z2-H。

12)重複步驟(3),同時每次將X增加S,直到X> X2-H。

你完成了。免責聲明:這可能不是一種有效的方式,但它可能是最簡單和最簡單的實現方式。

相關問題