50
1 自由曲面を表現する 教科書 4

自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

1

自由曲面を表現する

教科書 4章

Page 2: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

2

自由曲面の表現方法

CGでは,3次元形状を B-Reps 表現や CSG 表現などでモデリングされることを見てきた.

そこでは主に直線あるいは平面や円筒面を使った例を見てきた.

ここでは,直線や平面を含めた曲線や曲面をどのように表現するのかを見てみたい.

平面や円筒面,球面では表現できない曲面を自由曲面(free-form surface) と呼ぶ.

Page 3: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

3

パラメトリック表現

任意の曲線は,1個のパラメータによる陽関数形

式で表現できる.

直線の場合

z

x

y

0PP( ) 0t t= = +P P P V

Vt

−∞ ∞

Page 4: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

4

パラメトリック表現(cont.)

任意曲線の1個のパラメータによる表現(cont.)円の場合

z

x

y

0P P

( ) 0 cos sinr rθ θ θ= = + +P P P U V

Vθπ− π

Uθr

Page 5: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

5

パラメトリック表現(cont.)

任意の曲面は,2個のパラメータによる陽関数形

式で表現できる.

平面の場合

z

x

y

0P P

( ) 0,u v u v= = + +P P P U V

V

uU

v

Page 6: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

6

パラメトリック表現(cont.)

任意曲面の2個のパラメータによる表現(cont.)円柱面の場合

z

x

y

0PPV

Uθr

W

( ) 0, cos sinw r r wθ θ θ= = + + +P P P U V W

θ

w

π− π

Page 7: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

7

曲面セグメントと曲面パッチ

曲線あるいは曲面を一つの式で表現することは一般的には困難である.

そこで,複数の曲線あるいは曲面を接続して,全体の曲線あるいは曲面を表現する方法が用いられる.

そのときの曲線1本を曲線セグメント(curve segment),曲面1枚を曲面パッチ(surface patch)と呼ぶ.

問題となるのは,曲線・曲面形状を思いどおりに制御できるか.

曲線セグメントや曲面パッチがどのような式で記述されるか.

複数の曲線セグメントや曲面パッチを滑らかに接続できるか.

Page 8: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

8

制御点による曲線セグメントの生成

曲線の制御を容易にするために,点列から曲線を生成する方法が用いられる.

各点を制御点(control points),点列が作る多角形を制御多角形(control polygon)と呼ぶ.

Page 9: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

9

曲線セグメントの一般式

曲線セグメントの一般式は次の形式となる.制御点 {qi}i=0

n,パラメータ t∈[0,1] を用いて,

ここで, {Fi(t)}i=0n を重み関数あるいはブレンディング

関数と呼び,次式が成立するように与える.

なぜならば, q =qi (i=0,1,2,…,n) のとき,P (t) =q となる必要がある.

( ) ( ) ( )0

0 1n

i ii

t F t t=

= ≤ ≤∑P q

( )0

1n

ii

F t=

=∑

Page 10: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

10

ベジェ曲線

n 次のベジェ曲線(Bézier curves)は n+1 個の制

御点から次式で表現される.

Bi(t) をバーンスタインの基底関数(Bernstein basic function)と呼ぶ.

( ) ( ) ( )

( ) ( ) ( )

0

0 1

!1 , ! !

nni i

i

n in ii n i n i

t B t t

nB t C t t Ci n i

=

= ≤ ≤

= − =−

∑P q

( ) ( ){ }1 1n nn

iB t t t= − + =∑1i=

Page 11: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

11

ベジェ曲線(cont.)

3次 (n=3) のベジェ曲線を図示すると,

Page 12: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

12

ベジェ曲線(cont.)

ベジェ曲線の特徴凸閉包性(convex hull property)

2つの立体の干渉チェックに利用される.

( ) ( ) ( )1

1, 0 0,1, 2, ,n

n ni i

iB t B t i n

=

= ≥ =∑ K

Page 13: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

13

ベジェ曲線(cont.)

ベジェ曲線の特徴(cont.)制御ポリゴンと曲線の類似性

制御多角形を滑らかにした形状となる.

端点を通る.

端点における t に関する微分は端点

に隣接した制御点の位置で決まる.

