TM
TM
VRのためのCG技術
柿本 正憲
[email protected]
日本SGI株式会社
システム・インテグレーション本部
東日本第一プロフェッショナルサービス部
1999年11月10日
-2-
内容
TM
はじめに
VR表示システムの例
高速描画のための要素技術
リアルタイム処理のための技術
表示システムのチューニング
まとめ
Q&A
1999年11月10日
-3-
はじめに
TM
VRシステムの要件
リアルタイム表示(理想は60フレー
ム毎秒)
本物らしさ
 没入感(大画面)
 形状やテクスチャのリアリティ
表
示
の
質
満足できる
結果
相反する要求を満たす手段
3Dモデルデータの工夫
アルゴリズムの工夫
ハードウェア
60Hz
表示速度
1999年11月10日
-4-
VR表示システムの例
TM
最近の傾向
 HMD(ヘッド・マウンテッド・ディスプレイ)よりも、大画面型
1999年11月10日
-5-
VR表示システムの例
TM
アーチ型
没入感があり、ビジュアル・シミュレーションに適している
1999年11月10日
-6-
VR表示システムの例
TM
フラット型(PowerWall)
DR (Design Review)に適している
1999年11月10日
-7-
VR表示システムの例
TM
どうくつ型(CAVE)
各種インテリア評価に適している
1999年11月10日
-8-
VR表示システムの例
TM
デスク型(Imersive Workbench, Imersadesk)
医療、建築、土木分野の可視化に適している
1999年11月10日
-9-
高速化の要点
TM
 どんな場合にも通用する万能ルールはない
 ボトルネックを抽出し、適切な高速化手法を適用する
