今回の内容 アニメーションプログラミング アニメーション

2015/1/6
コンピュータグラフィックス特論Ⅱ 第11回
今回の内容
• アニメーションプログラミング
コンピュータグラフィックス特論Ⅱ
• 3次元グラフィックスの最新技術
– イメージベースドレンダリング
– BRDFによる質感の表現
– HDRレンダリング
第11回 グラフィックスの最新技術
システム創成情報工学科 尾下真樹
アニメーションプログラミング
• アニメーション速度を一定に保つための工夫
– アイドル処理が呼ばれる毎に一定時間アニメー
ションを進めるような単純なプログラムでは、コ
ンピュータの性能や画面サイズなどにより、実行
速度が大きく変わってしまう
アニメーションプログラミング
– アニメーション処理(アイドル処理)が一定周期
で実行されるかどうか、保証はない
– 描画速度に合わせて、アニメーション速度を自
動的に調節するような工夫が必要
Δt
t
GLUTのイベントモデル(復習)
• イベントドリブン
– 描画処理やアイドル
処理を設定しておく
ことで、必要なときに
それらが呼ばれる
– アイドル処理は、定
期的に呼ばれる
• アニメーション処理を
ここに記述
• どれくらいの頻度で
呼ばれるかは不明
ユーザ・プログラム
GLUT
アニメーションの処理
• 非マルチプロセス環境(ゲーム機など)
– 常に一定のタイミングで処理ができる
初期化処理
移動 描画
移動 描画
移動 描画
ウィンドウループ
• マルチプロセス環境 (Windows, Java など)
– どのようなタイミング・頻度で処理が呼ばれるか
分からない
時間
OS
終了処理
時間
1/30秒など(早く終わったら一定タイミングまで待つ)
描画
アイドル処理
移動 描画
移動
描画
移動
描画
移動
描画
時間
1
2015/1/6
コンピュータグラフィックス特論Ⅱ 第11回
再生速度の問題
再生速度を一定にする工夫
• 1度の移動処理の度に一定量移動を行う、
というプログラムになっていると・・・
• アイドル関数(移動処理)での移動量を調整
– 移動処理が呼び出される頻度によって、移動速
度が異なってしまう
実行回数が多いので、結果的に沢山移動
移動
描画
移動
描画
移動
描画
時間
実行回数が少ないので、結果的に少しだけ移動
移動
描画
移動
描画
時間
– 現在の時刻を取得 → curr_time
– 前回呼ばれたときとの時間の差を計算
delta = curr_time – last_time;
– delta の大きさに合わせて、物体を動かす
– 今回の時刻を記録
last_time = curr_time;
– last_time は、静的である必要がある
移動
last_time
時刻の取得
• C標準関数
描画
delta
移動
時間
curr_time → 次回の last_time になる
今回の内容
• アニメーションプログラミング
– time() 秒単位の精度でしか取得できない
• Windows API 関数
– timeGetTime() OS起動時からの時刻をミリ秒で
返す
– OSによっては、精度が悪い(10ミリ秒程度)ので、
timeBeginPeriod() で調整
• 3次元グラフィックスの最新技術
– イメージベースドレンダリング
– BRDFによる質感の表現
– HDRレンダリング
• Java
– java.lang.System.currentTimeMillis()
参考書
• 「コンピュータグラフィックス」
CG-ARTS協会 編集・出版(3,200円)
• 「3DCGアニメーション」
栗原恒弥 安生健一 著、技術評論社
出版(2,980円)
イメージベースド レンダリング
(モデリング)
• Image-Based Rendering
– Paul Debevec (http://www.debevec.org/)
• HDRレンダリング
– http://www.watch.impress.co.jp/game/docs/
20050525/3dhl2lc.htm
2
2015/1/6
コンピュータグラフィックス特論Ⅱ 第11回
3Dグラフィックスと実写の関係
• 3Dグラフィックス
問題点
• 3Dグラフィックスでは、現実世界同様の形
状・テクスチャ・素材(反射特性)を作成する
のに多くの時間がかかってしまう
– 制作には労力がかかる
– 存在しないものも表現可
– 人間などの再現は難しい
• 実写
– 実物をそのまま撮影できる
– 人間などは実写の方が向いている
Jurassic Park III
Universal Pictures
• 従来は、両者をうまく使い分けて合成する、
という方法がとられてきた
イメージベースド レンダリング
(モデリング)
• 実際の画像から、3Dモデルの情報を取得
– 形状、テクスチャ、反射特性
• 入力画像は、必ずしも、実写画像である必要はない
• 下は、複数画像から、1枚のテクスチャを取り出す例
• グラフィックスだけ、実写だけでは再現でき
ないものもある
– 例: 激しく吹き飛ばされる人間など
→ 解決方法
– 現実世界のデータを取り込んで、3Dグラフィック
スの世界を作る
イメージベースド レンダリング
(モデリング)
• 主に2つの方向性がある
• 3Dモデルの正確な形状・素材・反射特性な
どを画像から取得する
– レンダリングには、一般的な 3Dグラフィックスの
方法を使う
• 取得した画像を使って、物体をそのまま描画
– 画像を使ったレンダリングに特化した、モデル表
現・レンダリング手法を使う
参考書 図4.18 [Pighin 98]
3Dモデル・テクスチャ取得の例
形状データの推定
• 有名な UC Berkeley の塔の例(1997年)
– Debevec ら
– http://www.debevec.org/
取得した形状データ+テクスチャを使って描画
3
2015/1/6
コンピュータグラフィックス特論Ⅱ 第11回
映画などへの応用
• Matrixの有名なシーン
– 背景はすべてCGで描画
周囲の環境(光)を取得
• 周囲から得た環境光の情報を人物の顔
(CG)のレンダリングに適用
• 前のスライドで紹介した
手法が使われている
– 人物については実写
• 俳優の周囲に並べた
多数のカメラで撮影
• 各カメラの画像を順に
補間
教科書 図5.46
Debevec 2002
Matrix
Warner Bros.
画像をそのまま描画する方法
• 画像から奥行き値を計算
• 奥行き値を使い、異なる視点の画像を生成
BRDF
– もとの画像で隠れている箇所は描画できないこ
とに注意
教科書 図7.3 [McMillan 1999]
BRDF
• BRDF
– Bi-directional Reflectance Distribution Function
– 双方向反射分布
• 現実世界の物質の反射特性を正確に再現
するための技術
• イメージベースドレンダリングの考え方を発
展させたもの
反射特性のモデル
• フォンのモデル
– 拡散反射光 I  k I N  L

d
d l 
– 鏡面反射光
I d  ks Il  R V 
• 現実の物体
n
基礎と応用 図2.9
– 表面は平らではなく、
乱反射などが起こる
– モデルとのずれが生じる
基礎と応用 図2.10
4
2015/1/6
コンピュータグラフィックス特論Ⅱ 第11回
BRDFの考え方
サンプル画像の取得
• 反射特性を表現
– 視点方向・光源方向の関数によって表される
• 法線に対する視点方向・光源方向
– 特殊な装置を使って実際の素材から計測
Debevec
2000
CG WORLD
2004年12月号
映画への応用
• Spider-Man 2
– 完全CGのキャラクタの、顔の皮膚の質感を再現
映画への応用
• Matrix (2, 3)
– 完全なCGキャラクタにBRDFが使われた最初の例
Matrix
Warner Bros.
CG WORLD Spider-Mann 2
2004年12月号 Sony Pictures
CG WORLD
2004年12月号
デジタル・エミリー プロジェクト
• 俳優の表情・質感をCGで再現(2010)
HDRレンダリング
http://gl.ict.usc.edu/Research/DigitalEmily/
5
2015/1/6
コンピュータグラフィックス特論Ⅱ 第11回
HDRレンダリング
• High Dynamic Range(HDR)
– 人間の目がとらえることのできる輝度の範囲は、
かなり広い
• R:G:B = 8:8:8 = 24ビットで表せる範囲より広い
– 浮動小数点を使って、各ピクセルのより正確な
輝度(色)を表現する
• HDRレンダリング(HDRR)
– High Dynamic Range を考慮して、浮動小数点
バッファ(32ビット or 64ビット)にレンダリング
– 画面に表示する際に、24ビット画像に変換
参考資料: http://www.watch.impress.co.jp/game/docs/20050525/3dhl2lc.htm
通常のレンダリング
HDRRの概要
• 人間の視覚レンジは広い
• 表示の解像度自体は変わらない
• 周囲の明るさに応じて、そのうち一部を認識
• 計算の段階でHDRで計算
• 認識レンジは動的に調節される
• 通常は、適切な固定の認識レンジに24ビット
を割り当てることで、レンダリング
視覚レンジ
認識レンジ(暗室)
– 24ビットよりも高い精度・広い範囲を使用
• 適切な範囲を表示色にマッピングする
– シーンの明るさに応じて認識レンジを動的に調節
視覚レンジ
認識レンジ(屋外)
HDRRによる効果
• 周囲の明るさの変化によるHDRRの変化
– 暗いところから明るいところへ出たときの効果な
どが再現できる
認識レンジ(自動判定)
明るさの変化による効果
視覚レンジ
認識レンジ(自動判定)
認識レンジ(自動判定)
急に明るいところに出る(右半分がHDR)
徐々に目が慣れる
• 激しく明るいところの表現
– まぶしく輝くような効果を再現できる
• 計算の精度が上がる
– いままでの方法では暗くて描画されなかった物
体も、強い光が当たると見えるようになる
• 暗い素材 × 非常に明るい光 = 普通の色で見える
参考資料: http://www.watch.impress.co.jp/game/docs/20050525/3dhl2lc.htm
6
2015/1/6
コンピュータグラフィックス特論Ⅱ 第11回
激しく明るいところの表現
疑似HDRR
• 太陽光源、太陽光源が直接反射する場所
• 激しく明るい箇所に特殊な効果を適用する
手法は、これまでにも使われていた
– 激しく輝いて見える
– 周囲のピクセルまでぼんやりと明るくなる
– フレア効果(光源が直接見えるときに描画)
• 周囲のピクセルの輝度も何らかのルールで明るくする
Hal Life 2
「DOUBLE S.T.E.A.L.」(ぶんか社)
「Incoming」(Rage)
HDRRの他の応用例
川瀬正樹 (ぶんか社)
まとめ
• アニメーションプログラミング
• 3次元グラフィックスの最新技術
– イメージベースドレンダリング
– BRDFによる質感の表現
– HDRレンダリング
vVidia
http://www.nzone.com/object/
nzone_timbury_downloads.html
Age of Empires III
次回予告
• 最終レポート課題 プレゼンテーション
最終レポート課題
• レポート課題
– 講義で学習した内容を利用して、何らかのプログラムを作
成する
•
•
•
•
なるべく実用的なプログラムの方が望ましい
講義で学習した範囲外の技術を自分で勉強して使っても構わない
なるべく2つ以上の技術を組み合わせることが望ましい
昔自分で作成したプログラムの改良でも良い
(追加内容のみを評価対象とする)
– 1月12日(月) プログラム+スライド提出締め切り
• 発表(プレゼンテーション)
– 1月13日・1月20日の授業中
– 1人 発表 8分・質疑 5分(予定)
7