コンピュータグラフィクス論 – モデリング (3) – 2015年4月30日 高山 健志
コンピュータグラフィクス論
–モデリング (3) –
2015年4月30日
高山健志
陰関数表現による形状モデリング
• 3D空間上のスカラー場 𝐹 𝑥, 𝑦, 𝑧 に対し、𝐹 𝑥, 𝑦, 𝑧 = 0で定義されるサーフェス
• 別名:ゼロ等値面、陰関数 (ボリューム) 表現• サーフェス表現
• 𝐹 𝒑 が正 (負) のとき、𝒑は物体の外部 (内部)
•勾配 𝛻𝐹 は法線方向に一致• 𝛻𝐹(𝒑) = 1 ∀𝒑のとき、F は物体表面からの距離
2
半径 2 の球𝐹 𝑥, 𝑦, 𝑧 = 𝑥2 + 𝑦2 + 𝑧2 − 4 = 0
陰関数の例
3
大半径 R, 小半径 a のトーラス
陰関数の例:等電位面 (Metaball)
4
𝐹 𝒑 = 𝐹1 𝒑 − 𝐹2(𝒑)
𝐹 𝒑 = 𝐹1 𝒑 + 𝐹2(𝒑)
𝐹𝑖 𝒑 =𝑞𝑖𝒑 − 𝒑𝑖
𝐹 𝒑 = 𝐹1 𝒑 + 𝐹2 𝒑 + 𝐹3 𝒑 + 𝐹4 𝒑
陰関数の線形補間によるモーフィング
5
𝐹 𝒑 = 𝐹1(𝒑) 𝐹 𝒑 =2
3𝐹1 𝒑 +
1
3𝐹2 𝒑
𝐹 𝒑 =1
3𝐹1 𝒑 +
2
3𝐹2 𝒑 𝐹 𝒑 = 𝐹2(𝒑)
複数の陰関数を組み合わせたモデリング
6
Constructive Solid Geometry (Boolean演算)
7
積:𝐹𝐴∩𝐵 𝒑 = min 𝐹𝐴 𝒑 , 𝐹𝐵 𝒑
和:𝐹𝐴∪𝐵 𝒑 = max 𝐹𝐴 𝒑 , 𝐹𝐵 𝒑
差:𝐹𝐴−𝐵 𝒑 = min 𝐹𝐴 𝒑 ,−𝐹𝐵 𝒑
陰関数の表示方法:Marching Cubes
•等値面を三角形メッシュとして抽出
•立方体格子の各セルに対し、(1) 立方体の 8 頂点で関数値を計算
(2) その正負のパターンから、生成する面のタイプを決定• 対称性から 15 通りに分類
(3) 関数値の線形補間から面の位置を決定
•最も有名 (特許問題でも )
8Marching Cubes: A High Resolution 3D Surface Construction Algorithm [Lorensen SIGGRAPH87]
Marching Cubes の曖昧性
9The asymptotic decider: resolving the ambiguity in marching cubes [Nielson VIS91]
隣接するセルの間で面が整合しない 不整合を解決する新たなルール
Marching Tetrahedra
•立方体の代わりに四面体を使う• パターンが少なく、曖昧性が無い実装が簡単
•各立方体セルを、6 個の四面体に分割• (隣接セル間で分割の向きを合わせることに注意)
•きれいな三角形メッシュを取り出す工夫
10
http://paulbourke.net/geometry/polygonise/
Regularised marching tetrahedra: improved iso-surface extraction [Treece C&G99]
シャープなエッジを保持した等値面抽出
11
Feature Sensitive Surface Extraction from Volume Data [Kobbelt SIGGRAPH01]
http://www.graphics.rwth-aachen.de/IsoEx/
格子サイズ:65×65×65
Marching Cubes 改善版 Marching Cubes (値のみ考慮)
改善版 (勾配方向も考慮)
陰関数の表示方法:レイトレーシング
12
Modelling with implicit surfaces that interpolate [Turk TOG02]
GPU-based Fast Ray Casting for a Large Number of Metaballs [Kanamori EG08]
応用例:スケッチベース 3D モデリング
13
A sketching interface for modeling the internal structures of 3d shapes [Owada SmartGraphics03]
ShapeShop: Sketch-Based Solid Modeling with BlobTrees [Schmidt SBIM05]
https://www.youtube.com/watch?v=GyJUG2VSvqw
応用例:メッシュの穴埋め
14Filling holes in complex surfaces using volumetric diffusion [Davis 3DPVT02]
点群からのサーフェス再構成
15
3D 形状の計測
•得られるデータ:点群• 3D座標
• 法線 (面の向き)• 得られない場合もある
• ノイズが多すぎる場合もある
16
Range Scanner
(LIDAR)
Structured Light
Multi-View Stereo
Depth Camera
点群からのサーフェス形状再構成
•入力:N 個の点群データ• 座標 𝐱𝑖 = 𝑥𝑖 , 𝑦𝑖 , 𝑧𝑖 と法線 𝐧𝑖 = 𝑛𝑖
x, 𝑛𝑖y, 𝑛𝑖z , 𝑖 ∈ 1,… ,𝑁
•出力:関数 𝑓(𝐱)で、値と勾配の制約を満たすもの• 𝑓 𝐱𝑖 = 0
• 𝛁𝑓 𝐱𝑖 = 𝐧𝑖
• 等値面 𝑓 𝐱 = 0が出力サーフェス形状
• “Scattered Data Interpolation” と呼ばれる問題• Moving Least Squares
• Radial Basis FunctionCG以外の分野 (e.g. 機械学習) でも重要
17
𝑓𝑖
勾配を制約する二通りの方法
•法線方向にオフセットした位置に値の制約を追加• 簡単
•数学表現そのものに勾配制約を取り入れる (エルミート補間)• 高品質
18
Modelling with implicit surfaces that interpolate [Turk TOG02]
Hermite Radial Basis Functions Implicits [Macedo CGF10]
値と勾配の制約 エルミート補間 オフセット法
Moving Least Squares による補間(移動最小二乗)
19
出発点:Least SQuares (最小二乗)
•求めたい関数が線形だと仮定する:𝑓 𝐱 = 𝑎𝑥 + 𝑏𝑦 + 𝑐𝑧 + 𝑑• 𝑎, 𝑏, 𝑐, 𝑑 が未知係数
•データ点における値の制約
• (勾配制約は今は考えない)
20
𝐱 ≔ (𝑥, 𝑦, 𝑧)
𝑥1 𝑦1 𝑧1 1𝑥2 𝑦2 𝑧2 1
𝑥𝑁 𝑦𝑁 𝑧𝑁 1
𝑎𝑏𝑐𝑑
𝑓1𝑓2
𝑓𝑁
・・・
・・・
=𝐴 𝐜 𝐟
𝑓 𝐱1 = 𝑎𝑥1 + 𝑏𝑦1 + 𝑐𝑧1 + 𝑑 = 𝑓1𝑓 𝐱2 = 𝑎𝑥2 + 𝑏𝑦2 + 𝑐𝑧2 + 𝑑 = 𝑓2
𝑓 𝐱𝑁 = 𝑎𝑥𝑁 + 𝑏𝑦𝑁 + 𝑐𝑧𝑁 + 𝑑 = 𝑓𝑁
・・・
Overconstrained System
• #未知数 < #制約 (i.e. 縦長の行列) 全ての制約を同時に満たせない
• fitting の誤差を最小化:
21
𝐴 𝐜 𝐟 𝐜𝐴 𝐟
𝐜 𝐴⊺𝐴 −1 𝐟
𝐴⊺ 𝐴⊺
𝐴⊺
= =
=𝑨 𝐜 − 𝐟 2 =
𝑖=1
𝑁
𝑓 𝐱𝑖 − 𝑓𝑖2
LSQ の幾何的な解釈
• 𝐩と 𝐪が張る空間中で 𝐫に最も近い点を求める (投影する) ことに相当• fitting 誤差は投影距離に相当:
𝑑2 = 𝛼𝐩 + 𝛽𝐪 − 𝐫 2
22
𝑝x𝑝y𝑝z
=𝛼𝛽
𝑞x𝑞y𝑞z
𝑟x𝑟y𝑟z
𝐪
𝐩
𝐫
𝛼
𝛽
𝑑
Weighted Least Squares (重み付き最小二乗)
•各データ点ごとの誤差に、重み 𝑤𝑖 をつける• 重要度、確信度
•以下の誤差を最小化:
𝑖=1
𝑁
𝑤𝑖 𝑓 𝐱𝑖 − 𝑓𝑖2
23
𝑥1 𝑦1 𝑧1 1𝑥2 𝑦2 𝑧2 1
𝑥𝑁 𝑦𝑁 𝑧𝑁 1
𝑎𝑏𝑐𝑑
𝑓1𝑓2
𝑓𝑁・・・
・・・
=
𝑤1𝑤2
𝑤𝑁
𝑤1𝑤2
𝑤𝑁
𝐴 𝐜 𝐟𝑊 𝑊
Weighted Least Squares (重み付き最小二乗)
24
𝐴 𝐜 𝐟
𝐜 𝐴⊺𝑊2𝐴 −1 𝐟𝐴⊺𝑊2
=
=
𝑊 𝑊
Moving Least Squares (移動最小二乗)
• 重み 𝑤𝑖 が、評価位置 𝐱に依存:𝑤𝑖 𝐱 = 𝑤( 𝐱 − 𝐱𝑖 )
• よく使われる関数 (Kernel):
• 𝑤 𝑟 = 𝑒−𝑟2/𝜎2
• 𝑤 𝑟 =1
𝑟2+𝜖2
• 重み行列𝑊 が 𝐱に依存係数 𝑎, 𝑏, 𝑐, 𝑑 が 𝐱に依存
25
𝑓 𝐱 = 𝑥 𝑦 𝑧 1
𝑎(𝐱)𝑏(𝐱)𝑐(𝐱)𝑑(𝐱)
𝐴⊺𝑊 𝐱 2𝐴 −1 𝐟𝐴⊺𝑊 𝐱 2
評価位置に近いほど大きな重み
法線制約の導入
•各データ点が表す 1 次式を考える:𝑔𝑖 𝐱 = 𝑓𝑖 + 𝐱 − 𝐱𝑖
⊺𝐧𝑖
•各 𝑔𝑖 を現在位置で評価したときの誤差を最小化:
𝑖=1
𝑁
𝑤𝑖 𝐱 𝑓 𝐱 − 𝑔𝑖 𝐱2
26
𝑥 𝑦 𝑧 1𝑥 𝑦 𝑧 1
𝑥 𝑦 𝑧 1
𝑎𝑏𝑐𝑑
𝑔1 𝐱𝑔2 𝐱
𝑔𝑁 𝐱
・・・
・・・
=
𝑤1(𝐱)𝑤2(𝐱)
𝑤𝑁(𝐱)
𝑤1(𝐱)𝑤2(𝐱)
𝑤𝑁(𝐱)
Interpolating and Approximating Implicit Surfaces from Polygon Soup [Shen SIGGRAPH04]
法線制約の導入
27
法線制約を利用 法線方向にオフセットして値を制約
Interpolating and Approximating Implicit Surfaces from Polygon Soup [Shen SIGGRAPH04]
Input : Polygon Soup Interpolation Approximation 1 Approximation 2 Approximation 3
Radial Basis Function による補間(放射基底関数)
28
基本的な考え方
•関数 𝑓(𝐱)を、基底関数 𝜙(𝐱)の重み付き和として定義:
𝑓 𝐱 = 𝑖=1
𝑁
𝑤𝑖𝜙(𝐱 − 𝐱𝑖)
•放射基底関数 𝜙(𝐱):𝐱の長さのみに依存
• 𝜙 𝐱 = 𝑒− 𝐱2/𝜎2 (Gaussian)
• 𝜙 𝐱 =1
𝐱 2+𝑐2(Inverse Multiquadric)
•各データ点における制約 𝑓 𝐱𝑖 = 𝑓𝑖 から、重み係数 𝑤𝑖 を求める
29
基底関数をデータ位置𝐱𝑖 に平行移動
基本的な考え方
30
𝑓 𝐱1 = 𝑤1𝜙1,1 + 𝑤2𝜙1,2 + ⋯ +𝑤𝑁𝜙1,𝑁 = 𝑓1
𝑓 𝐱2 = 𝑤1𝜙2,1 +𝑤2𝜙2,2 + ⋯ +𝑤𝑁𝜙2,𝑁 = 𝑓2
𝑓 𝐱𝑁 = 𝑤1𝜙𝑁,1 + 𝑤2𝜙𝑁,2 + ⋯ +𝑤𝑁𝜙𝑁,𝑁 = 𝑓𝑁
𝜙𝑖,𝑗 = 𝜙 𝐱𝑖 − 𝐱𝑗 と表記する
・・・
これを解けば良い
𝜙1,1 𝜙1,2 𝜙1,𝑁𝜙2,1 𝜙2,2 𝜙2,𝑁
𝜙𝑁,1 𝜙𝑁,2 𝜙𝑁,𝑁
𝑤1𝑤2
𝑤𝑁
𝑓1𝑓2
𝑓𝑁
・・・
=
・・・
Φ 𝐰 𝐟
Gaussian 基底関数を使う場合
•パラメタ 𝜎の選び方によって、結果が大きく変わる!
•なるべく滑らかな結果を得るには?
31
𝜙 𝐱 = 𝑒− 𝐱2/𝜎2
Scattered Data Interpolation for Computer Graphics [Anjyo SIGGRAPH14 Course]
𝜎小 大
関数の “曲がり具合” の尺度 (Thin-Plate Energy)
• 2 階微分 (=曲率) の大きさを空間全体で積分したもの:
𝐸2 𝑓 = 𝐱∈ℝ𝑑Δ𝑓(𝐱) 2𝑑𝐱
• 1 次元空間の場合:
𝐸2 𝑓 = 𝑥∈ℝ
𝑓′′ 𝑥 2𝑑𝑥
• 2 次元空間の場合:
𝐸2 𝑓 = 𝐱∈ℝ2𝑓xx 𝐱
2 + 2𝑓xy 𝐱2 + 𝑓yy 𝐱
2 𝑑𝐱
• 3 次元空間の場合:
𝐸2 𝑓 = 𝐱∈ℝ3𝑓xx 𝐱
2 + 𝑓yy 𝐱2 + 𝑓zz 𝐱
2 + 2𝑓xy 𝐱2 + 2𝑓yz 𝐱
2 + 2𝑓zx 𝐱2 𝑑𝐱
32
数学分野の知見•制約 𝑓 𝐱𝑖 = 𝑓𝑖 を満たす関数全体のうち、𝐸2 を最小化する関数は以下の基底を使った RBF として表せる:
• 1 次元空間の場合:𝜙 𝑥 = 𝑥 3
• 2 次元空間の場合:𝜙 𝐱 = 𝐱 2 log 𝐱
• 3 次元空間の場合:𝜙 𝐱 = 𝐱
•参考• 有限要素法の場合:離散化した領域上で 𝐸2 を最小化する 𝑓 を近似的に求める
• RBF の場合:グリーン関数を使って 𝐸2 を最小化する 𝑓 を解析的に求める
33Scattered Data Interpolation for Computer Graphics [Anjyo SIGGRAPH14 Course]
線形項の追加
• 𝐸2[𝑓]は 2 階微分を使って定義される任意の線形項 𝑝 𝐱 = 𝑎𝑥 + 𝑏𝑦 + 𝑐𝑧 + 𝑑 を加えても不変:
𝐸2 𝑓 + 𝑝 = 𝐸2[𝑓]
•線形項を未知数に含めることで、関数を一意に定める:
𝑓 𝐱 = 𝑖=1
𝑁
𝑤𝑖 𝜙 𝐱 − 𝐱𝑖 + 𝑎𝑥 + 𝑏𝑦 + 𝑐𝑧 + 𝑑
34
線形項の追加
35
𝑓 𝐱1 = 𝑤1𝜙1,1 + 𝑤2𝜙1,2 + ⋯ +𝑤𝑁𝜙1,𝑁 + 𝑎𝑥1 + 𝑏𝑦1 + 𝑐𝑧1 + 𝑑 = 𝑓1
𝑓 𝐱2 = 𝑤1𝜙2,1 + 𝑤2𝜙2,2 + ⋯ +𝑤𝑁𝜙2,𝑁 + 𝑎𝑥2 + 𝑏𝑦2 + 𝑐𝑧2 + 𝑑 = 𝑓2
𝑓 𝐱𝑁 = 𝑤1𝜙𝑁,1 + 𝑤2𝜙𝑁,2 + ⋯ +𝑤𝑁𝜙𝑁,𝑁 + 𝑎𝑥𝑁 + 𝑏𝑦𝑁 + 𝑐𝑧𝑁 + 𝑑 = 𝑓𝑁
・・・
𝜙1,1 𝜙1,2 𝜙1,𝑁 𝑥1 𝑦1 𝑧1 1
𝜙2,1 𝜙2,2 𝜙2,𝑁 𝑥2 𝑦2 𝑧2 1
𝜙𝑁,1 𝜙𝑁,2 𝜙𝑁,𝑁 𝑥𝑁 𝑦𝑁 𝑧𝑁 1
𝑤1𝑤2
𝑤𝑁𝑎𝑏𝑐𝑑
𝑓1𝑓2
𝑓𝑁
・・・
・・・
=・・・Φ
𝐰
𝐟P
𝐜
4 個の未知数 𝑎, 𝑏, 𝑐, 𝑑が追加されたので、4 個の制約を追加する必要がある
追加の制約条件:線形関数の再現性
•「全てのデータ点の制約 𝐱𝑖 , 𝑓𝑖 がある線形関数からのサンプリングであるとき、RBF による補間結果はその線形関数と一致する」
•これを満たすための条件:• 𝑖=1𝑁 𝑤𝑖 = 0
• 𝑖=1𝑁 𝑥𝑖𝑤𝑖 = 0
• 𝑖=1𝑁 𝑦𝑖𝑤𝑖 = 0
• 𝑖=1𝑁 𝑧𝑖𝑤𝑖 = 0
36
𝜙1,1 𝜙1,2 𝜙1,𝑁 𝑥1 𝑦1 𝑧1 1
𝜙2,1 𝜙2,2 𝜙2,𝑁 𝑥2 𝑦2 𝑧2 1
𝜙𝑁,1 𝜙𝑁,2 𝜙𝑁,𝑁 𝑥𝑁 𝑦𝑁 𝑧𝑁 1
𝑥1 𝑥2 𝑥𝑁 0 0 0 0𝑦1 𝑦2 𝑦𝑁 0 0 0 0𝑧1 𝑧2 𝑦𝑁 0 0 0 01 1 1 0 0 0 0
𝑤1𝑤2
𝑤𝑁𝑎𝑏𝑐𝑑
𝑓1𝑓2
𝑓𝑁0000
・・・
・・・
=
・・・
・・・
Φ 𝐰 𝐟P
𝐜P⊺
Scattered Data Interpolation for Computer Graphics [Anjyo SIGGRAPH14 Course]
勾配制約の導入
•基底関数の勾配 𝛁𝜙の重み付き和を導入:
𝑓 𝐱 = 𝑖=1
𝑁
𝑤𝑖𝜙 𝐱 − 𝐱𝑖 + 𝐯𝑖⊺𝛁𝜙 𝐱 − 𝐱𝑖 + 𝑎𝑥 + 𝑏𝑦 + 𝑐𝑧 + 𝑑
• 𝑓 の勾配:
𝛁𝑓 𝐱 = 𝑖=1
𝑁
𝑤𝑖𝛁𝜙 𝐱 − 𝐱𝑖 + H𝜙 𝐱 − 𝐱𝑖 𝐯𝑖 +𝑎𝑏𝑐
•勾配の制約 𝛁𝑓 𝐱𝑖 = 𝐧𝑖 を追加
37
H𝜙 =
𝜙xx 𝜙xy 𝜙xz𝜙yx 𝜙yy 𝜙yz𝜙zx 𝜙zy 𝜙zz
Hermite Radial Basis Functions Implicits [Macedo CGF10] Hessian 行列
勾配の制約:
𝛁𝑓 𝐱1 = 𝑤1𝛁𝜙1,1 + H𝜙1,1𝐯1 + 𝑤2𝛁𝜙1,2 + H𝜙1,2𝐯2 +⋯+𝑤𝑁𝛁𝜙1,𝑁 + H𝜙1,𝑁𝐯𝑁 +𝑎𝑏𝑐= 𝐧1
値の制約:𝑓 𝐱1 = 𝑤1𝜙1,1 + 𝐯1
⊺𝛁𝜙1,1 + 𝑤2𝜙1,2 + 𝐯2⊺𝛁𝜙1,2 +⋯+𝑤𝑁𝜙1,𝑁 + 𝐯𝑁
⊺ 𝛁𝜙1,𝑁 + 𝑎𝑥1 + 𝑏𝑦1 + 𝑐𝑧1 + 𝑑 = 𝑓1
勾配制約の導入
• 1 番目のデータ点について:
38Hermite Radial Basis Functions Implicits [Macedo CGF10]
𝐧1
𝑓1𝜙1,1 𝛁𝜙1,1⊺
H𝜙1,1
𝛁𝜙1,1
𝜙1,2 𝛁𝜙1,2⊺
H𝜙1,2
𝛁𝜙1,2
𝜙1,𝑁 𝛁𝜙1,𝑁⊺
H𝜙1,𝑁
𝛁𝜙1,𝑁
𝑥1 𝑦1 𝑧1 1
1 0 0 0
0 1 0 0
0 0 1 0
・・・ =P1
𝑤1
𝐯1
𝐯2
𝑤2
・・・
𝐯𝑁
𝑤𝑁
𝑎𝑏𝑐𝑑
Φ1,1 Φ1,2 Φ1,𝑁
39
𝐧1
𝑓1
=
𝑤1
𝐯1
𝐯2
𝑤2
・・・
𝐯𝑁
𝑤𝑁
𝑎𝑏𝑐𝑑
P1Φ1,1 Φ1,2 Φ1,𝑁
・・・・・・
P2Φ2,1 Φ2,2 Φ2,𝑁
P𝑁Φ𝑁,1 Φ𝑁,2 Φ𝑁,𝑁
・・・
𝑃1⊺ 𝑃2
⊺ 𝑃𝑁⊺
0 0 0 00 0 0 00 0 0 00 0 0 0
0000
𝐧2
𝑓2
𝐧𝑁
𝑓𝑁
・・・
・・・
比較
40
勾配を制約 オフセットして値を制約
参考サーベイ等
• State of the Art in Surface Reconstruction from Point Clouds [Berger EG14 STAR]
• A survey of methods for moving least squares surfaces [Cheng PBG08]
• Scattered Data Interpolation for Computer Graphics [AnjyoSIGGRAPH14 Course]
• An as-short-as-possible introduction to the least squares, weighted least squares and moving least squares for scattered data approximation and interpolation [Nealen TechRep04]
41
参考ページ
• http://en.wikipedia.org/wiki/Implicit_surface
• http://en.wikipedia.org/wiki/Radial_basis_function
• http://en.wikipedia.org/wiki/Thin_plate_spline
• http://en.wikipedia.org/wiki/Polyharmonic_spline
42