多域體積網格模型建構 - 多面幾何網格器與八叉樹網格器的原理及應用

多域體積網格模型建構 - 多面幾何網格器與八叉樹網格器的原理及應用

在工程與生醫模擬中,體積網格(Volume Mesh)是連接幾何模型與數值求解的重要基礎,其解析度、元素品質與區域連通性會直接影響計算穩定性、結果精度及所需資源。當模型同時包含尺度差異顯著的解剖組織,以及具有尖角、薄層或細小結構的工程元件時,單一建網格方法往往難以兼顧幾何保真、生成穩健性與計算成本。為處理這類問題,可利用八叉樹網格化器(Octree Mesher)建立複雜解剖區域的自適應網格,再以多面幾何網格化器(Faceted Geometry Mesher)保留電極或線圈等裝置的尖銳特徵,最後將兩者整合為連續的多域體積網格(Multidomain Volumetric Mesh)。

 

本文以腦電圖(EEG)電極模型貼附頭部為例,說明兩種網格方法的基本原理、適用條件、參數設定與混合應用流程,並介紹邊界建立及網格品質驗證方法,協助使用者建立從幾何分析到網格評估的完整觀念。

 

內容概要:

  • 說明 Faceted Geometry Mesher 與 Octree Mesher 的基本原理、優勢與限制 
  • 根據幾何品質、特徵尺度與拓撲需求選擇合適的建網格方法 
  • 理解全域尺寸、局部細化、元素總量與背景區域等主要參數 
  • 完成裝置網格嵌入、邊界 Patch 建立與網格品質檢查的基本流程

1. 多域體積網格劃分方法 

 

多域體積網格(Multidomain Volumetric Mesh)是由多個材料區域組成的三維非結構網格。每個區域由四面體元素離散,區域之間則以共享介面連接。建立這類網格時,需要先確認三項條件: 幾何表面是否封閉且可靠、尖銳特徵與連通關係是否必須精確保留,以及可接受的元素數量與計算成本。 

 

工程 CAD 模型通常具有規則的 NURBS 邊界與明確尖角; 解剖模型則可能包含自交、表面噪聲、極薄結構,以及尺寸差異很大的器官。Sim4Life 的多域網格提供 Faceted Geometry 與 Octree Based 兩種不同的網格劃分方法。前者從邊、面到體積逐層建立網格; 後者以自適應八叉樹離散空間,依幾何與指定解析度細分,再生成四面體。混合模式允許把已完成的非結構網格嵌入八叉樹網格,使各類幾何採用符合其特性的演算法。
 

面向/方法 Faceted Geometry Octree Based 混合式流程
主要輸入 高品質實體(NURBS 幾何)與具尖角裝置 複雜或品質較差的封閉表面與實體 解剖表面加已建好的裝置網格
優勢 幾何精度高且拓撲接近輸入 穩健、快速且適合多尺度模型 同時保留裝置特徵與解剖模型穩定性
限制 自交表面可能在體積填充階段失敗 尖角重建有限且不保證原始拓撲 需處理重疊、介面與局部尺寸銜接
典型用途 電極、線圈、植入物與工程零件 Virtual Population 與外部 STL 頭部模型搭配 EEG 電極

2. 多面幾何網格劃分

 

多面幾何網格劃分(Faceted Geometry Meshing)先離散尖銳邊緣,再建立表面三角形,最後以四面體填滿封閉區域。這個順序讓裝置邊界與拓撲得到較精確的表示,因此適合高品質 CAD。代價是輸入表面若存在自相交(self-intersection)或局部缺陷,錯誤可能一路傳到最後的體積填充。大量三角表面也會增加前處理時間,所以沒有必要時,不應先把 NURBS 區域全部轉成三角網格(Triangle Mesh)。
 


參數設定

 

(1) 表面與體積網格的基本尺寸

 

• Remesh Surface(s): 重新建構表面網格 

允許網格器依表面設定重新生成三角網格。取消後,不應期待既有三角表面依這些尺寸參數重新細化;但 NURBS 實體仍需離散成表面才能生成四面體 

 

• Target Surface Edge Length: 表面網格的目標邊長 

控制表面三角網格的基準尺寸(網格解析度)。調小可增加表面解析度與三角形數量;調大可減少元素,但可能降低幾何細節的解析能力。 

 

• Minimum Edge Length: 最小邊長 

用來限制表面細化,避免曲率或狹縫條件使尺寸過度縮小。它不是品質保證,也不宜理解成所有最終四面體邊長都絕對不得小於此值。 

 

• Target Edge Length: 體積網格的目標邊長 

