理工学部 兼任講師藤堂英樹
コンピュータグラフィックス
第5回
CG のための数学的基礎2
~投影変換~
レポート課題について
提出期限• 11/24 (3週間後)
提出方法• Oh-o! Meijiの授業ページから提出して下さい
レポート課題2, 3の出題時期• 第10回レンダリング技法3(12/8)の授業でまとめて出します
2014/10/27 コンピュータグラフィックス 2
レポート課題について
複数の課題を選択する形式• 各課題には配点が記載
• 一回分の配点25点を上限に選択課題の合計点で評価
• フォーマット通りの提出で配点の40%を保証
課題の種類• 調査・報告型
• 体験・演習型
• 問題作成型
2014/10/27 コンピュータグラフィックス 3
調査・報告型の課題
課題1 (配点15点)• 映画でCG技術を1つ取り上げ,その技術について詳しく解説しなさい
• 解説・考察:500字以上,図を1つ以上使って説明
• 参考文献:参考となったWebページや本のタイトル
• 提出用フォーマットを参考に
2014/10/27 コンピュータグラフィックス 4
体験・演習型
課題3(配点15点)• Unityをインストールし,Unityちゃんにポーズをつけなさい
• ポーズ:自由に選択してよい
• スクリーンショット:ポーズをつけた画像
• 関節の回転角:ポーズに使用した各関節データを記載
• 感想:難しかった点,欲しい機能等を簡潔に
2014/10/27 コンピュータグラフィックス 5
問題作成型
課題5(配点15点)• 授業内容に関連する問題を自分自身で作成し,解答も合わせて作成しなさい
• 問題:形式は自由
• 解答:問題の答えを記載すること
• 解説・考察:解答までの道筋・難易度の分析
2014/10/27 コンピュータグラフィックス 6
本日の講義内容
CG のための数学的基礎2• 投影
• ビューイングパイプライン
2014/10/27 コンピュータグラフィックス 7
CG制作の主なワークフロー
3DCGソフトウェアの場合
2014/10/27 コンピュータグラフィックス 8
モデリング
カメラ、シーン
アニメーション
テクスチャ、質感
ライティング
画像生成
投影変換関連
実写の撮影とも関連が深い• 標準,広角,望遠レンズの選択
• 焦点距離の調整
カメラの設定• 視点変更,ズームアップ (主に座標変換)
• 投影手法の設定,画角の調整
2014/10/27 コンピュータグラフィックス 9
実写の撮影
広角(35mm)• 風景
標準(50mm)• 室内
• 記念写真
望遠(100mm)• ポートレート
• スポーツ
2014/10/27 コンピュータグラフィックス 10
被写体と焦点距離© キャノン
実写の撮影
広角(35mm)• 風景
標準(50mm)• 室内
• 記念写真
望遠(100mm)• ポートレート
• スポーツ
2014/10/27 コンピュータグラフィックス 11
焦点距離による遠近感の違い© キャノン
実写の撮影
広角(35mm)• 風景
標準(50mm)• 室内
• 記念写真
望遠(100mm)• ポートレート
• スポーツ
2014/10/27 コンピュータグラフィックス 12
焦点距離による遠近感の違い© キャノン
投影変換関連
実写の撮影とも関連が深い• 標準,広角,望遠レンズの選択
• 焦点距離の調整
カメラの設定• 視点変更,ズームアップ (主に座標変換)
• 投影手法の設定,画角の調整
2014/10/27 コンピュータグラフィックス 13
CG側でもやってみましょう!
CGでのカメラ設定
広角, 標準,望遠による見え方の違い
2014/10/27 コンピュータグラフィックス 14
30mm(広角)
50mm(標準)
100mm(望遠)
CGでのカメラ設定
広角, 標準,望遠による見え方の違い
2014/10/27 コンピュータグラフィックス 15
30mm(広角)
50mm(標準)
100mm(望遠)
本日の講義内容
CG のための数学的基礎2• 投影
• ビューイングパイプライン
2014/10/27 コンピュータグラフィックス 16
投影の原理
透視投影• 遠近感の強調
平行投影• 見る位置で大きさが変わらない
2014/10/27 コンピュータグラフィックス 17
透視投影
投影中心• 視点,カメラの位置
投影面• 図形を投影するための面
2014/10/27 コンピュータグラフィックス 18
透視投影
例:𝐴(𝑥, 𝑦, 𝑧)を投影面 (𝑧 = 1)に投影
• 𝑥′ =𝑥
𝑧
• 𝑦′ =𝑦
𝑧
2014/10/27 コンピュータグラフィックス 19
遠くのものが小さく描かれる
平行投影
投射線が平行
例:𝐴(𝑥, 𝑦, 𝑧)を投影面 (𝑧 = 1)に投影• 𝑥′ = 𝑥
• 𝑦′ = 𝑦
2014/10/27 コンピュータグラフィックス 20
見る位置で大きさが変わらない
各投影手法の用途
透視投影• 映像を写実的,リアルにする目的
• 映画やゲーム
平行投影• ものの形を正確に把握する目的
• 設計製図やグラフの描画
2014/10/27 コンピュータグラフィックス 21
ビューボリュームと投影
ウィンドウ• 投影面上の投影範囲
画角(視野角)• ウィンドウ(投影範囲)の大きさを決める角度
2014/10/27 コンピュータグラフィックス 22
ビューボリュームとクリッピング
ビューボリューム• 画面に映し出す3次元空間の範囲
クリッピング• ビューボリューム外の図形を削除する処理
2014/10/27 コンピュータグラフィックス 23
透視投影のビューボリューム位置
視点が原点
𝑑: 視点からウィンドウまでの距離
(2𝑎, 2𝑏): ウィンドウの大きさ
𝑧𝑚𝑖𝑛 , 𝑧𝑚𝑎𝑥 : クリッピング範囲
2014/10/27 コンピュータグラフィックス 24
透視投影の計算過程
右手系⇒左手系
ビューボリュームを正規化
正規化ボリュームを透視投影
2014/10/27 コンピュータグラフィックス 25
透視投影の計算過程
右手系⇒左手系• 𝑧値を−1倍すれば良い
•
𝑥′
𝑦′
𝑧′
1
= 𝑺 1,1,−𝟏
𝑥𝑦𝑧1
2014/10/27 コンピュータグラフィックス 26
透視投影の計算過程
ビューボリュームを正規化• 𝑧𝑚𝑎𝑥 ⇒ 1
• 𝑧𝑚𝑎𝑥 = 1でのビューボリュームが正方形• −1 ≤ 𝑥 ≤ 1, −1 ≤ 𝑦 ≤ 1
ビューボリュームの変換• 𝑎, 𝑏, 𝑑
⇒𝑎𝑧𝑚𝑎𝑥
𝑑,𝑏𝑧𝑚𝑎𝑥
𝑑, 𝑧𝑚𝑎𝑥
⇒ (1,1,1)
• 𝑺𝑑
𝑎𝑧𝑚𝑎𝑥,
𝑑
𝑏𝑧𝑚𝑎𝑥,
1
𝑧𝑚𝑎𝑥
2014/10/27 コンピュータグラフィックス 27
正規化前 正規化後
透視投影の計算過程
正規化ボリュームを透視投影
• 𝑧𝑚𝑖𝑛 =𝑧𝑚𝑖𝑛
𝑧𝑚𝑎𝑥
•
𝑥′
𝑦′
𝑧′
1
=
1 0 0 00 1 0 0
0 01
1− 𝑧𝑚𝑖𝑛−
𝑧𝑚𝑖𝑛
1− 𝑧𝑚𝑖𝑛
0 0 1 0
𝑥𝑦𝑧1
= 𝑃( 𝑧𝑚𝑖𝑛)
𝑥𝑦𝑧1
2014/10/27 コンピュータグラフィックス 28
投影後投影前
射影変換
透視投影変換𝑃( 𝑧𝑚𝑖𝑛)はアフィン変換ではない• 最下行が0,0,0,1ではない
3次元射影変換
•
𝑥′
𝑦′
𝑧′
𝑤′
=
𝑎 𝑏 𝑐 𝑑𝑒 𝑓 𝑔 ℎ𝑖 𝑗 𝑘 𝑙𝑚 𝑛 𝑜 𝑝
𝑥𝑦𝑧𝑤
2014/10/27 コンピュータグラフィックス 29
平行投影の計算過程
ビューボリュームの正規化• 𝑥𝑚𝑖𝑛 ≤ 𝑥 ≤ 𝑥𝑚𝑎𝑥 , 𝑦𝑚𝑖𝑛 ≤ 𝑦 ≤ 𝑦𝑚𝑎𝑥⇒ −1 ≤ 𝑥 ≤ 1, − 1 ≤ 𝑦 ≤ 1
• 𝑧𝑚𝑎𝑥⇒1, 𝑧𝑚𝑖𝑛⇒0
•
𝑥 ′
𝑦′
𝑧′
1
=
2
𝑥𝑚𝑎𝑥−𝑥𝑚𝑖𝑛0 0 −
𝑥𝑚𝑎𝑥+𝑥𝑚𝑖𝑛
𝑥𝑚𝑎𝑥−𝑥𝑚𝑖𝑛
02
𝑦𝑚𝑎𝑥−𝑦𝑚𝑖𝑛0 −
𝑦𝑚𝑎𝑥+𝑦𝑚𝑖𝑛
𝑦𝑚𝑎𝑥−𝑦𝑚𝑖𝑛
0 01
𝑧𝑚𝑎𝑥−𝑧𝑚𝑖𝑛−
𝑧𝑚𝑖𝑛
𝑧𝑚𝑎𝑥−𝑧𝑚𝑖𝑛
0 0 0 1
𝑥𝑦𝑧1
2014/10/27 コンピュータグラフィックス 30
投影のさまざまな性質
消失点とn点透視• 3点透視
• 2点透視
• 1点透視
2014/10/27 コンピュータグラフィックス 31
ビューイングパイプライン
2014/10/27 コンピュータグラフィックス 32
ビューポート変換
2014/10/27 コンピュータグラフィックス 33
モデリング変換と視野変換
モデリング変換• モデリング座標系⇒ワールド座標系
視野変換• ワールド座標系⇒カメラ座標系
2014/10/27 コンピュータグラフィックス 34
2次元クリッピング
線分の可視判定を4bitコードで管理• 第1bit: 𝑦 > 𝑦𝑚𝑎𝑥
• 第2bit: 𝑦 < 𝑦𝑚𝑖𝑛
• 第3bit: 𝑥 > 𝑥𝑚𝑎𝑥
• 第4bit: 𝑥 < 𝑥𝑚𝑖𝑛
2014/10/27 コンピュータグラフィックス 35
2次元クリッピング
線分の可視判定手順• 両端の論理積が1⇒表示されない
2014/10/27 コンピュータグラフィックス 36
2次元クリッピング
線分の可視判定手順• 両端の論理積が1⇒表示されない
• 両端のbitが0000⇒表示される
2014/10/27 コンピュータグラフィックス 37
2次元クリッピング
線分の可視判定手順• 1. 両端の論理積が1⇒表示されない
• 2. 両端のbitが0000⇒表示される
• 3. どちらでもない⇒はみ出している部分を削除
2014/10/27 コンピュータグラフィックス 38
2次元クリッピング
線分の可視判定手順• 1. 両端の論理積が1⇒表示されない
• 2. 両端のbitが0000⇒表示される
• 3. どちらでもない⇒はみ出している部分を削除
• 4. 残りの線分で1からやり直す
2014/10/27 コンピュータグラフィックス 39
3次元クリッピング
2次元クリッピングを3次元へ拡張• 4bit⇒6bit
• 第1bit: 𝑦 > 𝑧
• 第2bit: 𝑦 < −𝑧
• 第3bit: 𝑥 > 𝑧
• 第4bit: 𝑥 < −𝑧
• 第5bit: 𝑧 > 1
• 第6bit: 𝑧 < 𝑧𝑚𝑖𝑛
2014/10/27 コンピュータグラフィックス 40
CGでの投影(応用)
投影による遠近感の強調• 望遠:顔の見栄えは良いが迫力にかける
• 広角:迫力はあるが顔が崩れる
2014/10/27 コンピュータグラフィックス 41
望遠 広角
© サンジゲン
CGでの投影(応用)
投影による遠近感の強調• 望遠部分と広角部分を混ぜる
• 望遠:キャラの顔,身体部分
• 広角:広げている腕の部分
2014/10/27 コンピュータグラフィックス 42
© サンジゲン
望遠+広角による補正
次回
モデリング技法1~3次元形状表現~
2014/10/27 コンピュータグラフィックス 43