ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る -...

32
3次元形状をモデリングす 教科書 3

Transcript of ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る -...

Page 1: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

3次元形状をモデリングす

教科書 3章

Page 2: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

3次元形状モデリング

境界表現によるモデリングB-Reps (boundary representation)表現

基本立体の集合演算によるモデリングCSG (Constructive Solid Geometry)表現

空間分割によるモデリングボクセル(voxel)表現

オクトリー(octree)表現

その他メタボール(meta-ball)表現

CSRBF(compactly supported radial basis function)表現

Page 3: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

B-Reps 表現

3次元形状を頂点,稜線(直線/曲線),面分(平面/曲面)の幾何情報とそれらの接続情報で表現する方式を B-Reps 表現と呼ぶ.

幾何情報頂点の座標値 (x,y,z)稜線を表す数式

面分を表す数式

接続情報(位相情報)稜線と頂点の接続情報

面分と稜線の接続情報 立体であることを保証するための条件などは位相幾何学によって論じられる.

Page 4: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

B-Reps 表現(cont.)立体であることを保証するための必要十分条件を考えよう.

四面体(ポリゴン)について考える.

境界を求める演算子を ∂ とする.

立体 P について

立体であるための必要条件

A

B

C

D

立体 PP ABC CDA BDC BAD

ABC AB BC CA

AB A BA 0

∂ = Δ + Δ + Δ + Δ

∂Δ = + +

∂ = − +∂ =

uuur uuur uuur

uuur

P 0, ABC 0 , AB 0∂∂ = ∂∂Δ = ∂∂ =uuur

L L

Page 5: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

B-Reps 表現(cont.)

四面体について考えよう.(cont.)境界の隣接行列と用いれば

0

1 2 3

1 1 1 1

1 0 0 11 0 1 0 0 1 1 0 1 0 1

1 1 0 0 1 0 1 1 0 0 1

0 1 1 1 0 0 0 1 1 0 10 0 0 1 1 1 0 0 1 1 1

0 1 0 1

I

I I I

= ⎢ ⎥⎣ ⎦−⎡ ⎤

⎢ ⎥− −⎡ ⎤ ⎧ ⎫⎢ ⎥⎢ ⎥ ⎪ ⎪⎢ ⎥− − − ⎪ ⎪⎢ ⎥= = = ⎨ ⎬⎢ ⎥⎢ ⎥− − ⎪ ⎪⎢ ⎥⎢ ⎥ ⎪ ⎪⎢ ⎥− − −⎣ ⎦ ⎩ ⎭⎢ ⎥−⎢ ⎥⎣ ⎦

ABC CDA BDC BADΔ Δ Δ ΔA B C D

ABCD

AB BC CA DC BD DAuuur uuur uuur uuur uuur uuur

ABCCDABDCBAD

ΔΔΔΔ

0 1 2 3

0 1 2

0 1

P 0 0ABC 0 0

AB 0 0

I I I II I I

I I

∂∂ = ⇔ =

∂∂Δ = ⇔ = ⎢ ⎥⎣ ⎦

∂∂ = ⇔ = ⎢ ⎥⎣ ⎦

Luuur

L

AB

BC

CA

DC

BD

DA

uuur

uuur

uuur

uuur

uuur

uuur

Page 6: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

B-Reps 表現(cont.)

立体であるための十分条件

オイラー・ポアンカレの式球と位相同型な立体では,面の数 f, 稜線の数 e, 頂点の数 v のとき

拡張オイラー・ポアンカレの式切り離された立体の数 b, 貫通する穴の数 g,面上の穴(リング)の数 h のとき

2f e v− + =

2 2f e v h b g− + − = −

向き付け

Page 7: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

B-Reps 表現(cont.)

オイラー変換拡張オイラー・ポアンカレの式を書き換える.

v, e, f, h, g, b は正の整数であるので,x は6次元空間の整数値からなる格子点となる.

この格子点から格子点への移動をオイラー変換と呼ぶ.