ことが重要
ボトルネック
の抽出
ボトルネック
の解決
新たなボトルネック
の顕在化
ボトルネック要因
1999年11月10日
-10-
前提知識
TM
シーングラフ
ルート
3Dモデルのデータ構造
通常は実行時のメモリ上の
データを意味する
グループ
光源
階層化された部品
スイッチ
部品 部品 部品 部品
座標変換
座標変換
部品
部品 部品 部品
1999年11月10日
-11-
前提知識
TM
グラフィックスパイプライン
3Dモデルの表示処理フロー
シーン
グラフ
(xw, yw, zw)
(xs, ys)
ビデオ
信号
G T X S D
Generation Traverse
モデル処理 表示データ
(カリング等)
の転送
Scan
Transform
Conversion
座標変換
明るさ計算 塗りつぶし
Display
D/A変換
1999年11月10日
-12-
前提知識
グラフィックスAPI
ローレベル
OpenGL, Direct3D
TM
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.8,0.5,0.0);
glBegin(GL_TRIANGLES);
glVertex2f(1.0,1.0,3.0);
glVertex2f(-1.0,-1.0,3.0);
glVertex2f(-1.0,1.0,3.0);
glEnd();
シーングラフAPI
IRIS Performer, Open Inventor,
Cosmo3D, Java3D
特定用途向け
IRIS Performer (Vissim)
OpenGL Optimizer (CAD)
pfScene *root = new pfScene;
pfGroup *group = new pfGroup;
pfGeode *gd = new pfGeode;
pfGeoSet *gset = new pfGeoSet;
pfGeoState *st = new pfGeoState;
root->addChild(gp);
group->addChild(gd)
gd->addGSet(gs);
gset->setGState(st);
1999年11月10日
-13-
高速描画のための要素技術
TM
ビューフラスタム・カリング
視野に入っていない部品を除いて
から表示する
1999年11月10日
-14-
高速描画のための要素技術
TM
オクルージョン・カリング
手前の部品に隠されることが確実
な部品を除いて表示する
1999年11月10日
-15-
高速描画のための要素技術
TM
LOD (レベル・オブ・ディテール)
遠くにあるときは粗く、近くでは細かく表示する
1999年11月10日
-16-
高速描画のための要素技術
TM
LOD バイアス
動かすときは粗く、止めた状態では細かく表示する
粗くなっても、動かしていると意外に気にならない
CADソフトウェアで有効
視点が常に動くVRやビジュアル・シミュレーションでは
使えない
1999年11月10日
-17-
高速描画のための要素技術
TM
動かす部品だけを表示
動かない部品は画像として描く
奥行き情報(zバッファ)も画像と一緒に保存
ウィンドウが大きくなると、画像転送が逆にボトルネックに
Onyx2ならフルスクリーンでもOK
CADソフトウェアで有効
視点が動くVRやビジュアル・シミュレーションでは使えない
1999年11月10日
-18-
高速描画のための要素技術
TM
空間分割
近い部品同士を同じグループにする
BAD
GOOD
1999年11月10日
-19-
高速描画のための要素技術
TM
バックフェース・カリング
裏向きの三角形は塗りつぶさない
閉じた図形(裏面は絶対に見えない)のみを扱う場合に有効
三角形
の裏
三角形
の表
三角形
の表
1999年11月10日
-20-
高速描画のための要素技術
TM
テクスチャ・マッピング
一枚のポリゴンに絵や写真を貼る
ポリゴン一枚で何千ポリゴンにも相当するリアリティ
最近のハードの高速化
→用途によってはテクスチャを使わずくっきりとした絵を表示する
選択も
ポリゴンのみで表現
テクスチャを使った表現
1999年11月10日
-21-
高速描画のための要素技術
TM
OpenGLレベルでの
最適化
三角形ストリップ
頂点の共有化
ディスプレイリスト
データのキャッシング(CPU、
グラフィックスボード)
独立三角形: 頂点数3n
三角形ストリップ: 頂点数n+2
頂点配列
メモリアクセスの効率化
マテリアル(色やテクスチ
ャ)の共有化
マテリアルの切替えを最小化
1999年11月10日
-22-
高速描画のためのハード技術
TM
DVR(Dynamic Video Resizing)
D/A変換のハードウェアで画像を拡大
小さく描いて最後に拡大(フィルタリングつき)
ビデオレート内で処理を終えれば速度には全く影響無し
塗りつぶしの時間を節約
フレームごとに負荷を評価しながら拡大率を調整
見る人は以外と気づかない
SGIのOnyx, Onyx2のみの機能
1999年11月10日
-23-
高速描画のためのハード技術
TM
マルチパイプ処理
大画面スクリーンを分割して並列処理
X S D
X S D
X S D
G T
CPU処理
グラフィックスハードの処理
SGIのOnyx2
1999年11月10日
-24-
高速描画のためのハード技術
TM
マルチCPUでの並列処理
G
T X S D
T X S D
T X S D
CPU処理
グラフィックスハードの処理
1999年11月10日
-25-
高速描画のためのハード技術
TM
マルチプロセス処理
(x,y,z)
DBASE
ISECT
(x,y)
G T X S D
Generation Traverse Transform Scan
Display
Conversion
APP
SIM
CULL
COLLIDE
DRAW
1999年11月10日
-26-
高速描画のためのハード技術
TM
マルチCPUでの並行処理
APP
CULL
DRAW
表示
A0
A1
C0
A2
C1
D0
C2
D1
D2
APP,CULL,DRAWを一つのCPUで処理した場合
APP
CULL
DRAW
表示
A0
A1
C0
A2
C1
D0
A3
C2
D1
A4
C3
D2
A5
C4
D3
C5
D4
D5
APP,CULL,DRAWを別々のCPUで並行処理した場合
1999年11月10日
-27-
高速描画のためのハード技術
TM
DPLEX (Digital Multiplexer)
フレーム毎に出力パイプを切替える
G
T X S D
T X S D
T X S D
CPU処理
グラフィックスハードの処理
1999年11月10日
-28-
高速描画のためのハード技術
TM
DPLEX (Digital Multiplexer)
1999年11月10日
-29-
リアルタイム処理のための技術
TM
フレームレートの管理
計算
表示
AppCullDraw0
AppCullDraw1
AppCullDraw2
16msec
60Hz
1/60秒
計算
表示
AppCullDraw0
ビデオ同期信号
AppCullDraw1
17msec
30Hz
1/30秒
フレームレートの変化は1/60秒→2/60秒→3/60秒→4/60秒
ちょっと頑張ればフレームレートがぐんと上がる
フレーム毎に負荷を計測し、LODやDVRの強さを調整
1999年11月10日
-30-
リアルタイム処理のための技術
TM
レイテンシの最小化
1999年11月10日
-31-
表示システムのチューニング
TM
ボトルネックの抽出
ボトルネックがわかれば半分
解決したも同然
ボトルネック以外の部分を高速
化しても無意味
(x,y,z)
(x,y)
G T X S D
Generation Traverse Transform Scan
Display
Conversion
1999年11月10日
-32-
表示システムのチューニング
TM
G(シミュレーション)がボトルネックになる場合
抽出法:Tに渡す計算結果をファイルに保存し再現
これで速くなればGがボトルネック
計算のプロセスを分け、マルチCPU化
CULLの時間が長い場合(通常はDRAWより短い) :
グループ化が細かすぎる可能性がある
グループ化がより大まかになるようやり直す
(x,y,z)
(x,y)
G T X S D
Generation Traverse Transform Scan
Display
Conversion
1999年11月10日
-33-
表示システムのチューニング
TM
T(OpenGLのコマンド転送)がボトルネックになる場合
ポリゴン数が多く、CPUからグラフィックスへの転送が遅い
場合
例えばリモートのマシンでOpenGLの表示を行った場合
抽出法:OpenGLのディスプレイリストを使ってみる
glVertex3fをglColor3f(ダミー)に変えてみる
転送はそのままで
Xの処理が無くなる
これで変わらなけれ
ば原因はXでなくT
(x,y,z)
(x,y)
G T X S D
Generation Traverse Transform Scan
Display
Conversion
1999年11月10日
-34-
表示システムのチューニング
TM
X(座標変換・光源計算)がボトルネックになる場合
最もよく起こりうる
抽出法:光源を無くし
てみる
これで速くなればXが
ボトルネック
対策
(x,y,z)
(x,y)
G T X S D
Generation Traverse Transform Scan
Display
Conversion
polygon/secの速いボードを買う
テクスチャの使用(1000ポリゴンの樹木のモデルより1ポリゴンに写真)
光源の代わりに環境マッピング
LODでもっとポリゴンの少ないレベルを使用する
奥行き複雑度が非常に多ければオクルージョン・カリング
1999年11月10日
-35-
表示システムのチューニング
TM
奥行き複雑度(Depth Complexity)
塗りつぶしの処理時間に影響する
非常に大きい場合はオクルー
7
1
4
ジョン・カリングが有効
小~中:
フライト・シミュレーション
中:
5
メカニカルCAD・建築
大:
大規模プラント・
大規模建築
3
1
2
1999年11月10日
-36-
表示システムのチューニング
TM
S(塗りつぶし)がボトルネックになる場合
抽出法:ウィンドウを小さくしてみる(簡単!)
これで速くなればSがボトルネック
対策
バックフェース・カリング
DVR(Onyx2のみ)
オクルージョン・カリング
(x,y,z)
(x,y)
G T X S D
Generation Traverse Transform Scan
Display
Conversion
1999年11月10日
-37-
まとめ
TM
チューニングはケース・バイ・ケース
モデルの規模・特徴
ハイエンド・
ユーザ
の要求
使用するハード・ソフト
要求される性能・画質
ボトルネックの抽出が重要
ハード
の性能
チューニングで数倍~
数千倍速くなる
ローエンド・
ユーザ
の要求
時間
1999年11月10日
-38-
ダウンロード

ppt