( ) ( )00 , 1 n= =P q P q

( ) ( )( ) ( ) ( ) ( ) ( ) ( )

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

11

1 1 0 10

2 222

2 1 1 2 1 1 02 20

d d 0 d 1 0 1 ,

d d dd d 0

1 0 1 1 , ...d d

nni i i n n

i

nni i i i i

i

tn B t t n n

t t tt

n n B t t n nt t

−−

+ −=

−−

+ + +=

= − ≤ ≤ ⇒ = − = −

= − − − − ≤ ≤ ⇒ = − − − −

P P Pq q q q q q

P Pq q q q q q q q

   

   

0q

1q2q

3q( ) ( )2 1 1 0− − −q q q q

Page 14: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

14

ベジェ曲線(cont.)

ベジェ曲線の特徴(cont.)補足

ベジェ曲線の t に関する微分

( ) ( ) ( ) ( )

( ) ( ) ( ) ( )( ) ( ) ( ) ( )( ) ( ) ( )

( )( ) ( ) ( )

0 01 2 2

0 0 1 1 2 2

1 2 10 0 1 1 1 1

3 222 2 2 2

1 0 1

1 1 1 0 1

d1 1 1 1 1 1

d 2 1 1 2 1

n nn in i

i i n i ii i

n n n nn n n n n n

n n nn n n

n nn n

t B t C t t t

C t C t t C t t C t t

tn C t n C t t C t

tn C t t C t t

= =

− −

− − −

− −

= = − ≤ ≤

= − + − + − + + ≤ ≤

= − − + − − − + −

+ − − − + − + +

∑ ∑P q q

q q q q

Pq q q

q q

L

L

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

1

1 1 2 21 0 1 1 0 0 1 1 2 1 1 1

1 11 1 1 1 1

1 11 1

1 1 10 0

1 1 1 1

1 0 1

nn n n

n n n nn n n n

n nn n n n n n

n nn i i n

n i i i i i ii i

n C t

n C t C t C t t C t t

C t C t

C t t n B t t

− − − −− − − −

− −− − − − −

− −− − −

− + += =

= − − − + − − −

+ + −

= − − = − ≤ ≤∑ ∑

q

q q q q

q q

q q q q

L

Page 15: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

15

ベジェ曲線(cont.)

ベジェ曲線の分割

ベジェ曲線には次の性質がある.

( ) ( )( ) ( ) ( ) ( ) ( )( )

0

1 11

0,1, 2, ,

1 1, 2, , 0,1, 2, ,i i

r r ri i i

t i n

t t t t t r n i n r− −+

= =

= − + = = −

q q

q q q

K

K K

( )00 0t =q q

( )01 1t =q q

( )02 2t =q q

( )03 3t =q q

( )10 tq

t

( )1 t− t ( )1 t−t

( )1 t−

t

( )1 t−t

( )1 t−

( )11 tq

( )12 tq

( )20 tq ( )2

1 tq

( )30 tq

( ) ( )0n t t=q P

Page 16: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

16

ベジェ曲線(cont.)

ベジェ曲線の分割(cont.)P(t) で分割したとき,生成される2つのベジェ曲線の制御点は次のようになる(de Casteljau のアルゴリズム).

( ) ( ) ( ) ( )( ) ( ) ( ) ( )

0 1 20 0 0 0

3 1 20 2 1 0

, , , ,

, , , ,

n

n

t t t t

t t t t

⎧⎪⎨⎪⎩

q q q q

q q q q

K

K

Page 17: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

17

ベジェ曲線(cont.)

ベジェ曲線の接続

分割で用いた関係を用いる.次数の同じ2つベジェ曲線の端点を一致させる(C0 連続).

接続している端点とその隣の制御点が同じ直線上にある(G1 連続).

( )00 0t =q q

( )01 1t =q q

( )02 2t =q q

( )03 3t =q q

( )10 tq

t

( )1 t− t ( )1 t−t

( )1 t−

t

( )1 t−t

( )1 t−

( )11 tq

( )12 tq

( )20 tq ( )2

1 tq

( )30 tq

Page 18: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

18

ベジェ曲線(cont.)

ベジェ曲線の接続(cont.)分割で用いた関係を用いる.(cont.)

