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   x 2  y 2  r 2  0
原点中心,半径rの球面
f x, y, z   x  y  z  r  0
2
2006/05/22
2
2
2
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






tx

y

ty

z

tz

r
0
p
v
p
v
p
v
2
2
2
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   x 2  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 p   xv 
   
直線: P  tV   y p   t  yv 
z  z 
 p  v
x  r cosu cosv
y  r sin u cosv
連立
z  r sin v, 0  u  2 ,0  v  2
x p  txv  r cosu cosv
y p  tyv  r sin u cosv
z p  tzv  r sin v
2006/05/22
3元1次連立方程式
→ 解きにくい式
Computer Graphics
12
パラメトリック曲線の描画アルゴリズム
x  f (t ), y  g (t )
t+Δt
t
0  t 1
Δ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)
放物線(陽関数形式)
y  x2
放物線(陰関数形式)
x2  y  0
放物線(パラメータ形式)
z
x  t, y  t
2
(x,y)
x2 y2
回転放物面(陽関数形式) z  2  2
a
a
x2 y2
回転放物面(陰関数形式) a 2  a 2  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 y2
 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 に沿った曲線を描く

p1
p01
パラメータ tを用いて,点 p 0と点 p1の中間点
p0
を求めると,
p02
p11
p2
p10 (t )  (1  t )p 0  tp1
同様に,点 p1と点 p 2の中間点を求めると,
p11 (t )  (1  t )p1  tp 2
点p10と点 p11を結ぶ直線状の点p 02 (t)は,
p 02 (t )  (1  t )p10  tp11
 (1  t ) 2 p 0  2t (1  t )p1  t 2p 2
(
2006/05/22
tの2次式  放物線)
Computer Graphics
17
ベジェ曲線
p1
p0
p2
pi
pi+1
N個の点p1~p N ,点 p i を端点として r回目の中間点は, p
N
p ir (t ) ( 1  t )p ir 1 (t )  tp ir11 (t )
これを繰り返して得ら
れる点を結んだものが
ベジェ曲線
N個の点: 制御点
曲線上の点P(t)は,制御点Piの加重平均
として表される
2006/05/22
Computer Graphics
18
ベジェ曲線
3次ベジェ曲線
4個の制御点p 0~p 3
p(t ) ( 1  t )3 p 0  3t (1  t ) 2 p1  3t 2 (1  t )p 2  t 3p 3
 B 03 (t )p 0  B 31 (t )p1  B 23 (t )p 2  B 33 (t )p 3
3
  B 3i (t )p i
i 0
重み係数
バーンスタイン関数
(Bernstein)
n!
B (t ) 
t i (1  t ) n i
(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


1
2
2
2
a
b
c
楕円面
2006/05/22
x2 y 2 z 2
 2  2 1
2
a
b
c
x2 y2 z 2
 2  2  2 1
a
b
c
一葉双曲面
二葉双曲面
Computer Graphics
22
二次曲面
2
2
2
x
y
z


0
2
2
2
a
b
c
楕円錐面
2006/05/22
x2 y2
z 2  2
a
b
x2 y2
z 2  2
a
b
楕円放物面
双曲放物面
Computer Graphics
23
二次曲面
2
2
x
y

1
2
2
a
b
楕円柱面
2006/05/22
x2 y2
 2 1
2
a
b
双曲柱面
Computer Graphics
y  4ax
2
放物柱面
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