Transcript Document
Computer Graphics
第6回
モデリング2
曲線・曲面,その他の表現手法
芝浦工業大学情報工学科
青木 義満
曲線・曲面
曲線・曲面
コンピュータ内部では,全て数式として表現
立体の稜線を表現するための曲線の式
面を表現するための曲面の式
曲線・曲面の分類
数式の形式により,以下の3種類に分類
陰関数形式
パラメータ形式
陽関数形式
曲面の例
2006/05/22
Computer Graphics
2
パラメトリック曲線・曲面
工業製品設計
フォント(TrueType Font)
ベジェ曲線・曲面
2006/05/22
1966年、ルノーの車体設計を行うための
曲面としてBezierによって提案
Computer Graphics
3
パラメトリック曲線・曲面の利用
2006/05/22
Computer Graphics
4
陰関数形式
• 平面曲線: f(x, y) = 0
• 曲面: f(x, y, z) = 0
• 空間曲線: f(x, y, z) = g(x, y, z) = 0
(曲面fと曲面gの交線)
xy平面上の原点中心,半径rの円
f x, y x2 y 2 r 2 0
原点中心,半径rの球面
2
2
2
2
f x, y, z x y z r 0
2006/05/22
Computer Graphics
5
陰関数形式表現の特徴
長所
交点計算に適している
例) 球面と,直線との交点
x p xv
直線: P tV y p t yv
z z
p v
x
交点
2
2
2
2
f
x
,
y
,
z
x
y
z
r
0
球面:
2
2
2
2
tx
y
ty
z
tz
r
0
p
v
p
v
p
v
tに関する2次方程式
↓
交点
レイトレーシング法(光線追跡法)に適している
(後述)
2006/05/22
Computer Graphics
6
陰関数形式表現の特徴
長所
数式で曲線,曲面の領域を区分可能
位置,衝突判定に適する
f(x,y,z)<0 (球の内部)
f(x,y)=0
f(x,y,z)=0 (境界面)
f(x,y)>0
f(x,y)<0
f(x,y,z)>0 (球の外部)
2006/05/22
Computer Graphics
7
陰関数形式表現の特徴
短所
座標値を計算により求める必要
適当な間隔でサンプリングするのに適さない
格子状の点列から多面体を形成
パラメータ形式,陽関数形式の方が適する
y
x
2006/05/22
曲線・曲面上の点列計算
→ 各軸に平行な格子線との
交点を計算
Computer Graphics
8
パラメータ形式
パラメータ(媒介変数)を介して,曲線・曲面を定
義する方法
曲線:1つのパラメータtに対して,2D,3D空間内
の点を対応させる
曲面:2つのパラメータ(u, v)に対して3D 空間内
の点を対応させる
平面曲線: x=f(t), y=g(t)
空間曲線: x=f(t), y=g(t), z=h(t)
曲 面 : x=f(u,v), y=g(u,v), z=h(u,v)
2006/05/22
Computer Graphics
9
パラメータ形式表現の例
円のパラメータ形式表現
x r cost
y r sin t
0 t 2
パラメータtを変化させることで,
円を記述
c.f. 陰関数形式
f x, y x2 y 2 r 2 0
球面のパラメータ形式表現
x r cosu cosv
パラメータu, vを変化させることで,
球面を記述
y r sin u cosv
z r sin v, 0 u 2 ,0 v 2
パラメトリック曲線,パラメトリック曲面
2006/05/22
Computer Graphics
10
パラメトリック形式の特徴
CGで最も多用される曲線,曲面
長所
曲線・曲面上の点列を求めることが容易
曲線の場合
ti ti 1 t
曲面の場合
ui ui 1 u
vi vi 1 v
2006/05/22
曲線のパラメータ形式表現
x=f(t), y=g(t), z=h(t)
パラメータ値を繰り返し代入
→ 曲線・曲面上の点列
曲面のパラメータ形式表現
x=f(u,v), y=g(u,v), z=h(u,v)
Computer Graphics
11
パラメトリック形式の特徴
短所
交点計算に適さない
(レイトレーシングには適さず)
x r cosu cosv
x p xv
y r sin u cosv
直線: P tV y p t yv
z z 連立
z r sin v, 0 u 2 ,0 v 2
p v
x p txv r cosu cos v
y p tyv r sin u cos v
z p tzv r sin v
2006/05/22
3元1次連立方程式
→ 解きにくい式
Computer Graphics
12
パラメトリック曲線の描画アルゴリズム
x f (t ), y g (t )
0 t 1
t+Δt
t
Δt = 1/n ;
t=0;
x1 = f(0); y1 = g(0);
for( i=1; i <= n; i++ ){
t = t + Δt ;
x2 = f(t); y2 = g(t);
DrawLine ( x1, y1) to ( x2, y2);
x 1 = x 2 ; y 1 = y 2;
t+3Δt
t+2Δt
t+4Δt
t+5Δt
}
2006/05/22
Computer Graphics
13
陽関数形式
1つの座標値の関数として他の座標値を求める形式
平面曲線: y = f(x)
x→y
x,y→z
曲面: z = f(x,y)
放物線(陽関数形式)
yx
放物線(陰関数形式)
x2 y 0
放物線(パラメータ形式)
2
z
x t, y t
2
(x,y)
x2 y 2
回転放物面(陽関数形式) z 2 2
a a
x2 y 2
回転放物面(陰関数形式) a2 a2 z 0
回転放物面(パラメータ形式)
2006/05/22
u 2 v2
x u, y v, z 2 2
a a
Computer Graphics
14
2次曲線
2次多項式(陰関数形式)
ax2 by2 c 2dxy 2ex 2 fy 0
円錐面の断面線
楕円, 放物線, 双曲線
楕円
2
2
陰関数形式
パラメータ形式
放物線
陽関数形式
双曲線
陰関数形式
2006/05/22
x y
2 1 ( a, b 0)
2
a a
x a cos , y b sin
y 2 4ax ( x
1 2
y)
4a
x2 y 2
2 1 ( a, b 0)
2
a b
Computer Graphics
15
パラメトリック曲線
パラメータの陽関数形式: C=F(t)
CGで用いられる曲線
エルミート(Hermite)曲線
ベジエ(Bezier)曲線
Bスプライン(B-spline)曲線
有理ベジエ(Rational Bezier)曲線
非一様有理Bスプライン曲線(NURBS)
2006/05/22
Computer Graphics
16
ベジエ曲線
与えられた点(制御点)に沿って,滑らかな曲線を描く方法
例)3点 p0, p1, p2 に沿った曲線を描く
パラメータ tを用いて,点 p0と点 p1の中間点
を求めると,
p1
p01
p0
p02
p11
p2
p10 (t ) (1 t )p0 tp1
同様に,点 p1と点 p2の中間点を求めると,
p11 (t ) (1 t )p1 tp2
点p10と点 p11を結ぶ直線状の点p02 (t)は,
p02 (t ) (1 t )p10 tp11
(1 t )2 p0 2t (1 t )p1 t 2p2
(
tの2次式 放物線)
2006/05/22
Computer Graphics
17
ベジェ曲線
p1
p0
p2
pi
pi+1
N個の点p1~p N,点 piを端点として r回目の中間点は,p
N
pir (t ) ( 1 t )pir 1 (t ) tpir11 (t )
これを繰り返して得ら れる点を結んだものが
ベジェ曲線
N個の点: 制御点
曲線上の点P(t)は,制御点Piの加重平均
として表される
2006/05/22
Computer Graphics
18
ベジェ曲線
3次ベジェ曲線
4個の制御点p0~p3
p(t ) ( 1 t )3 p0 3t (1 t )2 p1 3t 2 (1 t )p2 t 3p3
B03 (t )p0 B31(t )p1 B23 (t )p2 B33 (t )p3
3
B3i (t )pi
i 0
重み係数
バーンスタイン関数
(Bernstein)
n!
B (t )
t i (1 t )ni
(n 1)!i!
n
i
n
n
B
i (t ) 1
i 0
2006/05/22
Computer Graphics
19
ベジェ曲線
3次ベジェ曲線
Bernstein関数
3次係数
0次係数
1次係数
2次係数
t=0
2006/05/22
Computer Graphics
t=1
20
2次曲面
2次多項式によって表現される代数曲面
ax2 by2 cz2 d 2eyz 2 fzx 2gxy 2hx 2iy 2 jz 0
点対称: 2次曲面の中心
中心有り: 有心
中心無し: 無心
9種類
楕円面,一葉双曲面,二葉双曲面,楕円錐面
楕円放物面,双曲放物面,楕円柱面,双曲柱面,
放物柱面
2006/05/22
Computer Graphics
21
二次曲面
2
2
2
x y z
2 2 1
2
a b c
楕円面
2006/05/22
x2 y 2 z 2
2 2 1
2
a b c
x2 y 2 z 2
2 2 2 1
a b c
一葉双曲面
二葉双曲面
Computer Graphics
22
二次曲面
2
2
2
x y z
2 2 0
2
a b c
楕円錐面
2006/05/22
x2 y 2
z 2 2
a b
x2 y 2
z 2 2
a b
楕円放物面
双曲放物面
Computer Graphics
23
二次曲面
2
2
x y
2 1
2
a b
楕円柱面
2006/05/22
x2 y 2
2 1
2
a b
双曲柱面
Computer Graphics
y 2 4ax
放物柱面
24
パラメトリック曲線・曲面
Bezier 曲線・曲面
B-Spline 曲線・曲面
有理 B-Spline, NURBS
細分割曲線・曲面
2006/05/22
Computer Graphics
25
Bezier曲面
2006/05/22
Computer Graphics
26
m x n 次 Bezier曲面式
2006/05/22
Computer Graphics
27
【参考資料】曲線・曲面描画ソフト
Function View(フリーソフト)
作者:和田 啓助
http://hp.vector.co.jp/authors/VA017172/
Bezier Curve Generator Ver.2.0(フリーソフト)
http://www.dsgn.im.hiroshima-cu.ac.jp/~shimbara/program/
ISURFACE version 1.0.6 (フリーソフト)
2006/05/22
作者:戸野恵太
http://www.rimath.saitama-u.ac.jp/lab.jp/fsakai/tono.html
Computer Graphics
28
Bスプライン曲線
制御点{Pi}とノット列{ti}によって曲線を定義
複数の多項式曲線を接続して一本の曲線を作る
接続点でのパラメータをノットで指定
制御点の重み付けにBスプライン関数を用い,関数
の定義にノット列を使用
ノット値が一定間隔:一様Bスプライン曲線
そうでないもの:非一様Bスプライン曲線
2006/05/22
Computer Graphics
29