( ) 2 2 0

1 1 1 1 2 2T

T

z v e f h g b

v e f h g b

= − + − + − = ⋅ =

= − − −⎢ ⎥⎣ ⎦= ⎢ ⎥⎣ ⎦

x a

a

x

x 6次元超平面式

Page 8: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

B-Reps 表現(cont.)

オイラー変換(cont.)拡張オイラー・ポアンカレの式は6次元超平面式であるので,独立なベクトルは5つである.それを di(i=1,2,…,5) とする.

拡張オイラー・ポアンカレの式を満たしながらの格子点の移動は dz(x)/dx=a から dx=di dt (i=1,2,…,5) とすれば,dz(x)= a⋅di dt =0 あるいは a⋅di=0 (i=1,2,…,5) を満たす.したがって,x は次式で与えられる.

1 1 2 2 3 3 4 4 5 5 6n n n n n n= + + + + +x d d d d d a

6次元超平面式の法線ベクトル a の方向への平行移動

Page 9: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

B-Reps 表現(cont.)

オイラー変換(cont.)di (i=1,2,…,5) の各要素を 0,−1,1 の組み合わせから

選択すれば,例えば

1 2 3 4 5

1 0 1 0 01 1 0 1 10 1 1 0 0

, , , , 0 0 0 1 10 0 0 1 00 0 1 0 0

(mev) (mfe) (mbfv

⎧ ⎫ ⎧ ⎫ ⎧ ⎫ ⎧ ⎫ ⎧ ⎫⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪= = = = =⎨ ⎬ ⎨ ⎬ ⎨ ⎬ ⎨ ⎬ ⎨ ⎬−⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎩ ⎭ ⎩ ⎭ ⎩ ⎭ ⎩ ⎭ ⎩ ⎭

d d d d d

) (mehg) (me-kh)

オイラーオペレータ あるいは ニーモニック・コード(m=1, k=−1)

Page 10: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

B-Reps 表現(cont.)

オイラー変換(cont.)オイラーオペレータによるオイラー変換

1 1 2 2 3 3 4 4 5 5 6

1

2

3

4

5

6

1

1 0 1 0 0 11 1 0 1 1 10 1 1 0 0 10 0 0 1 1 10 0 0 1 0 20 0 1 0 0 2

n n n n n nnvnenfnhngnb

= + + + + +

− ⎧ ⎫⎧ ⎫ ⎡ ⎤⎪ ⎪⎪ ⎪ ⎢ ⎥− ⎪ ⎪⎪ ⎪ ⎢ ⎥⎪ ⎪⎪ ⎪ ⎢ ⎥⎪ ⎪ ⎪ ⎪⇔ = ⇔ =⎨ ⎬ ⎨ ⎬⎢ ⎥− −⎪ ⎪ ⎪ ⎪⎢ ⎥

⎪ ⎪ ⎪ ⎪⎢ ⎥⎪ ⎪ ⎪ ⎪⎢ ⎥

−⎢ ⎥⎪ ⎪ ⎪ ⎪⎩ ⎭ ⎣ ⎦ ⎩ ⎭⇔ =

x d d d d d a

x An

n A xオイラーオペレータを使用した回数

Page 11: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

B-Reps 表現(cont.)

オイラー変換(cont.)四面体の場合

1

2

3

4

5

6

4 mev 36 mfe 34 mbfv 10 mehg 00 mehg 01 0

nvnenfnhngnb

⎧ ⎫⎧ ⎫ ⎧ ⎫ ⎧ ⎫⎪ ⎪⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎪ ⎪⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎪ ⎪⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪= = ⇔ = =⎨ ⎬ ⎨ ⎬ ⎨ ⎬ ⎨ ⎬

⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎪ ⎪⎩ ⎭ ⎩ ⎭ ⎩ ⎭⎩ ⎭

x n

mbfv: 立体と面と頂点を作成mev: 稜線を追加()作成し,頂点を作成mef: 面と稜線を追加mehg: 辺を追加しリングと穴を一つずつ作成me-kh: 稜線を追加しリングを削除

