NURBS曲面のボクセル化 — X・Y・Z 3軸平面スライス法

rational Bézier decomposition · convex-hull clipping · 2D grid traversal · flood fill
NURBS 曲面
■X ■Y ■Z 断面線
—
ボクセル
—
★ 形状データ
視点を左右で同期
ドラッグ: 回転(Z軸が上) / ホイール・ピンチ: ズーム
ボクセル化
切断に使う軸(平面はボクセル中心を等間隔で移動)
⊥X
⊥Y
⊥Z
内部を充填(閉じた形状)
1軸だけだと、その平面とほぼ平行な曲面部分でボクセルが抜けます。3軸を併用すると隙間のない殻になります。
ボクセル表示
線画
陰影
半透明
格子線
高さで色分け
カットすると内部充填ボクセル(橙)が見えます。
曲面表示(左画面)
半透明曲面
ベジエ制御網
断面線
ボクセル格子範囲
統計
NURBS曲面数—
有理ベジエパッチ数—
格子サイズ—
ボクセル辺長 h—
切断平面数—
断面線分数—
殻ボクセル—
内部ボクセル—
表示面数—
ボクセル化時間—
アルゴリズム
① NURBS曲面をノット挿入で有理ベジエパッチに分解。
② 各軸について、ボクセル中心を通る軸垂直平面 x=xᵢ(y, z も同様)を間隔 h で配置。
③ 平面ごとに、凸包性で交差しないパッチ部分を枝刈りしつつ有理 de Casteljau 法で4分割を再帰し、部分曲面の大きさが h の約1/3以下になったら4隅を線形補間して断面線分を得る。
④ 断面線分を平面内の2次元格子上で辿り(格子走査法)、通過したセルを「殻ボクセル」とする。
⑤ 格子外周から空セルを塗りつぶし(外部)、届かなかった空セルを「内部ボクセル」とする。