. 次元 CG Computer Graphics. 3-Dimension CG Numau College of Technolog Dept. of Computer & Control Production Sstem Lab. Version. 6.3.3. 次元 CG. 3 次元コンピュータグラフィックス. 3 次元座標系. 座標変換 ( 幾何変換 ).3 座標変換の基礎知識.4 座標変換 (Viewing).5 3Dクリッピング
. 3 次元座標系 右手座標系 Z Y 左手座標系 Z X 数学の世界 Y 違いは Z 軸の方向が逆 X CGの世界 (XY: スクリーン Z: 奥行き ). 座標変換 ( 幾何変換 ) 平行移動 t t t 拡大 縮小 回転 (X 軸 ) s s cosα sinα s -sinα cosα
平行移動 ( 幾何変換 : 図 ) Z Z t P(,,) P(,,) P(,,) X Y X t t Y 移動前 移動量 t,t,t 移動後 平行移動 ( 幾何変換 : 変換式 ) + t + t + t t t t Tt(t,t,t) 3
拡大 縮小 ( 幾何変換 : 図 ) Z 原点中心 Z s* P(,,) X P(,,) Y s* X P(,,) s* Y 変換前 拡大 縮小率 s,s,s 変換後 拡大 縮小 ( 幾何変換 : 変換式 ) 原点中心の回転 s s s Ts(s,s,s) 4
回転 ( 幾何変換 : 回転軸 ) Z 軸中心の回転移動 X 軸中心 Y 軸中心 Z 軸中心 YZ 平面内 ZX 平面内 XY 平面内 X 回転の方向は 軸先端からみて左回り Y 回転 ( 幾何変換 :X 軸回り ) Z X 軸回りの回転 Pr(r,r,r) α P(,,) cosα sinα -sinα cosα X Y Tr(α) 回転の方向は 軸先端からみて左回り 5
回転 ( 幾何変換 :Y 軸回り ) Z Y 軸回りの回転 Pr(r,r,r) β P(,,) cosβ -sinβ sinβ cosβ X Y Tr(β) 回転の方向は 軸先端からみて左回り 回転 ( 幾何変換 :Z 軸回り ) Z 軸回りの回転 Z cosγ sinγ -sinγ cosγ X Pr(r,r,r) γ P(,,) Y Tr(γ) 回転の方向は 軸先端からみて左回り 6
合成変換 次元と同様に同次座標系を用いる これらの変換はアフィン変換である 直線は直線に 直線上の点の比も維持される 次元と同様に一連の変換は 変換行列で表すことができる 変換の例任意点 (,,) を中心とする拡大 ( 幾何変換 ) X Tt(,,) Ts(s,s,s) Tt(-,-,-)X 任意点 (,,) を通り 軸に平行な直線を中心とした回転 ( 幾何変換 ) X Tt(,,) Tr(α) Tt(-,-,-)X 任意直線まわりの回転 点 (,,) を通り 単位ベクトルが (l,m,n) の直線回りに θ 回転させる変換 TTt(,,) Tr(-α) Tr(-β) Tr(θ) Tr(β) Tr(α) Tt(-,-,-) ここで cosα n m + n sinα m m + n cosβ m + n cosβ l 7
.3 座標変換の基礎知識.3. モデル座標とワールド座標.3. ワールド座標とビュー座標.3.3 ビュー座標とスクリーン座標.3.4 投影法.3. モデル座標とワールド座標 Z Z Y X Cone Z Y X Cube Z モデル座標 ( オブジェクト座標 ) 各プリミティブ毎に定めた座標 X Y Sphere X Clinder Y 8
モデル座標とワールド座標 World Coordinate Z Object Coordinate Z3 X ワールド座標 X3 Z Y 実際に表示を行う 3 次元空間 Y3 X Y Object Coordinate Object Coordinate 3.3. ワールド座標とビュー座標 ワールド座標 ( 右手座標系 ) ビュー座標 ( 左手座標系 ) [ カメラ座標ともいう ] 9
ワールド座標とビュー座標 ワールド座標 ( 右手座標系 ) ビュー座標 ( 左手座標系 ) [ カメラ座標ともいう ].3.3 ビュー座標とスクリーン座標 Screen Screen Ys Xs 視点 ビュー座標 ( 左手座標系 ) スクリーン座標 ( 次元 )
.3.4 投影法 並行投影 ( 正射影 ) Screen 透視投影 Screen 機械設計製図用 ( 長さが正確 ) 視点 遠近感がありデザイン用 ( 長さが正確ではない ) 投影法の比較 並行投影 ( 正射影 ) camera 透視投影
.4 座標変換.4. モデリング変換.4. 視野変換.4.3 投影変換.4.4 Viewing 座標変換 (Viewing) 描画までの座標変換 (Viewing) の手順 モデリング変換 空間と形状の定義 モデリング座標系からワールド座標系へ視点 目標点 スクリーンサイズ視野変換 ( 視界変換 ビューイング変換 ) ワールド座標系から視点 (View) 座標系へ 投影変換 ( 射影変換 ) 視点 (View) 座標系からスクリーン座標へ ( スクリーン座標からディスプレイ座標へ )
モデリング変換 Model Coordinate γ Z モデル座標 α H: 高さ R,R: 半径 X Y (C,C,C) β ワールド座標 World Coordinate 視点 View Coordination 視野変換 投影変換 Screen ViewPoint World Coordination Pw ワールド 視野変換 座標 座標の読替 Pw Pw Ps ビュー座標 Ps Ps 投影変換 視軸 座標の移動 目標点 TargetPoint スクリーン座標 3
.4. モデリング変換 Model Coordinate γ Z α H: 高さ R,R: 半径 X Y (C,C,C) β World Coordinate モデル座標原点の位置 :C,C,C 各軸回りの回転角 :α,β,γ モデリング変換 ( 変換パラメータ ) Model Coordinate γ Zm Zm α Pm(Pw) Xm Ym Cm β Pm Xm Ym World Coordinate Model Coordinate Pw(Pw,Pw,Pw) Pm(Pm,Pm,pm) 4
モデリング変換 ( 次元でのイメージ ) 配置後は見る座標系の原点が異なる モデリング変換 ( 平行移動 ) モデル座標原点をワールド座標の原点にあわせる Zm Xm Zm Cm -C -C -C Pm Pm Pm Xm Ym XTt Pm Ym 5
モデリング変換 (Y 軸回りの回転 ) Ym 軸を β 回転させ Zm 軸を Ym 平面にあわせる Zm Zm cosβ sinβ -sinβ cosβ Xm Xm β XT(β) X Ym Ym モデリング変換 (X 軸回りの回転 ) Xm 軸を α 回転させ Zm 軸を 軸にあわせる Xm,Ym は 平面内に移動する Zm Zm 3 3 3 cosα -sinα sinα cosα α Xm Xm Ym Ym X3T(α) X 6
モデリング変換 (Z 軸回りの回転 ) Zm 軸を γ 回転させモデリング座標をワールド座標にあわせる γ Zm Zm Pw Pw Pw cosγ sinγ -sinγ cosγ 3 3 3 Xm Xm Ym PwT(γ) X3 Ym モデリング変換 ( 変換式 ) World Coordinate Model Coordinate γ Zm α Pm(Pw) Xm Ym Cm β Pm(Pm,Pm,pm) XTt Pm XT(β) X X3T(α) X PwT(γ) X3 Pw(Pw,Pw,Pw) PwT(γ) T(α)T(β) Tt PmTmw Pm Pm Tt - T(β) - T(α) - T(γ) - PwTmw - Pw 7
.4. 視野変換 視点 View Coordination Screen ViewPoint World Coordination φ Pw Pw Pw 視点 :V(V,V,V)w 目標点 :T(T,T,T)w スクリーンサイズ :SX,SY 画面の傾き :γ 画角 :φ Ps Ps Ps 視軸 目標点 TargetPoint 視野変換と投影変換概要 ( 次元イメージ ) 視野変換 World View 投影変換 View Screen 画角 :φ 8
視野変換 (World to View) 視点 ViewPoint (V,V,V)w ワールド座標の値をビュー座標で読む View Coordination World Coordination Pv(Pv,Pv,Pv) Pw(Pw,Pw,Pw) 視軸 γ 目標点 TargetPoint (T,T,T)w 視野変換 ( 平行移動 ) 視点の原点をワールド座標原点に移動する 視点 -V -V -V Pw Pw Pw World Coordination XTt Pw 9
視野変換 (Y 軸回りの回転 ) 軸回りの角度 α の回転により 軸を 平面に重ねる cosα -sinα sinα cosα α XT(α) X Y 軸まわりの回転角 cosα sinα ( V T) V T ( V T) + ( V T) ( V T) + ( V T) ここで α は の先端から原点方向を見た場合の右回りを正とする TvV かつ TV の場合 ( 真上から物体を見る ) は分母が ZERO となり計算不能となるこの場合 cosα sinα とする
視野変換 (X 軸回りの回転 ) 軸回りの角度 β の回転により - 軸を 軸に合わせる β 3 3 3 cosβ -sinβ sinβ cosβ X3T(β) X X 軸まわりの回転角 cosβ ( V T) ( V T) + ( V T) + ( V T) + ( V T) sinβ ( V T) V T + ( V T) + ( V T) ここで β は の先端から原点方向を見た場合の右回りを正とする TvV かつ TV かつ TV の場合 ( 視点と目標点が同じ ) は分母が ZERO となり計算不能となるこの場合 目標点を視軸上に移動させる
視野変換 (Z 軸回りの回転 ) 軸回りの角度 γ の回転により 軸を 軸に合わせる γ 4 4 4 cosγ Sinγ -sinγ cosγ 3 3 3 X4T(γ) X3 視野変換 (Z 軸の反転 ) 右手座標から左手座標に変換する Pv Pv Pv - 4 4 4 PvT(-) X4
視野変換 (World to View: 変換式 ) 視点 ViewPoint (V,V,V)w View Coordination World Coordination Pv(Pv,Pv,Pv) Pw(Pw,Pw,Pw) 視軸 γ 目標点 TargetPoint (T,T,T)w Pw(Pw,Pw,pw) XTt Pw XT(β) X X3T(α) X X4T(γ) X PvT(-) X4 Pv(Pv,Pv,Pv) PvT(-)T(γ) T(α)T(β) Tt PwTwv Pw Pw Tt - T(β) - T(α) - T(γ) - T(-) - PwTwv - Pv 視野変換 ( 参考 ) ワールド座標とビュー座標が同じ右手座標系なら T(-) は不要である 視野変換は 座標を読み替えるだけであり 点は移動しない World to View PvT(-)T(γ) T(α)T(β) Tt() PwTwv Pw View to World Pw Tt() - T(β) - T(α) - T(γ) - T(-) - PwTwv - Pv 3
.4.3 投影変換 視点 View Coordination Screen(SX,SY) Pv ViewPoint (V,V,V)w Pw Pw Ps World Coordination Pw Ps Ps 視軸 γ 目標点 TargetPoint (T,T,T)w Pw(Pw,Pw,Pw) Pv(Pv,Pv,Pv) Ps(Ps,Ps,Ps) 投影変換 (View to Screen) SY SX Ps Screen Pv Pv(Pv,Pv,Pv) Ps(Ps,Ps,Ps) 4
投影変換 ( スクリーンまでの距離 ) SY SX Ps Screen depth φ SX: 画面の X サイズ Φ: 画角 ( 広角 望遠 ) スクリーンまでの距離 depth SX/tanφ 投影変換 ( 求め方 ) Ys Pv Pv Ps Ps SY Ps Pv depth/pv Pv depth SCREEN Xs Pv Pv Ps Ps SX Ps Pv depth/pv Pv depth SCREEN 5
投影変換 ( 行列表現 ) Ps Pvs Ps depth/pv depth/pv depth/pv Pv Pv P depth/pv Pv Pv P 但し スクリーン座標は 次元なので Ps は省略する Depth または Pv とならないように注意 投影変換 (View to Screen: 変換式 ) World to Screen Ps Tvs Pv Screen to World Tvs depth/pv Pv Tvs - Ps Tvs - Pv / depth Pvdepth とする 6
Pm Tmw - Pw Pw Twv - Pv Pv Tvs -.4.4 Viewing(Model-World-View-Screen) Model 座標 :Pm(pm,pm,pm) Ps ps d SX/ ps -d + SY/ モデリング変換 World 座標 :Pw(pw,pw,pw) 視野変換 View 座標 :Pv(pv,pv,pvw) 投影変換 Screen 座標 :Ps(pv,pv) displa 座標 :Pd(pd,pd) PwTmw Pm PvTwv Pw Ps Tvs Pv pd s + SX/ pd -s + SY/ Viewing(Model-World-View) 視点 View Coordination Screen ViewPoint World Coordination φ Model 座標 :Pm(pm,pm,pm) Pv Tmw - Twv - Tvs - Ps Ps Tvs Twv Tmw Pv Screen 座標 :Ps(pv,pv) ps d SX/ ps -d + SY/ Pw Pw Pw Ps Ps Ps displa 座標 :Pd(pd,pd) 視軸 目標点 TargetPoint pd s + SX/ pd -s + SY/ 7
.5 3D クリッピング 次元のクリッピングと同様に描画する必要のない形状を除去する 手順. View Volume を求める. Bounding Bo を求める 3. 交差判定を行う 4. 交差した Bounding Bo 内の形状とクリップ面との交差面を取り出す [ 交差面計算は 処理系 (OpenGL など ) が行う ] View Volume ( 視体積 ) 背面クリッピング面 視軸 Screen View Volume 前面クリッピング面 対象形状がビューボリューム内に有るか無いか判定する 8
Bounding Bo 背面クリッピング面 視軸 Screen 前面クリッピング面 View Volume Bounding Bo 対象形状を球あるいは直方体 ( バウンディングボックス ) でつつみ ビューボリュームとの交差を判定する Cohen-Sutherland Algorithm( 順次クリッピング ) (-,,) 視軸 Zmin 背面クリッピング面 (-,-,) (,,) ビューボリュームの前 (Z<Zmin) ビューボリュームの後 (Z>) ビューボリュームの左 (X<-Z) (,,) 前面クリッピング面 (,-,) 標準ビューボリューム ビューボリュームの右 (X>Z) ビューボリュームの下 (Y<-Z) ビューボリュームの上 (Y>Z) If P or P then 線分全体が標準ボリューム内 else if P & P! then else 線分全体が標準ボリューム外線分の一部が標準ボリューム内の可能性有り 9
BSP(Binar Space-Partioning)-Tree 対象形状 ( 面の集合 ) を視点の前後の面に分解する BSP-Tree は隠面処理にも利用される BSP(Binar Space-Partioning)-Tree 領域を区切ることにより 領域が限定され 前後関係も構築されるゲームや CG 描画に多用されている技術である 3
課題 : まとめ ( 座標変換 ) 次の文章はコンピュータグラフィックスにおける 3 次元座標変換について説明したものである 文中に入る適切な語句を記述せよ コンピュータグラフィックスに用いられる座標は () 円柱や球など形状毎に決められた座標である <A> 座標 () 実際の描画対象となる 3 次元空間座標である <B> 座標 (3) 視点を原点とし <C> を Z 軸とする <D> 座標 (4) スクリーン中心を原点とし <C> に直交する <E> 座標がある 一般に形状を定義する空間は右手 左手座標のうち <F> 座標が用いられ スクリーンに投影する <D> 座標は <G> 座標が用いられる <A> 座標に定義された形状を <B> 座標に変換する手順を <H> 変換という また < B> 座標に対して設定した 視点 目標点 画角 画面の傾き スクリーンサイズを与えて <D> 座標に変換する手順を <I> 変換という そして <D> 座標で表された形状を <E > 座標に変換する手順を <J> 変換という この変換には遠近感を出さずに投影する <K > 投影と 通常使われる遠近感を出す <L> 投影がある この変換により 3 次元立体を 次元に映し出すことができる <I> 変換における演算手順を行列で表すと () 平行移動 (Tp), () 軸回りの回転 (Tα),(3) 軸回りの回転 (Tβ), (4) 軸回りの回転 (Tγ), (5) 軸の反転 (Tinv) となり, これらの変換を順に行い 両座標の座標軸を一致させればよい 故に <B> 座標の点 Pw を <D> 座標の点 Pv に変換するには 上述の行列を用いて Pv <M>Pw で表すことができる 逆に Pv を Pw に変換するには 上述の行列を用いて Pw <N>Pv で表すことができる 課題 : 座標変換 次に <J> 変換では 視点からスクリーンまでの距離 dが必要となる 画角 φとスクリーンの画面サイズ SXが与えられたとき dは d<o> で求めることができる この関係より<D> 座標で表された点 Pv(v,v,v) は <E> 座標 Ps(s,s) ではdを用いて s <P>v s <P>v で表すことができる この過程を経て <B> 座標の点をスクリーン上の点に映し出すことが可能となる 視点 Screen Screen φ Pw Pw Pw Ps Ps Ps 視軸 目標点 目標点 3
課題 : まとめ ( 手計算 ) 問. モデル座標上の点 (9,5,5) が各座標変換や投影により座標値がどのように変 化するかを示せ モデル座標原点のワールド座標での位置 C(5,6,3) 回転は無し 視点 (,,) スクリーンまでの距離 7 目標点 (,,) 画面サイズ (SX/SY/) 画面の傾き( 左回りに9 度 ) Ans モデル座標 (9,5,5) ワールド座標 [ ] ビュー座標 ( スクリーンの回転前 )[ ] ビュー座標 ( スクリーンの回転後 )[ ] スクリーン座標 [ ] Zm Clinder Ym Xm (5,6,3) Ys Screen Xs 課題 3: まとめ ( 行列計算 ) 問. モデル座標上の点 (9,5,5) が各座標変換や投影により座標値がどのように変 化するかを示せ ただし 変換マトリックス ( 合成マトリックス ) を用いて解くこと モデル座標原点のワールド座標での位置 C(5,6,3) 回転は無し 視点 (,,) スクリーンまでの距離 7 目標点 (,,) 画面サイズ (SX/SY/) 画面の傾き( 左回りに9 度 ) Ans モデリング変換行列 Tmと変換後の座標 [ ] ビューイング変換行列 Tv ビュー座標 ( スクリーンの回転前 )[ ] ビュー座標 ( スクリーンの回転後 )[ ] スクリーン座標 [ Zm ] Clinder Ym Xm (5,6,3) Ys Screen Xs 3