t に関する1次微分まで連続( C1 連続)の条件

t に関する2次微分まで連続(C2 連続)の条件

0q

1q

2q 3 0=q r1r

2r

3r

1 2 3 0 1 22 2− + = − +q q q r r r

3 2 1 0− = −q q r r

Page 19: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

19

ベジェ曲線(cont.)

ベジェ曲線の次数上げ曲線 P(t) の形状を変えずに次数を上げる.

P(t) と新しい曲線 P’(t) は次式となる.

P(t)=P’(t) から,次の関係を得る.

( ) ( ) ( )

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

0 0

1 1

0 01 1

111

0 0

1

1 1 1 1

1

n nn in i

i i n i ii i

n nn i n i n ii i i

n i i n i ii i

n nn in i

i i n i ii i

t B t C t t

t t C t t C t t t t

t B t C t t

= =

− + − − +

= =

+ ++ −+

+= =

= = −

= − − − = − + −

′ ′ ′= = −

∑ ∑

∑ ∑

∑ ∑

P q q

q q

P q q

1 1 1 1 11 1n i i n i i n i i i i i

i iC C Cn n+ − − −

⎛ ⎞′ ′= − ⇒ = + −⎜ ⎟+ +⎝ ⎠q q q q q q

Page 20: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

20

有理ベジェ曲線

ベジェ曲線(n 次の多項式)では表現できる曲線

の精度に制限がある.

例えば,円錐や楕円などはベジェ曲線では正確に表現できない.

半径1,中心角45度の円弧に対応する3次のベジェ曲線を生成した場合,最大誤差は 2×10−6 程度となる.

その制限をなくすために,ベジェ曲線を拡張した表現が有理ベジェ曲線である.

Page 21: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

21

有理ベジェ曲線(cont.)有理ベジェ曲線の表現方法

有理ベジェ曲線は次のように表現される.

ここで, wi は制御点 qi の持つ重みを表す.

重みの効果wi=1 (i=0,1,2,…,n) のとき,ベジェ曲線と一致する.

wi=0 のとき,制御点 qi を無視する.

( )( )

( )( )0

0

0 1

nni i i

in

ni i

i

B t wt t

B t w

=

=

= ≤ ≤∑

qP

Page 22: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

22

有理ベジェ曲線(cont.)有理ベジェ曲線による円錐曲線の生成

円錐曲線とは,次式を満たす (x,y) (陰関数表現)からなる2次曲線である.

円錐曲線は,2次の有理ベジェ曲線に変換される.

w=0 のとき,直線0<w<1 のとき,楕円曲線w=1 のとき,放物線w>1 のとき,双曲線

2 21 2 3 4 5 6 0c x c xy c y c x c y c+ + + + + =

( ) ( ) ( ) ( )( ) ( ) ( )

2 2 20 0 1 1 2 2

2 2 20 1 2

B t B t w B tt

B t B t w B t+ +

=+ +

q q qP

Page 23: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

23

有理ベジェ曲線(cont.)

円錐曲線の生成(cont.)円弧曲線の場合

証明は文献4参照

θ

cosw θ=

0q

1q

2q

Page 24: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

24

B-スプライン曲線

ベジェ曲線の問題点制御点の移動が曲線全体に影響する.

制御点の数が曲線の次数を決めてしまう.

セグメント数を少なくして,次数を上げれば,高次の振動が発生しやすくなる.

セグメント次数を多くすれば,接続条件の扱いが煩雑になる.

B-スプライン曲線の特徴(Bは基底(basis)の意味)

制御点の数は(曲線の次数+1)以上であればいくつでもよい.

複数のセグメントにまたがった曲線を使用する.

セグメント間は(曲線の次数−1)の微分まで一致する.

Page 25: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

25

B-スプライン曲線(cont.)

ベジェ曲線の接続によってB-スプライン曲線を

導出してみよう.

0q

1q

2q

3q

4q

1 1 22 13 3

= +r q q

2 1 21 23 3

= +r q q

3 3 21 23 3

= +r q q

0 14 2

+=

r rr

2 35 2

+=

r rr

nq0 0 11 23 3

= +r q q

Page 26: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

26

B-スプライン曲線(cont.)