控制填充區域內四面體的目標尺寸。調小會增加內部解析度與四面體數量;調大可讓內部較粗。靠近細密表面時,元素仍需配合表面尺寸及過渡條件。 

 

(2) 表面與體積網格的尺寸過渡

 

• Max Surface Growth Rate: 最大表面尺寸成長率 

控制範圍為相鄰表面元素的尺寸變化。越接近 1,尺寸過渡通常越平緩,細網格會延伸得更遠;較大值允許更快轉為粗網格。 

 

• Max Volumetric Growth Rate: 最大體積尺寸成長率 

控制範圍為相鄰體積元素的尺寸變化。較小值使四面體尺寸過渡更平緩,但通常增加元素數量;較大值允許內部更快粗化。 

 

(3) 曲率解析與尖銳特徵辨識

 

• Max Spanning Angle: 最大跨越角 

控制曲面解析度,即針對高曲率區域中精細調整元素尺寸。 在彎曲區域,相鄰表面元素的法向變化較大,需要更小的元素才能符合角度要求。調小角度曲面通常細化得更多,更能貼近曲率; 調大角度允許較大的法向變化,表面可以較粗。 

 

• Feature Angle: 特徵角 

控制哪些邊被視為尖銳特徵。調小角度較輕微的折角也會被辨識為特徵邊,可能增加需要處理的邊緣; 調大角度只有較明顯的折角會被辨識,部分較小折角可能不再受到同樣的特徵約束。 

 

(4) 狹縫與薄層的尺寸控制

 

• Proximity-Based Sizing: 鄰近距離尺寸控制 

啟用後可自動尺寸調整功能,該功能會縮小元素尺寸,使指定數量的元素能恰好填滿間隙。
 

a. 設定值 0: 關閉鄰近距離尺寸控制。 

b. 設定值 0 < r < 1: 通常會生成較接近等向性的元素,狹縫方向的元素數量約為 1/r。 

c. 設定值 r > 1: 可能產生非等向性或偏斜元素,不能解讀成越大越細。 

 

(5) 局部尺寸與區域優先序 

 

• Mesh Sizing | Target Facet Size: 目標網格面尺寸 

針對物件或群組設定局部網格尺寸。當只有電極尖端、細線或特定薄層需要細網格時,可使用局部設定,避免整個模型都採用最小尺寸。 

 

• Priority of Domain: 區域優先序 

處理幾何重疊。Faceted Geometry 方法會以優先序執行布林處理,高優先序區域會從低優先序區域中扣除。

3. 八叉樹網格劃分

 

Octree Mesher 反覆細分立方空間,並以點或單元位於材料內外的判定來適應幾何。這使它對噪聲、外部 STL 與尺度差異大的解剖模型較有容忍度,也解釋了其限制: 解析度不足時,尖角會被離散化,細小孔洞或狹長連通區也可能改變拓撲。Target Edge Length 同時影響元素數量,以及網格可以辨識的最小幾何尺度。
 

 

參數設定


(1) 全域網格尺寸 

 

• Target Edge Length: 目標邊長 

指定輸入幾何表面附近的全域目標邊長。調小通常提高幾何解析度,也增加四面體數量;調大則使網格較粗。它不是所有四面體邊長的固定值。0 表示網格會持續細化,直到元素預算耗盡。 

 

• Min Edge Length: 最小邊長 

限制八叉樹細化階段的最小尺寸。0 表示依目標邊長自動計算,不代表允許零長度元素。 

 

• Max Edge Length: 最大邊長 

限制八叉樹細化階段的最大尺寸。0 表示自動計算,可讓遠離需細化區域的網格適度粗化。 

 

(2) 元素數量預算(element budget) 

 

• Max Number of Tetrahedra: 最大四面體數量 

用來限制細化的計算規模。數值越大,網格器越有機會滿足細緻的尺寸要求,但記憶體需求、生成時間及後續求解成本也可能增加。 

當數量超過此門檻達 20% 以上時,八叉樹細化會停止。這是細化預算與停止判據,不能將它視為最終四面體數量絕不超過五百萬的嚴格上限。若尺寸要求過細、預算卻不足,也不能預期所有區域都达到指定解析度;生成後仍須檢查關鍵結構。 

 

(3) 背景域與外擴距離 

 

• Padding Distance: 背景外擴距離 

控制輸入幾何與八元樹網格外邊界之間的安全距離。增加此值可擴大背景範圍,但也可能增加元素數量。 

 

• Remove Background: 移除背景 

未勾選時保留背景四面體;勾選時移除背景四面體。 

 

(4) 嵌入網格周圍的填充方法 

 

• Use Delaunay: 使用德洛內網格法 