Page 12: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

B-Reps 表現(cont.)B-Reps 表現における集合計算

次の手順をオイラー変換と同時に行う.立体 A のすべての面と立体 Pi(i=1,2,…,m)のすべての面の交線を求める.

A, Pi のすべての稜線と求めた交線の交点を求め,新しい頂点と稜線と面の関係のデータを作成する.

集合演算に従い,不要となる頂点,稜線,面に消去のマークをつけ,頂点,稜線,面に追加のマークを付ける.

消去マークの頂点,稜線,面を削除する.

Page 13: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

B-Reps 表現(cont.)

局所演算挿引演算(sweep, swing)

反転演算(reflection)

sweep swing

Page 14: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

局所演算(cont.)面取り(chamfer, fillet)

chamfer: 頂点あるいは稜線を平面で置き換える.

fillet: 頂点あるいは稜線を球面あるいは円筒面で置き換える.

せん断(shear)曲げ(bend)角度付け(angle)

B-Reps 表現(cont.)

Page 15: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

B-Reps 表現(cont.)

データベースの構築

幾何情報(幾何データベース)と接続情報(位相データベース)が必要である.

代表的な位相データベースリスト構造(list structure)

構造が単純,同じデータを何度も使うことが欠点

データ構造位相構造

Page 16: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

B-Reps 表現(cont.)代表的な位相データベース(cont.)

リング構造(ring structure)立体はそれを構成する面を一つ指定する.指定された面はその立体に含まれる面を順に指定して,最後に最初の面に戻るリングを構成する.

面の下に,その面に含まれるリングを一つ指定する.そのリングはその面に含まれるホールリング(穴のリング)を順に指定して,最後に最初のリングに戻るリングを構成する.

リングの下に,稜線を指定する.その稜線はそのリングに含まれる稜線を順に指定して,最後に最初の稜線に戻るリングを構成する.

稜線の下に,稜線を形成する頂点を一つ指定する.その頂点はもう一つの頂点を指定して,最後に最初の頂点に戻るリングを構成する.

Page 17: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

B-Reps 表現(cont.)代表的な位相データベース(cont.)

ウィングド・エッジ・データ構造リング構造の発展型:構造体(文字,数値,ポインタなどを同時に扱えるデータ型)の特徴を生かしたデータ構造各稜線からの,2つの頂点,2つの面,4つの稜線へのポインタを記述する.各頂点は稜線の一つに対してポインタを持っている.各面は稜線の一つへのポインタを持っている.この構造を用いると,時計回り,反時計回りすべてのループの稜線を追跡できるアルゴリズムが作成できる.両ループの追跡が完全に行われれば,B-Reps 表現の必要条件をチェックできる.

previous

next

Page 18: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

CSG表現

立体形状をプリミティブ(primitive)と呼ばれる基本立体の集合演算により表現する方式をCSG表現と呼ぶ.

プリミティブの表現

円柱の場合

一般に,プリミティブ Pi (i=1,2,…, m)

( )2 2 2

3cyl

0,, , R

0, 0x y r

P x y zz h z

⎧ ⎫+ − ≤⎪ ⎪= ∈⎨ ⎬− ≤ − ≤⎪ ⎪⎩ ⎭ x

y

zr

h

( ){ }3, , R 0, 1, 2, ,i ij iP x y z f j n= ∈ ≤ = L

Page 19: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

CSG表現(cont.)

集合演算(Boolean operations)

Page 20: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

CSG表現(cont.)

正規化された集合演算

( )( )*op closure interior op

op: , ,

A B A B=

∪ ∩ −

A B

A B∩ *A B∩

Page 21: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

CSG表現(cont.)

正規化された集合演算(cont.)

i iA B∩ iA B− iB A− b iA B∩

b iB A∩

A B

bA B− bB A− b bsameA B∩ b bdiffA B∩

Page 22: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

CSG表現(cont.)

正規化された集合演算(cont.)集合