ベジェ曲線の接続でB-スプライン曲線(cont.)r4, r1, r2, r5 を制御点とする3次のベジェ曲線 P0(t)

( ) ( ) ( ) ( )

( ) ( ) ( )

( ) ( ) ( )

3 2 2 30 4 1 2 5

3 3 30 1

33 3 3

2 3

1 3 1 3 1

1 2 1 1 1 26 3 6

2 1 1 2 33 6 6

t t t t t t t

t t t

tt t t

= − + − + − +

⎛ ⎞= − − + − − −⎜ ⎟⎝ ⎠

⎛ ⎞+ − − + − − − +⎜ ⎟⎝ ⎠

P r r r r

q q

q q

Page 27: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

27

B-スプライン曲線(cont.)

ベジェ曲線の接続でB-スプライン曲線(cont.)それに接続する3次のベジェ曲線 Pi(t) (i≤t≤i+1) (i=1, 2, …, n−3) を次々生成すると B-スプライン曲線となる.

( ) ( ) ( ) ( ) ( )

( ) ( )

( ) ( ) ( )

( ) ( ) ( ) ( )

( ) ( )

4 4 4 41 1 2 2 3 3

34

3 341

3 3 342

343

1 16

2 11 23 6

2 11 2 33 6

16

i i i i i i i i i

i

i

i

i

t N t N t N t N t

N t t i

N t t i t i

N t t i t i t i

N t t i

+ + + + + +

+

+

+

= + + +

= − − −

= − − − − −

= − − − + − − − − −

= −

P q q q q

i=0 のとき

Page 28: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

28

ベジェ曲線の接続でB-スプライン曲線(cont.)P0(t) (0≤t≤1) の定義域を拡張して表示する.

P0(t) (0≤t≤1), P1(t)=P0(t−1) (1≤t≤2), P2(t)=P0(t−2) (2≤t≤3), P3(t)=P0(t−3) (3≤t≤4) をまとめて表示する.

B-スプライン曲線(cont.)

t

t

Page 29: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

29

B-スプライン曲線(cont.)

B-スプライン曲線の計算

コックス(Cox)とド・ブール(de Boor)の計算法

n+1 個の {qi}i=0n を制御点とした位数 k (前の例では

k=4) ,次数 k−1 (2≤ k≤n+1) のB-スプライン曲線は,ノット(knot) x0≤ x1 ≤ ...≤ xk+n を用いて t∈[x0, xk+n] において次式のように再帰的に表現される.

( ) ( )

( )( )( )

( ) ( ) ( ) ( ) ( )

0

11

1

1 11

1 1

1

0 ,

nki i

i

i ii

i i

k ki i i k ik

ii k i i k i

t N t

x t xN t

t x t x

t x N t x t N tN t

x x x x

=

+

+

− −+ +

+ − + +

=

≤ ≤⎧⎪= ⎨< >⎪⎩

− −= +

− −

∑P q( )

( )( ) ( )

( ) ( )( ) ( )

( )( )

1

2

1 31

2 41

1 32 1

22

13

i

i

i i

i i

i i

i

i

N tN t

N t N tN t N t

N t N tN t

N t

+

+

+ +

+

+

Page 30: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

30

B-スプライン曲線(cont.)

B-スプライン曲線の特徴

多項式曲線:ノット間で k−1 次の多項式曲線である.

連続性:ノットでは Ck−2 連続である.

凸閉包性

制御性

制御点の移動による影響はその制御点の回りの位数個の曲線セグメントに限定される.

( ) ( ) ( )1

1, 0 0,1, 2, ,n

k ki i

i

N t N t i n=

= ≥ =∑ K

Page 31: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

31

B-スプライン曲線(cont.)

B-スプライン曲線の特徴(cont.)補足

B-スプライン曲線の t に関する微分

( ) ( )

( )( )( )

( ) ( ) ( )

( ) ( )

( ) ( )

( )

( ) ( ) ( ) ( )

00

111

11 11

111

1

1

ddd d

1 d 00 , d

dd

n knkii i

iii

i i ii

i ik kkki i iii ik

ii k ii k i

ki k i

i k i

Nt N t t tt t

x t x NN t tt x t x t

N t t x N tNt x N t tN t t x xx x