控制既有嵌入四面體網格與周圍八元樹網格之間的空間,如何生成連接網格。 

 

a. 勾選: 使用 Delaunay方法; 相較替代方法較穩健。 

b. 未勾選: 使用 Advancing Front 推進前緣法; 穩健性較低,但可能產生品質較高的元素。 

 

(5) 局部表面尺寸 

 

• Target Facet Size: 目標表面三角形尺寸 

指定群組所屬區域的邊界三角形目標尺寸。 

 

(6) 表面細化與內部細化 

 

• Refine volume: 細化區域內部 

決定局部細化的空間範圍。未勾選: 只在區域表面附近細化八叉樹網格; 勾選: 在區域內部也細化八叉樹網格。 

 

(7) 是否重新建構既有三角表面 

 

• Disable Remeshing: 停用表面重新網格化 

只適用於三角表面網格輸入。未勾選: 允許對該區域的三角表面進行局部重新網格化; 勾選: 停用該區域的表面重新網格化,即不能預期既有表面一定會重新調整成 Target Facet Size 所要求的尺寸。

4. 頭部與電極模型多域體積網格劃分案例的完整流程 

 

本示例使用 IXI025 頭部模型與 EEG 10-10 系統座標。IXI025 模型 .zip 檔案可透過此連結或在 |X|025 Model v1.0.0 頁面下載,其中 model 文件夾包含多個 STL 解剖表面、fiducials 文件夾包含一個 EEG 10-10 系統基準點的 CSV 檔案(EEG_1010_System.csv)。將所有組織 .stl 檔案匯入 Sim4Life 後,以 Nz、Iz、RPA、LPA 四個定位點在 Skin 上建立 10-10 系統,再把圓柱形電極範本放到各測點(操作流程請參閱 "Sim4Life MR 影像 3D 建模與 10-10 系統電極自動放置操作步驟 " 一文)。接著把幾何分成兩組處理: 頭部解剖表面交給 Octree Mesher,電極則先由 Faceted Geometry Mesher 建立裝置網格。

 

(1) 修復皮膚表面並去除與電極重疊的體積 

 

在頭部 10-10 系統建立的電極會穿入皮膚,因此必須先移除兩者的重疊體積。首先對 Skin 模型執行 "Make Manifold",再複製電極與皮膚並進行布林相減。對封閉三角表面而言,流形(manifold)表面要求每條內部邊具有一致且合理的鄰接關係;先修復此類拓撲問題,可降低布林運算失敗的機率。本範例只處理 CP4 與 F4 兩顆電極,以縮短示範的計算時間。
 

➀ 選擇 Skin 組織後,在工具欄點選 Mesh Tools | Mesh Doctor,然後在 Controller 視窗中的 Options 區塊按下 Make Manifold 按鈕以修復拓撲問題
 

 

➁ 分別複製一次 CP4、F4 電極與複製兩次皮膚模型,依序點選電極與皮膚後,使用 Boolean | Subtract 工具進行布林相減(CP4、F4 電極各執行一次)
 

 

➂ 將執行布林運算後的 CP4、F4 電極去參數化(按右鍵點選 Remove Parametrization),並將兩電極放入一個群組 Selected Electrodes
 

 

(2) 以多面幾何網格生成器(Faceted Geometry Mesher)建立裝置網格 

 

布林裁剪後的電極屬於具尖銳特徵的實體。對於這類幾何形狀,優先使用 Faceted Geometry Mesher (多面幾何網格生成器) 作為網格劃分引擎。

 

在同時選擇 CP4、F4 電極後,到工具欄點選 Mesh Tools | Multidomain Mesh,Controller 視窗隨後會出現 Method Selection 及 Options 設定區塊。Method Selection 區塊中的 Meshing Engine 設定為 Faceted Geometry; 本案例將電極模型的表面目標邊長(Target Surface Edge Length)設為 0.5,體積目標邊長(Target Edge Length)設為 2.0,最小邊長(Minimum Edge Length)設為 0.2,並啟用表面重建(Remesh Surface)。這組數字應實際視模型單位與所需精度調整,不能直接當作所有電極的通用值。 所有長度參數都沿用模型的長度單位。設定數值前,必須先確認幾何匯入後的單位,並把目標邊長與電極厚度、曲率半徑及最小間隙相比較。

 

執行 Run,電極完成網格劃分後將多面幾何網格化模型命名為 Device Mesh。


 

(3)  以局部尺寸控制與電極網格嵌入建構八叉樹混合體積網格

 

