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