x t N tx x

==

+

+− −−

+ −+ −

−+ +

+ +

⎫= ⎪ =

⎪⎪≤ ≤⎧⎪= ⎪ =⎨

< > ⎪⎪ ⎪⎩ ⇒⎬ + −− ⎪ == ⎪ −− ⎪⎪−

+ ⎪− ⎪⎭

∑ ∑PP q q

&

( ) ( ) ( )1 11 1

1

k k

i m i i

i k i

x t N t N tx x

− −+ + +

+ +

⎧⎪⎪⎪⎪⎪⎨⎪⎪⎪

− −⎪ +⎪ −⎩

&

Page 32: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

32

B-スプライン曲線(cont.)

ノットベクトルと曲線の関係一様(uniform)

ノットベクトルの増加が一定位数 k=3 ,制御点の個数 n+1=5 ノットベクトル {x0, x1 , ...,x7}={0,1,2,3,4,5,6,7}位数 k=4 ,制御点の個数 n+1=4 ノットベクトル {x0, x1 , ..., x7}={−3, −1,0,1,3,7,9,11}

0q

1q

2q

3q4q

0q

1q 2q

3q

Page 33: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

33

B-スプライン曲線(cont.)

ノットベクトルと曲線の関係(cont,)開一様(open uniform)

ノットベクトルが両端で位数だけ重複している.位数 k=3 ,制御点の個数 n+1=5 ノットベクトル {x0, x1 , ..., x7}={0,0,0,1,2,3,3,3}位数 k=4 ,制御点の個数 n+1=4 ノットベクトル {x0, x1 , ...,x7}={0,0,0,0,1,1,1,1}:3次の有理ベジェ曲線と一致

0q

1q

2q

3q4q

0q

1q 2q

3q

Page 34: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

34

B-スプライン曲線(cont.)

ノットベクトルと曲線の関係(cont,)非一様(non-uniform)

一様,開一様でない場合位数 k=3 ,制御点の個数 n+1=5 ノットベクトル {x0, x1 , ...,x7}={0,1,2,3,3,4,5,6}位数 k=4 ,制御点の個数 n+1=4 ノットベクトル {x0, x1 , ...,x7}={0,1,2,3,4,4,4,4}

カスプ(cusp):中間

ノットが次数個だけ重なった部分

0q

1q 2q

3q0q

1q

2q

3q4q

Page 35: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

35

B-スプライン曲線(cont.)

B-スプライン曲線の分割

ノットベクトルにノットを挿入し,元の曲線と形状を変えないように新しいノットベクトルを持つ曲線を求めることで可能となる(オスロ(Oslo)アルゴリズム).

詳細は文献4参照

Page 36: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

36

NURBS 曲線

B-スプライン曲線(k−1 次の多項式)も,ベジェ曲線と同

様,円錐や楕円などを正確に表現できない.有理 B-スプライン曲線であれば表現できる.

非一様な有理 B-スプライン (Non-Uniform Rational B-Spline)曲線を NUEBS 曲線と呼ぶ.

ここで, wi は制御点 qi の持つ重みを表す.

( )( )

( )( )0

0

0 1

nki i i

in

ki i

i

N t wt t

N t w

=

=

= ≤ ≤∑

qP

Page 37: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

37

NURBS 曲線(cont.)

NURBS 曲線の特徴

非一様な B-スプライン曲線の特徴を引き継いでいる.

中間ノットを多重化することによって複数の曲線を接続したような曲線を表せる.

折れ曲がった曲線も1セグメントで表せる.表現力の高さが評価されて,IGES (Initial Graphics Exchange Specification)に取り入れられた.

Page 38: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

38

NURBS 曲線(cont.)

NURBS 曲線による円錐曲線の生成

円錐曲線は,2次曲線(k=3)であるので,制御点の個数 n+1=3 として,ノットベクトルを {x0, x1 , ...,x5}={0,0,0,1,1,1} とすれば,有理ベジェ曲線と一致す

る.以下,有理ベジェ曲線による円錐曲線の生成方法に従う.

Page 39: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

39

NURBS 曲線(cont.)

NURBS 曲線による円の生成