本步驟透過 Python API 呼叫八叉樹網格器(Octree Mesher),為由封閉三角曲面網格(TriangleMesh 實體)表示的頭部模型建立體積網格。此方法適合處理複雜的解剖結構,並可結合局部尺寸控制與既有非結構化電極網格的嵌入,在提高重要組織解析度的同時,保留電極的幾何特徵,形成混合體積網格。

 

➀ 讀取模型中的指定電極

 

首先匯入 S4L 模型模組,再取得 Cloned Templates 群組的電極。程式依名稱篩選出 CP4_electrode 與 F4_electrode,存入 selected_electrodes 清單。 這裡取得的是後續聯集使用的電極幾何,不是最後嵌入的電極體積網格。

 

➁ 建立填補幾何及其局部設定



Unite() 將選定電極幾何進行聯集,並將結果命名為 Filling Material。加入此幾何的目的是處理電極與皮膚附近可能出現的小縫隙;但聯集本身只會合併既有幾何,能否填補縫隙仍取決於結果實際涵蓋的空間。

 

接著建立 local_opt_dict,用來保存物件與局部設定的對應,並將填補幾何的設定加入其中。之後的組織設定也會加入同一個字典,因此不會清除這筆設定。 

 

此外,Filling Material 優先序(Priority)設為 -1,其設計意圖是讓填補幾何具有較低的區域優先序。其他組織的優先序預設為 0,在支援優先序的重疊處理中,填補幾何會讓位給組織,只占據未被組織占用的部分,以避免覆蓋原有解剖結構。

 

➂ 設定全域八叉樹網格參數

 


這部分設定整體網格的基本條件:

• MaxNumberOfTets: 設定四面體元素預算,控制細化規模

• TargetEdgeLength: 指定輸入幾何表面附近的全域目標邊長

• PaddingDistance: 設定幾何與背景網格外邊界之間的外擴距離

• RemoveBackground: 移除生成的背景四面體

 

需注意的是,目標邊長不是所有元素邊長的固定值,元素預算也不是最終數量的嚴格上限。

 

➃ 讀取頭部組織並指定局部尺寸

 


取得 IXI025 群組的組織,建立 anatomical_surfaces 清單,作為八叉樹網格器的解剖幾何輸入,以及對指定組織建立局部尺寸設定:

 

• 視神經 (Visual_Nerve)、動脈(Artery)、靜脈(Vein): 0.5 

• 大腦灰質(Cerebrum_grey_matter): 1.0 

• 其他組織: 沿用全域設定 2.5

 

如此一來,透過局部尺寸設定可提高重要組織的解析度,避免整個頭部都採用最細尺寸。

 

➄ 既有電極網格的嵌入設定

 


程式先將 device_settings 設為 None;若已有可用的 electrode_mesh (即 Explore 視窗中的 Device Mesh),則建立嵌入網格相關設定,指定目標邊長為 4.0。 這裡的 electrode_mesh 是先前已生成的非結構化電極體積網格 Device Mesh (15.9 kCells)。4.0 會透過下一步的 embedded_mesh_options 傳入,不能解讀為直接將既有電極內部所有四面體重新改成邊長 4.0。

 

➅ 生成混合體積網格並命名

 

前面的步驟 ➀ - ➄ 主要準備輸入與設定,此處呼叫 OctreeMeshing() 函式後才真正生成網格。

 


輸入參數說明

• entity_list: 解剖表面與填補幾何,交由八叉樹方法建立體積網格

• embedded_mesh: 既有電極體積網格,作為嵌入物件

• global_options: 整體尺寸、元素預算與背景設定

• local_options: 填補幾何與指定組織的局部設定

• embedded_mesh_options: 電極嵌入相關設定

 

總結步驟(3)核心是讓八叉樹方法處理複雜解剖表面,同時嵌入既有電極網格。成功生成後,仍應檢查細小組織的連通性、電極與組織的介面、填補區域歸屬,以及四面體品質,確認結果適合後續有限元素分析。

 

(4) 建立邊界 Patch 

 

Patch 是網格邊界或材料介面上的命名面集合,求解器可利用它指定邊界條件。完成網格後,先合併 Skin 與 Filling Material domain,再把每個 electrode domain 的表面轉成 Dirichlet patch,之後刪除不需要的電極體積 domain。最後針對整體網格建立 Neumann patch;既有 patch 所涵蓋的面會被自動排除。

 

➀ 選取 Skin 與 Filling Material 後,使用 Mesh Tools | Merge Domains 將兩物件合併

 

 

➁ 右鍵點選合併的物件 Merged,選擇 Rename,將名稱重新命名為 Skin

 

 

