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 ir11 (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
© Copyright 2024 ExpyDoc