円を1セグメントで表す場合,制御点 q0, q1, q2 の中心角を90度として,次のように設定すればよい.

ノットベクトル

重みベクトル

{ }0 1 11, , ,{0,0,0,1,1,2,2,3,3,4,4,4}x x x=

L

{ }0 1 8, , ,1 1 1 1{1, ,1, ,1, ,1, ,1}2 2 2 2

w w w

=

L

8 0=q q 1q

2q

3q4q5q

6q

7q

Page 40: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

40

曲面パッチの一般式

曲面パッチの一般式は次の形式となる.制御点 {qij}i,j=0

n,パラメータ (u,v)∈[0,1]2 を用いて,

ここで, {Fi(t)}i=0n を重み関数あるいはブレンディング

関数と呼び,次式が成立するように与える.

なぜならば, q =qij (i,j=0,1,2,…,n) のとき,P (u,v) =q となる必要がある.

( ) ( ) ( ) ( ) ( )0 0

, 0 1 0 1n n

i j iji j

u v F u F v u v= =

= ≤ ≤ ≤ ≤∑∑P q

( )0

1n

ii

F t=

=∑

Page 41: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

41

ベジェ曲面

n 次のベジェ曲面(Bézier curves)は (n+1)2 個の

制御点から次式で表現される.

Bi(u) はバーンスタイン

の基底関数である.

( ) ( ) ( ) ( ) ( )

( ) ( )

( )

0 0, 0 1 0 1

1!

! !

n nn ni j ij

i j

n in ii n i

n i

u v B u B v u v

B u C u unC

i n i

= =

= ≤ ≤ ≤ ≤

= −

=−

∑∑P q

Page 42: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

42

ベジェ曲面(cont.)

ベジェ曲面の特徴凸閉包性(convex hull property)

2つの曲面の干渉チェックに利用される.

制御ポリゴンと曲線の類似性

制御多面形を滑らかにした形状となる.

4つの端点を通る.

端点における u,v に関する偏微分は端点に隣接した制御

点の位置で決まる.

( ) ( )( ) ( )

( ) ( )( ) ( )

1 00

1 00

,0 0 1

0, 0 1

nni i i

in

nj j j

j

u n B u uv

v n B v vu

=

=

∂= − ≤ ≤

∂∂

= − ≤ ≤∂

P q q

P q q

Page 43: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

43

ベジェ曲面(cont.)

ベジェ曲面の特徴

隣り合う曲面を滑らかに接続するためには,接続する端点で両立性条件(compatibility condition)を満たす

ように制御点を配置する必要がある.

( ) ( ) ( ) ( )

( ) ( ) ( ) ( ) ( )( )

( ) ( ) ( ) ( )

2

11 10 01 000 0

2

1 0 1 1 1 01 0

2

1 1 10 1

,0 0, 0,0 9

,0 1, 1,0 9

,1 0, 0,1 9

u v

n n n nu v

n nu v

u vu v v u u v

u vu v v u u v

u vu v v u u v

= =

− −= =

−= =

∂ ∂ ∂ ∂ ∂⎛ ⎞ ⎛ ⎞= = = − − +⎜ ⎟ ⎜ ⎟∂ ∂ ∂ ∂ ∂ ∂⎝ ⎠ ⎝ ⎠

∂ ∂ ∂ ∂ ∂⎛ ⎞ ⎛ ⎞= = = − − +⎜ ⎟ ⎜ ⎟∂ ∂ ∂ ∂ ∂ ∂⎝ ⎠ ⎝ ⎠

∂ ∂ ∂ ∂ ∂⎛ ⎞ ⎛ ⎞= = = − −⎜ ⎟ ⎜ ⎟∂ ∂ ∂ ∂ ∂ ∂⎝ ⎠ ⎝ ⎠

P P P q q q q

P P P q q q q

P P P q q ( )( )

( ) ( ) ( ) ( ) ( ) ( )( )( )

0 0 1

2

1 1 1 11 1

,1 1, 1,1 9

n n

nn n n n n n nu v

u vu v v u u v

− − − −= =

+

∂ ∂ ∂ ∂ ∂⎛ ⎞ ⎛ ⎞= = = − − +⎜ ⎟ ⎜ ⎟∂ ∂ ∂ ∂ ∂ ∂⎝ ⎠ ⎝ ⎠

