3D模型體素化

2021-06-27 21:33:48 字數 1188 閱讀 3671

體素化(voxelization)是將物體的幾何形式表示轉換成最接近該物體的體素表示形式,產生體資料集,其不僅包含模型的表面資訊,而且能描述模型的內部屬性。表示模型的空間體素跟表示影象的二維畫素比較相似,只不過從二維的點擴充套件到三維的立方體單元,而且基於體素的三維模型有諸多應用。

由於使用的需要,需對模型進行體素化操作,這裡採用了一種簡單但卻有效的操作方法。首先設定模型體素化的解析度,假設為n * n * n,之後的操作主要包括兩部分:

1.      對模型表面的體素化

這一步的操作比較簡單,首先計算出模型的aabb包圍盒,然後根據空間解析度對包圍盒進行劃分,得到每個大小為(x/n) * (y/n) * (z/n)空間畫素列表。然後對構成3d模型的多邊形或三角形列表進行遍歷,得到這些基本體元所對就應的包圍盒,然後由aabb求交運算得到這些基本體元所能影響到的體素單元,將這些體素單元做為待判斷的基本物件。為了做進一步的精確判定,使用三角形與aabb的求交演算法確定這些基本體元所能影響到最終體素,並將這些體素標記為非空,這樣就完成了對3d模型表面的體素化操作。

2.      對模型內部的體素化

將模型表面體素化的操作進行完之後即可得到對模型體素表示的乙個「外殼」,接下來要做的操作就是進行模型的內部體素化操作。這裡採用一種簡單的方法。首先將對應的3d模型建立空間八叉樹,這棵八叉樹主要用於進行基本體元麵片的求交操作。然後對模型aabb中的所有空體素,從其中心位置以軸對齊方向來發射兩條射線,這兩條射線的方向相反,但基本方向都是軸對齊的。對於這兩條的射線利用空間模型的八叉樹來得到其與3d模型的相交位置,並得到相交點的法向量及到相交點的距離,然後根據這兩點法向量之間的關係來判斷得到當前體素是在3d模型的內部或是在3d模型的外部。將這樣的操作施加於每乙個空的體素之後就可以完成對3d模型內部的體素化操作。

但是將這樣的操作施加於每乙個空的體素速度比較慢,故而此處可以採用掃瞄的方法來進行加速處理。如果判斷得到某個體素的位置為模型內部後,就可以根據射線的方向及這兩條射線與模型的交點處的距離來對當前體素相鄰的體素進行掃瞄,這樣不需要再做判斷就可以標記出相鄰體素的狀態,這樣就加速了整個模型內部的體素化操作。

但是上述這種方法具有侷限性,對於非完全閉合的3d模型,這種方法不能很好地進行內部體素化操作,不過自己工程的需要中,這種方法就已經適用了,而且簡單易行。

三維模型的主成分分析(3d model pca, cpca, npca)

好久沒有更新部落格了……

3d模型不能解組 3D列印服務

光敏樹脂3 列印服務 學生作品定做 小批量生產 3d列印 光固化光敏樹脂手板模型製作3d列印服務 3d列印 光 3d列印 光固化 sla 光敏樹脂 手板模型製作 3d列印服務 3d列印 光固化 sla 光敏樹脂 手板模型製作 3d列印服務 原理 sla成型 立體光刻技術 材料 abs光敏樹脂 強度和...

3D區域性光照模型

對於光照模型,從演算法理論基礎而言,可分為兩類,一類是基於物理理論的光照模型,另一種是基於經驗的模型。從使用角度而言,可分為全域性光照模型和區域性光照模型,本文簡單地介紹了幾種最基礎的經典區域性光照模型.1 區域性光照模型之lambert lambert光照模型是乙個非常簡單的模型,早在200多年前...

Unity UI嵌入3D模型

目的 在ui中加入3d模型 方案一 使用額外相機渲染ui背景,3d模型 步驟 使用額外相機渲染背景和3d模型,通過設定相機depth來控制3d模型相機和ui相機的顯示順序,來達到先繪製背景和模型,再繪製其他ui的效果 問題 渲染出來的模型有鋸齒 方案二 使用rendertexture,步驟 將模型渲...