➂ 選取 CP4_ electrode,然後點選 Mesh Tools | Domains Patch(es) 將電極 domain 表面轉成 Dirichlet patch 邊界,新生成的 Patch_CP4_ electrode 改命名為 CP4_ electrode_Dirichlet; F4_ electrode 也執行相同的動作。

 

 

➃ 選取 CP4_ electrode 與 F4_ electrode,然後點選 Mesh Tools | Delete Domains,將這兩個電極體積 domain 刪除。

 

 

➄ 針對整體網格建立 Neumann patch: 選取 Octree Mesh (2.6 MCells) 後,點選 Mesh Tools | Boundary Patch 以生成 Patch Boundary。將邊界名稱改為 Neumann。

 

 

➅ 在 3D 視窗檢視 Neumann 物件與混合網格化後的頭部與電極模型

 

 

5. 網格品質統計與幾何檢查

 

對於多域體積網格化模型,Sim4Life 視窗中提供了 Mesh Viewer 工具讓使用者檢視生成的網格品質優劣。選取 Octree Mesh (2.6 MCells) 物件後,在工具欄點選 Mesh Tools | Mesh Viewer,即可在 Controller 視窗顯示相關設定: Plane Options 或在 3D 視窗可設定切平面; Viewer Options 的 Mode 選項切換至 Quality; Mesh Statistics 區塊能選取評估網格品質好壞的計算方法。設定完成後,按下 Compute Quality 按鈕會產生成網格品質統計分布圖。

 

本案例以 Scaled Jacobian 評估四面體的局部形狀品質。Scaled Jacobian 會把元素的局部雅可比行列式正規化; 數值愈高通常代表形狀愈接近理想元素,但實際範圍與判讀標準仍應依軟體定義及元素類型確認。品質分析不能只看平均值,因為少量極差元素常集中在狹縫、材料介面或尺寸快速過渡處。Mesh Viewer 可搭配切割平面與最差元素篩選,將統計分布連回實際幾何位置。

 

➀ Mesh Viewer 工具位置

 

 

➁ Mesh Viewer 設定與 Mesh Statistics 圖表

 


➂ 檢視平面設定

 

 

另外,使用者也可以透過 Sim4Life Python API 的函式(xcm.ComputeMeshQuality)來產生網格品質統計圖表。例如: 下圖繪製了 100 個網格品質區間分佈的密度直方圖。


 

品質統計與幾何檢查要點: 

 

• 先找品質分布尾端的最差元素,再定位其幾何位置 

• 檢查局部細化與全域尺寸交界,避免邊長變化過快 

• 確認薄層、孔洞、狹縫與組織連通性沒有因八叉樹解析度而改變 

• 以至少兩到三組解析度生成網格化模型,觀察目標物理量是否收斂,而不是只追求更小元素

 

6. 結語 

 

Sim4Life 的多域體積網格設計,重點在於把幾何特性與演算法假設對齊。Faceted Geometry 適合乾淨 CAD 與尖銳裝置; Octree 適合複雜解剖表面; 混合模式則把兩者接成實用流程。完成建網格後,仍需以 Patch 定義邊界、用品質分布定位弱點,並透過解析度研究確認模擬結果已收斂。對頭部加電極這類模型而言,這套流程能在拓撲保真、網格穩健性與計算成本之間取得可控的平衡。

CONTACT US
如果您對我們的產品服務有興趣,歡迎直接與我們聯繫 !
產品介紹 最新消息 聯絡我們

依據歐盟施行的個人資料保護法,我們致力於保護您的個人資料並提供您對個人資料的掌握。
按一下「全部接受」,代表您允許我們置放 Cookie 來提升您在本網站上的使用體驗、協助我們分析網站效能和使用狀況,以及讓我們投放相關聯的行銷內容。您可以在下方管理 Cookie 設定。 按一下「同意」即代表您同意採用目前的設定,更多資訊請瀏覽 隱私權聲明。

此網站使用了Cookies

依據歐盟施行的個人資料保護法,我們致力於保護您的個人資料並提供您對個人資料的掌握。按一下「同意」,代表您允許我們置放 Cookie 來提升您在本網站上的使用體驗、協助我們分析網站效能和使用狀況,以及讓我們投放相關聯的行銷內容。

按一下「僅必需的」,代表您只允許我們置放必要的 Cookie。網站運行離不開這些 Cookie 且您不能在系統中將其關閉。通常僅根據您所做出的操作(即服務請求)來設置這些 Cookie,如設置隱私偏好、登錄或填充表格。您可以將您的瀏覽器設置為阻止或向您提示這些 Cookie,但可能會導致某些網站功能無法工作。

關於Cookie 谷歌隱私權政策