q q

P P P q q q q

Page 44: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

44

有理ベジェ曲面

ベジェ曲面では,境界曲線がベジェ曲線となる.ベジェ曲線では表現できる曲線の精度に制限があった.

その制限をなくすために,ベジェ曲面を拡張した表現が有理ベジェ曲面である.

Page 45: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

45

有理ベジェ曲面(cont.)有理ベジェ曲面の表現方法

有理ベジェ曲面は次のように表現される.

ここで, wij は制御点 qij の持つ重みを表す.

重みの効果wij=1 (i,j=0,1,2,…,n) のとき,ベジェ曲線と一致する.

wij=0 のとき,制御点 qij を無視する.

( )( ) ( )

( ) ( )( ) ( )0 0

0 0

, 0 1 0 1

n nn ni j ij ij

i jn n

n ni j ij

i j

B u B v wu v u v

B u B v w

= =

= =

= ≤ ≤ ≤ ≤∑∑

∑∑

qP

Page 46: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

46

有理ベジェ曲面(cont.)

有理ベジェ曲面の特徴

ベジェ曲面の特徴を引き継いでいる.

凸閉包性(wij≥0のとき)

制御ポリゴンと曲線の類似性

2次曲面を正確に表現できる.

端点における u,v に関する偏微分は隣接する制御点

とその重みから計算できる.

( ) ( ) ( ) ( )10 10 00 01 01 00

00 00

3 30,0 , 0,0

w wu w v w

− −∂ ∂= =

∂ ∂q q q qP P

Page 47: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

47

有理ベジェ曲面(cont.)

有理ベジェ曲面の特徴(cont.)補足

ベジェ曲面の u,v に関する偏微分

( )( )( ) ( )

( )

( ) ( )( )

( )

1 1 0 0 00 0

2

00

0 0 1 00 0

2

00

,0

n nn ni i i i i i i

i i

nni i

i

n nn ni i i i i i

i i

nni i

i

n B u w w B u wu

vB u w

n B u w B u w w

B u w

= =

=

= =

=

−∂

=∂ ⎛ ⎞

⎜ ⎟⎝ ⎠

−−

⎛ ⎞⎜ ⎟⎝ ⎠

∑ ∑

∑ ∑

q qP

q

Page 48: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

48

NURBS 曲面

ベジェ曲面では,隣り合う曲面を滑らかに接続するためには両立性条件を満たす必要があった.B-スプライン曲面はB-スプライン曲線の基底関数を繰り返し用いることで接続の制約を不要とした.非一様な有理 B-スプライン曲面を NUEBS 曲面と呼ぶ.

wij は制御点 qij の持つ重み,Nik, Ni

l は k−1 次,l−1 次のB-スプライン曲線の基底関数,u,v 方向のノットベクトルを {x0, x1 , ...,xn+k}, {y0, y1 , ..., ym+l} とする.

( )( ) ( )

( ) ( )( ) ( )0 0

0 0

, 0 1 0 1

n mk li j ij ij

i jn m

k li j ij

i j

N u N v wu v u v

N u N v w

= =

= =

= ≤ ≤ ≤ ≤∑∑

∑∑

qP

Page 49: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

49

NURBS 曲面(cont.)NURBS 曲面の特徴

多項式曲面:ノット間で (k−1)×(l−1) 次の多項式曲面である.

中間ノットを多重化することによって複数の曲面を接続したような曲面を表せる.

折れ曲がった曲面も1セグメントで表せる.

連続性:ノットが多重化されていない場合,ノットでは,u,v 方向に Ck−2,Cl−2 連続である.

凸閉包性(wij≥0のとき)

制御性

制御点の移動による影響はその制御点の回りの位数個の曲面パッチに限定される.

Page 50: 自由曲面を表現する - ocw.nagoya-u.jp · 有理ベジェ曲線 zベジェ曲線(n 次の多項式)では表現できる曲線 の精度に制限がある. z例えば,円錐や楕円などはベジェ曲線では正確に表

50

参考文献

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

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

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

4. 3次元CADの基礎と応用, 鳥谷浩志,千代倉弘明 編著, 共立出版, 1991.