1 1 01 0 11 0 00 1 00 1 11 0 11 0 01 1 00 0 1

i iA B∩

iA B−

iB A−

b iA B∩

b iB A∩

bA B−bB A−

b bsameA B∩

b bdiffA B∩

*A B∪ *A B∩ *A B−

Page 23: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

CSG表現(cont.)

プリミティブのデータID(識別番号)

種類

幾何正規化データ

属性データ

全体情報 プリミティブ1の情報

Page 24: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

CSG表現(cont.)

プリミティブの演算順序データ

演算の種類

演算を受ける立体の構成順序へのポインタ

演算に入るプリミティブIDへのポインタ

次に演算を受ける構成順序へのポインタ

Page 25: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

CSG表現(cont.)

指定した点の内外を判定するアルゴリズム

( )( )1

If , , 0 is true

then 1 else 0.

in

ijj

f x y z=

≤I

Page 26: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

CSG表現(cont.)

境界評価

指定した点が立体の内部にあるか外部にあるか判定し,さらに境界表面からどのくらい離れているかを評価するために境界評価関数(boundary evaluator)が用いられる.

プリミティブ

に対する境界評価関数

( ){ }3, , R 0, 1, 2, ,i ij iP x y z f j n= ∈ ≤ = L

( ) ( )1

, , max , ,in

i ijjB x y z f x y z

==

Page 27: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

CSG表現(cont.)

境界評価(cont.)集合演算による境界評価関数の変換

( )( ) ( ){ } ( )( ) ( ){ } ( )( ) ( ){ } ( )

min , , , , ,

, , max , , , , ,

max , , , , ,

i j i j

i j i j

i j i j

B x y z B x y z P P

B x y z B x y z B x y z P P

B x y z B x y z P P

⎧ ∪⎪⎪= − −⎨⎪

∩⎪⎩

のとき

のとき

のとき

Page 28: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

CSG表現(cont.)

境界評価(cont.)立体の表面,交線,交点は境界評価関数を用いて次のように示される.

表面

交線 交点

( )( )

, , 0

, , 0ij

B x y z

f x y z

=⎧⎪⎨

=⎪⎩

( )( )( )

, , 0

, , 0

, , 0ij

kl

B x y z

f x y z

f x y z

⎧ =⎪

=⎨⎪ =⎩

( )( )( )( )

, , 0

, , 0

, , 0

, , 0

ij

kl

mn

B x y z

f x y z

f x y z

f x y z

=⎧⎪

=⎪⎨

=⎪⎪ =⎩

Page 29: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

ボクセル表現

立体を小さな立方体(ボクセル)の集合で表現する方式をボクセル表現と呼ぶ.

ピクセル(2次元) ボクセル(3次元)

Page 30: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

オクトリー表現

ボクセル表現ではデータ量が大きくなってしまうことを克服するために考案された表現法である.

立方体を各辺2等分により8分割(オクトリー:8分木)

する.立体の内部にある(A)立体の外部になる(B)立体の内部と外部にまたがっている(C)

例:理化学研究所ボリュームCAD(V-CAD)http://www.vcad.jp/

Page 31: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

メタボール表現

濃度分布により立体を表現する方式をメタボール表現と呼ぶ.

例:DigiMetahttp://www.forest.impress.co.jp/article/2000/05/10/digimeta.html

Page 32: ocw.nagoya-u.jp › files › 34 › CS5.pdf 3次元形状をモデリングす る - ocw.nagoya-u.jp3次元形状モデリング z境界表現によるモデリング zB-Reps (boundary

参考文献

1. コンピュータグラフィックス, 前川佳徳(編著), オーム社, 2001.

2. CAD/CAM/CGのための形状処理工学入門,嘉数侑昇,古川正志著,森北出版,1995.

3. コンピュータグラフィックス 理論と実践, James D. Foley, Steven K. Feiner, Andries van Dam, John F. Hughes: 佐藤 義雄 (訳), オーム社, 2001.