基礎論文

GPU を用いた全周囲立体 CG 映像の実時間生成
城 堅誠*1

南澤 孝太*1

新居 英明*1

川上 直樹*1*1

A GPU-based Real-Time Rendering of Immersive Stereoscopic Images
Kensei Jo*1 , Kouta Minamizawa*1 , Hideaki Nii*1 , Naoki Kawakami*1 , Susumu Tachi*1
Abstract– The goal of this study is to render immersive stereoscopic images in realtime for realization of interactive CG worlds. In our proposed method, the vertices are
moved to their corresponding locations by using a vertex shader according to the geometryof the display. Next, the polygons are subdivided by a geometry shader in order to reduce
distortions. This method enables fast rendering of immersive stereoscopic images withless distortion. Furthermore, the rendering feature that transform verteces data for
immersive stereoscopic displays is implemented on GPU. This implies that the method
allows CG creators to create contents using typical 3D CG APIs without considering thedisplay s geometries.

Keywords : Real-time Rendering, Computer Graphics, Programmable Shader, Immersive Stereoscopic Display, Virtual Reality

1

はじめに

近年，高い臨場感を持つ映像を提示するために，観測者の全周囲をディスプレイ面で覆う没入型ディスプ
レイが多数開発されてきた．これらの没入型ディス
プレイは視界のほぼ全域に対し映像を提示できるため，空間全体を映像提示する用途や，テレイグジスタ
ンス [1] 等の用途に用いられている．その中で図 1 に示す TWISTER:Telexistence Wide-angle Immersive

STEReoscope[2] は，裸眼で全周囲の立体映像を見る

図 1 TWISTER の外観（左）, 内部の映像（右）．
Fig. 1 Appearance of TWISTER IV.

ことができる没入型ディスプレイである．
これらの没入型ディスプレイは，CAVE[3] や CABIN[4]歪み補正を施すことで映像を生成している．また橋本のように周囲を平面ディスプレイで覆うディスプレイ

ら [6] はカメラを用いて対応の取得を自動化する手法と，TWISTER や EnspheredVision[5] などのようにも提案している．現実世界のスクリーンと双対な 3 次

周囲を曲面状のディスプレイ面で覆われたディスプレ

元モデルを CG(Computer Graphics) 空間で構築し，イとに分類できる．前者は平面ディスプレイ用の映像

CG 中での映像の見え方を元に投影映像を生成する手法も提案されれている [7, 8, 9, 10]．

を容易に使用することができるものの，後者の非平面の提示面を持つ没入型ディスプレイにおいては，平面

しかしながら，TWISTER で用いられる全周囲立

ディスプレイ用の映像を直接用いることはできない．

体映像は，全周囲にわたって視差を正しく反映させる

そのため，いくつかの描画手法がこれまで用いられて必要があり，観測者の両眼の位置が，頭部の向きに依きた．

存することも考慮しなければならない．そのため平面

観測者の周囲をドーム状のスクリーンで覆うことでディスプレイ用に描画した 1 枚の映像に対し，前述の視界全体に映像を投影する EnspheredVision では，光歪み補正の例のような幾何変形を施しても，必要な映学系の光線追跡のシミュレーションを行い，プロジェ像を生成することはできない．

クタの出力画像の座標（提示画像座標とする）と，実全周囲立体映像の場合，観測者の頭部の向きによって際にスクリーン上で投影される点の座標（ディスプレ

眼球の位置も変化するため，両眼の視差を画像にどのよ

イ面座標とする）の対応を求め，一度描画した画像にうに反映させればよいかは自明ではない．TWISTER*1 東京大学大学院情報理工学系研究科*1 Graduate School of Information Science and Technology,
The University of Tokyo

では観測者の正面方向を，常に正しく立体視できるようにし，正面方向以外の光線情報は他の方向へ提示し日本バーチャルリアリティ学会論文誌 Vol.13, No.3, 2008

を GPU(Graphics Processing Unit) 上で分割する手(Left Eye)

法も導入する．その結果，通常の描画命令で出力されたポリゴンの頂点データ群を，TWISTER に応じた頂点データ群に GPU 上で変換することが可能となる．

+PVGTQEWNCT˳FKUVCPEG˳

本手法のメリットは，大きく分類して二つ挙げられ(Right Eye)

る．一点目は，後から歪み補正や合成を行うことなく映像を直接生成できるため，描画速度の向上につなが
(a)

(b)

(c)

図 2 (a) 人の頭部．(b) 頭部の回転によって左右の目の位置の変化．(c) 対応する画像．
Fig. 2 (a)Head. (b)Eye positions according
to head rotation. (c)Created picture.

る点である．特に同心モザイク映像などのように，1フレームの映像生成のために多くの描画が必要な場合
では，顕著な速度向上が期待できる．二点目は，従来手法に比べて，既存のアプリケーションを TWISTER用に書き換えるために必要な手間が，大幅に削減できた光線情報を利用する近似手法が用いられている．この近似を満たす映像として同心モザイク (Concentric

Mosaic)[11] が用いられ，田中ら [12] によって, 同心モ
ザイクを使用したときの誤差が TWISTER における立体視に深刻な問題を引き起こさない，と解析的に確認されている．
これまで同心モザイク映像を描画するためには，図2 に示すように CG 空間上で，直径が眼間距離と等しい円の円周上にカメラを配置し，そこで得たスリットる点である．提案手法では，プログラマブルシェーダを用いて GPU 上で変換処理を実行するため，変換処理の核となるコードは異なるアプリケーションであっても共通である．このため，元々プログラマブルシェー
ダを使用していないアプリケーションならば，従来手法に比べて容易に TWISER 用のコンテンツとして移植することが可能となる．
本論文では，以下 2 章にて提案手法の詳細を述べ，3章にて構築例を述べる．その後，4 章にて評価を行う．

状の画像を並べることで映像を生成していた．例えば

2

提案手法

観測者が θi 方向を向いていた条件において，その時のCG 上での左右の目に相当するカメラの位置をそれぞ

本章では，提案手法の詳細を順を追って説明する．

れ Vi , Vi とする．Vi , Vi の位置で描画されたスリット状の画像 Li , Li を出力画像に貼り付ける．全ての提案手法は，「投影変換関数の決定」，「頂点の移動」，「ポリゴン分割」の 3 つに分けられる．

方位に対しこの操作を繰り返すことで，左右の目の同2.1

心モザイク画像が生成される．この手法で, 十分な精本手法では，透視投影や正射影の代わりに，TWISTER

投影変換関数の決定

度の画像を得るには，スリットの幅を小さくし，描画に必要な投影変換関数を用いて，ポリゴンの頂点を画

回数を増やす必要があるため，平面ディスプレイ用の面上の適切な位置に移動させ描画する．ここで投影変

映像生成時に比べ描画に時間がかかる点が問題であっ換関数を，カメラを原点とした座標系におけるポリゴ

た．また，既存のアプリケーションを TWISTER に

ン頂点の座標を入力とし，ディスプレイの提示画像座

必要な全周囲立体映像に変更しようとした場合，それ標における，その頂点を投影するべき座標を出力情報

ぞれのアプリケーションごとに描画部を解析し，全周とする関数と定義する．

囲立体映像用の描画処理に書き換えなければいけない

なお TWISTER においては同心モザイク画像が必ため，コンテンツの生成に手間がかかることが大きな要であるため，以下，投影変換関数として同心モザイ問題であった.

クの投影変換関数を導出する．

そこで本研究では，プログラマブルシェーダを用い

TWISTER における投影変換関数の導出

ることで，既存の CG コンテンツを TWISTER に必

まず，TWISTER に必要な投影変換関数を導出す

要な全周囲立体映像に直接変換し，実時間で高精細なる．導出のためには，ある点 A が与えられた時に，そ映像を描画する手法を提案することを目的とする．本の点を TWISTER の提示画像座標上のどこに描画す手法では，通常の 3DCG で用いられる透視投影や正ればよいか計算することにより求めることができる．

射影の代わりに，TWISTER に必要な投影変換をプロ与えられた点 A と TWISTER のディスプレイ面のグラマブルシェーダ上で施し，ポリゴンの頂点位置を関係を図 3 の模式図に表す．また TWISTER のディス

提示画像中で適切な位置に移動させる．ただし，移動

プレイ面座標と提示画像座標の対応関係は図 4 で表ささせた頂点から辺を直線により描画すると，2.2 節でれるように，ディスプレイ面座標の円筒座標表記と提説明する理由によりポリゴンの辺の中央部位に歪みが示画像座標が一致するように定める．観察者の頭部を発生する．この問題を解消するため，大きなポリゴン

城・南澤・新居・川上・: GPU を用いた全周囲立体 CG 映像の実時間生成

TWISTER の中心部に置き，両眼は半径 de の円周上に必ず存在すると仮定する．また点 A の TWISTER
らの座標を A(xA , yA , zA ) とし，点 A を円筒座標で表

2.2 頂点の変換
次にプログラマブルシェーダを用いて変換処理を開始する．まず頂点シェーダを用いて，入力された全ての頂点の座標に対し，上記の投影変換関数を施し提示した座標を A (rA , θA , zA ) とする1 ．

画像の座標平面に出力する．

中心部，すなわち CG 上でカメラを配置している点か

⎧
⎪
⎨ rA
θA
⎪
⎩
zA


2
=
x2A + zA
= atan2(xA , −zA )= yA

図 5(b) は図 5(a) の全頂点に TWISTER 投影変換を(1)施した画像を表す．前方の小さなタイル群の並びなど，
元々直線的に並んでいたポリゴンの頂点が，図 5(b) では曲線状に配置されていることが紙面上からも確認でまた OpenGL の標準的なカメラは Z 軸の負の方向をきる．しかし，大きなポリゴンの辺の部位では歪みが向いているため，θ の零点は図 3(b) のように Z 軸負生じている．これは，頂点と頂点の間の辺の部位が自動方向に定める．

的に直線補間されることに起因している．TWISTER

同心モザイクの原理により，この点 A を正面から

投影変換は非線形変換であるため，本来ならば辺は直見る左右の目の位置は図 3(b) の点 EL , ER であるた

線ではなく曲線で補間されるべきである．

め，TWISTER のディスプレイ面上で点 A を投影す

2.3 ポリゴンの分割
大きなポリゴンでは辺に歪みを生じるため，ジオメ
トリシェーダを用いてポリゴンを分割する．さらに分るべき位置は AL , AR となる. このときの AR , および AL の円筒座標は
RT , θA ± α,

RT
zA
rA



割によって生じた新たな頂点に対して TWISTER 投(2)となる．ただし RT は TWISTER の半径を表し，α は以下に表される．

α = cos−1



de
rA



− cos−1

deRT

影変換を施し，元々の大きなポリゴンを，歪みの無視できる程度の小さなポリゴンの集合に変換する．その結果，歪みの目立たない高精細な映像に自動的に変換することが可能となる (図 5(c))．

(3)

このとき TWISTER に投影する提示画像座標の u

次に，本手法で用いたプログラマブルシェーダ上でポリゴンを分割する具体的手法について述べる．
先行研究および本研究で求められる機能

値および v 値は，前述のようにディスプレイ面座標のポリゴン分割は複雑な問題であり，古くから有限要θ と Z の値にそれぞれ対応しているため，点 A を表す投影画像座標は以下になる．


RT
(4)
(uA , vA , dA ) = θA ± α,zA , rArA

素法や CG などの分野において，様々な手法が提案されている．
有限要素法においては，解析的に解くことが難しい
微分方程式の近似解を数値的に得るため，領域をメッシュ分割して数値計算を行う．そのメッシュ形状が計

ただし，dA は陰影処理に必要なカメラからの奥行き

算精度に影響を与えるため，最適なメッシュ分割法等

距離の値を表し，TWISTER の中心軸から点 A までの研究が多く行われている．しかしながら，我々の用の距離である rA を用いた．

途のように高速に分割することや，GPU 上で分割を

本論文では以上の座標変換を TWISTER 投影変換と呼ぶ．

実装することはまれである．
また CG においても，Cutmull-Clark 法 [13] など, 少

+0.6
0
-0.6

図 3 TWISTER を側方から見た座標系 (a) と，上面から見た座標系 (b)．
Fig. 3 Coordinate system deﬁnition of
TWISTER.
1 atan2(y, x) は， y の逆正接を返す関数とする．
x

図 4 TWISTER のディスプレイ面座標 (a) と提示画像座標 (b) の対応関係
Fig. 4 Correspondence relationship between
display surface(a) and output picture(b).

日本バーチャルリアリティ学会論文誌 Vol.13, No.3, 2008

辺の分割
辺の分割は条件 (ii) を満足しなければならない．し(a)

かしながら，ジオメトリシェーダ上では隣接するポリ
ゴンの情報を得ることは困難である．
そこで提示画像の座標で辺の長さがある一定値 (L)(b)

以下になるように，辺を均等分割する．隣接するポリゴンの間では，共有する辺の位置や長さは等しいため，それぞれの辺の節の位置も必ず一致する．
ただしジオメトリシェーダの制限上，無限に頂点数(c)を増やすことはできないので，分割数に限界値 (Nmax )図 5 (a) 元画像（通常の透視投影で描画.） (b)全頂点に TWISTER 投影変換を施した結果．(c) その後，ポリゴン再分割した結果．
Fig. 5 (a)Original image. (b)First, polygon
vertices are relocated to their corresponding positions. (c)Next, the polygons are subdivided according to theirsize in order to reduce the distortion.

を設ける. すなわち，長さ l の辺の分割数 N は以下に定められる．なお，以下ポリゴンの 1 辺の分割数を辺分割数と定義する2 ．

ceil Ll
Nmax

N=(If ceil Ll < Nmax )(Others)(5)

例えば，3 辺の長さが a, b, c の ABC の，それぞ数の頂点データで滑らかな物体を描画するために，古れの辺分割数を NA , NB , NC とすると，辺 BC は NA

くから用いられている [14, 15]．特に 2006 年に，GPU個に均等分割して節を作り，辺 CA, 辺 AB はそれぞ上で頂点数をプログラマブルに増減することが可能な

れ NB , NC 個に均等分割する (図 6(1),(2))．

ジオメトリシェーダ [16] が登場してからは，GPU を

ポリゴン内部のメッシュ分割用いる手法が多く研究されている．例えば，プログラ
マブルシェーダを用いて GPU 上で分割することや，

CG 上で 3 次元物体の形状を動的に操作する手法も提案されている [17]. しかし，これらの手法の多くは全てのポリゴンに対し同一の分割法で分割するために，
元々小さいポリゴンでもさらに細かく分割される．一
般にポリゴンが小さく，頂点が密な領域ほど急激に形状が変化し，疎な領域では元々滑らかなため，物体を滑らかにする用途においては理にかなっている分割であるが，我々の目的である TWISTER においてイン

次に (iii) を満たす最適なメッシュの並びである正三角形を敷き詰めた空間上で，長さ NA , NB , NC で囲まれる領域を作成し，その内部の三角形のメッシュ形状を元にポリゴンを分割する (図 6(3))．この図で正三角形の 1 辺が，新たに生成されるポリゴンの 1 辺に対応している．次に，このメッシュ構造を実際のポリゴンに反映させる (図 6(4)). なお，新たに作成された節の位置の頂点は，投影変換関数を施し位置を計算した後に出力を行う (図 6(5)(6))．

タラクティブな CG コンテンツの描画する用途におい

3ては無駄が多い．
そこで我々は，GPU 上でポリゴンの大きさに応じて動的にポリゴン分割を行うアルゴリズムを用いた．

実装

CG 描画のために実際に使用した PC のスペックは以下のとおりである．CPU: Xeon 3.2GHz (Nocona),

本手法におけるメッシュ分割に要求される事項は，優先度が高い順に以下が挙げられる．

(i) ジオメトリシェーダ上で高速に実行できる変換で

B

(1)

(2)

(3)

あること.

(ii) 隣り合うポリゴンの共有する辺の節が重なること.
(iii) 少ない頂点数，短い辺の長さの三角形で，大き

A

C

(6)

A
(5)

C

(4)

な面積を占めること.
以下ポリゴン分割のアルゴリズムを「辺の分割」，「ポリゴン内部の分割」の 2 点に分けて解説する．

図 6 ポリゴン分割のアルゴリズム概要
Fig. 6 Polygon subdivision algorithm.
2 ceil(x) は，x の小数点以下を切り上げる関数を表す．

城・南澤・新居・川上・: GPU を用いた全周囲立体 CG 映像の実時間生成

RAM:2GB, GPU:NVIDIA GeForce 8800GT．プログ
ラミング言語としては OpenGL および GLSL (OpenGL

DN:Division Number

Shader Language) を使用した．なお変換処理の核となるジオメトリシェーダ部のコードは 400 行程度であった．また，TWISTER が表示できる画像の輝度値に制限があるため，提案手法を実装したシステムでは

DN=1輝度補正の処理も含めている．

DN=4

図7

正三角形の指標ポリゴンを異なる辺分割数で描画した結果．
Fig. 7 Equilateral triangle polygon for evaluation experiment 1.

TWISTER の仕様にあわせるため，全周囲立体映像の画像サイズは片眼につき 3168×600 [pixel] とし，全周囲を前方 180 度と後方 180 度に分けて描画出力した．すなわち，1 フレームにつき 1584×600[pixel] の以後，上記で実装したシステムを用いて提案手法の評価を行う．

4

評価

本章では，提案手法によって高精細な全周囲立体映
像を実時間で描画できることを定量的に評価する．

4.1 評価１：ポリゴン分割と歪みの関係の評価
本手法では，ポリゴンの頂点は TWISTER 投影変換で得られる位置に移動するものの，ポリゴンの内部のピクセルは直線補完した位置に描画される．そのため，小さなポリゴンに分割するとはいえ，ポリゴン内部のピクセルではずれが生じることが考えられる．そ(D: Eye-Polygon Distance)
Average and Standard Deviation [pixel]

画像を 4 枚出力した．

DN=7

40
30
10

1
0.5

(D= 1[m])(D= 3[m])(D= 5[m])1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

0.1

Division Number

図 8 ポリゴンの辺分割数と表示位置誤差の関係．
ドットは平均値，バーは標準偏差を表す．
Fig. 8 Relationship between displayed location error and division number of polygon side. A Dot shows average error,
and bar meens standard deviation.

こでポリゴンの分割によって，歪みがどの程度まで軽減可能かを評価し，TWISTER においてポリゴンの辺分割数の最大値をいくつに定めればよいかを考察するために以下の実験を行った．

考慮して定めた．
通常ならば，本手法ではポリゴンの大きさによって分割の仕方は動的に変化するが，本実験では辺分割数本実験では，ポリゴンの辺分割数を増加させるにしと表示位置誤差の関係，および本手法における最大分

たがって，提示した映像の表示位置の誤差がどの程度割数のパラメータを決定するために，全てのポリゴン増減するかを比較した．この際，画像 1[pixel] ごとに，に対し，同一の分割をおこなった．

実際に表示された位置と TWISTER 投影変換で理想結果・考察的に表示されるべき位置との距離を表示位置誤差とし，

図 7 に，奥行き距離 3[m] で，辺分割数 1, 4, 7 のとピクセルシェーダを用いて表示位置誤差を算出し，記きに描画した映像を示し，定量的に評価したグラフを録した．

図 8 に示す．グラフの横軸が辺分割数を表し，縦軸が実験に用いた指標ポリゴンとしては，観測者から奥表示位置誤差の平均値，及び標準偏差を表す．ポリゴ

行き距離 1, 3, 5[m] の位置で，TWISTER の提示画

ンの 3 辺を同一の辺分割数 N で分割すると，ポリゴ

面内で表示できる最大の大きさの正三角形を配置した

ンは N 2 だけ生成される．

ものを選んだ．提案した分割手法では，三角形ポリゴ

本結果によると，分割を行わない場合では正三角形

ンの内部のうち，各頂点の位置では表示位置誤差はゼの奥行き距離にかかわらず平均値で約 31[pixel] だけ

ロとなり，各頂点から離れた部位であるほど表示位置

表示位置誤差が生じた．しかし分割を行うことで，そ誤差は大きくなる．よって，辺の長さが一定値以下のの表示位置誤差は平均 1[pixel] 以下にまで低減できる

三角形のうち表示位置誤差が最も生じやすいポリゴンことが確認できた．TWISTER の解像度は人間の視

は，各頂点間の距離が最も大きい正三角形のポリゴン

力換算で 0.148 であり，提示面のドットの表示位置がである推測される．そのため今回は，全ての CG ポリ
ゴンの基礎となる三角形ポリゴンのうち，歪みの目立

1[pixel] 以上ずれないように，装置の機械振動や LEDの発光タイミングなどを各部位を設計している．すな

つ例として正三角形ポリゴンを選んだ．なお，正三角

わち，1[pixel] 未満では，機械振動などの他の誤差要

形の奥行き距離は TWITSER の立体視可能な位置を日本バーチャルリアリティ学会論文誌 Vol.13, No.3, 2008

図9

本手法をオープンソースの FPS ゲームである Cube に用い，全周囲立体映像
で描画した結果．この地点を評価 2 の実験において指標オブジェクトとして用いた．
Fig. 9 We selected the open source ﬁrst person shooting game Cube and rendered it by using our method.

因もあるため，提示画像の表示位置誤差が 1[pixel] 未

まず，指標オブジェクトを提示する．そのときの描満であれば，TWISTER においては，十分に許容でき画速度と表示位置誤差を，提案手法により描画したる誤差であるといえる．特に辺分割数 7 では，標準偏とき，辺分割数を固定して描画したとき，ジオメトリ

差も考慮すると，提示画像のほとんどのピクセルで，シェーダを用いずに頂点シェーダのみで描画したとき

表示位置誤差は 1[pixel] 以下であると推測できる．

で記録した．

以上より, 1 辺の最大辺分割数を 7 以上になるよう設定を行うことにより，提示画面内に収まるポリゴン3であれば，全ピクセルに対し TWISTER 投影変換を施したときに近い画像が得られることがわかる．
また，奥行き距離が 1[m]，3[m]，5[m] の正三角形
ポリゴンをそれぞれ比較すると，非常に類似した結果となった．これらのポリゴンは異なる奥行きの位置に配置しているため，表示される位置は相対的にずれているものの，画面最大となるようにそれぞれ大きさをそろえており，提示画面上ではほぼ等しい大きさとなる．本手法では，画面上でのポリゴンの大きさを基準

指標オブジェクトとしては以下のものを選んだ．

1. TWISTER から 3[m] の距離の位置に，ポリゴ
ン数 100 の球 (以下, Sphere100), および 1024 の球 (以下，Sphere1024) を画面最大にしてそれぞれ表示したもの．
2. TWISTER から 3[m] の距離の位置に，ポリゴ
ン数 16301 の Stanford Bunny を表示したもの(以下，Bunny)．
3. 周囲を FPS ゲームである Cube[18] の CG 空間で覆ったもの．

にポリゴン分割を行っているため，上記の 3 つのポリ

TWISTER は遠隔地コミュニケーションを目的としゴンの分割の仕方がほぼ同一となる．そのためポリゴて作られている．そのため，コミュニケーションの相ンの内部の表示位置のずれ方も類似し，表示位置誤差

手となる人物や，CG 空間に配置されたオブジェクトの結果もほぼ等しい値となったのだと考えられる．以を TWISTER を通じて見ることを考慮して，指標オ

上より，提案手法の表示位置誤差は表示オブジェクト

ブジェクトは TWISTER から 3[m] の位置に配置したの奥行きよりも画面上でのポリゴンの大きさに依存すものを選んだ．また指標オブジェクトは，リアルタイ

ることがわかる．

ム CG を目的とした場合に，ポリゴン数の少ないもの

なお，以後の実験では，ポリゴンの辺分割数の最大値を 7 となるようにパラメータを適切に設定した上でから多いものまで偏りがないように選定した．
また，TWISTER で CG 空間を構築し，その CG 空

評価を行う．

間内でコミュニケーションする場合も考慮し，CG 空

4.2 評価 2：描画速度と歪みの評価
前実験では，ポリゴンの辺分割数を固定して実験を行った．しかし提案手法では高速化のためにポリゴン間を指標オブジェクトに加えた．CG 空間としては，
提案システムをオープンソースの FPS ゲームであるの辺の長さに応じて辺分割数を動的に決めている．そものを選んだ (図 9)．この地点は，近景から遠景までこで次に，ポリゴンの辺分割数を動的に決めたときに，含まれた景色で，この Cube の CG 空間内でポリゴン速度と表示位置誤差がどのように変化するかを，辺分数が比較的多い地点である．

Cube に実装し，Cube の中の特定の地点を選定した

割数を固定して描画した結果と比較しながら評価する．

結果・考察

手順は以下の通りである．

図 10 に結果のグラフをまとめた．左列のグラフが，3 TWISTER は全周囲を見ることができるため水平方向に無限に長いポリゴンも提示画面内に収まるが, ここで言う提示画面内に収まるポリゴンとは，1 辺の長さが TWISTER の縦方向のピクセ
ル数 (600[pixel]) 以下のポリゴンと定める．

表示位置誤差を表し，右側のグラフが 1 フレーム当たりの描画時間を表す．また提案手法による描画時間，
およびジオメトリシェーダによるポリゴン分割を行わ

城・南澤・新居・川上・: GPU を用いた全周囲立体 CG 映像の実時間生成

Sphere10012108Proposed

6
4

0

Division Number

1
2
3
4
5
6
7

2

1
2
3
4
5
6
7

Prop

1

14

Vert
Prop

5

Division Number

Sphere(1024 Polygons)
80
60
40
20

Division Number

Division Number

Rendering Time of One Frame[ms]0.04

Stanford Bunny (16301 Triangles)
Bunny

600

0.02

Frame Time[ms]Sphere1024, Bunny を描画した映像を示す．左列が従来手法でスリット幅を 1 [pixel] に設定して生成した理

できる．

1
2
3
4
5
6
7

Vert
Prop

0

250

を見ると，全ての指標オブジェクトにおいて, 提案手

Division Number

法の表示位置誤差は，平均値が 1 [pixel] 未満となって

Cube

おり，提案手法により表示位置誤差を十分に軽減できていることが定量的にも確認できる．
また，辺分割数を増やしポリゴンを細かく分割した

200

場合，表示位置誤差が減少するものの，同時に 1 フ150

レームを描画するために必要な時間も大きくなることが図 10 右列のグラフから確認できる．そのため，例

100

えば全てのポリゴンの辺分割数を 7 に設定した場合，提示画面に収まるポリゴンであれば表示位置誤差は 1
1
2
3
4
5
6
7

0

Vert
Prop

50

1
2
3
4
5
6
7

図 11 に，描画した指標オブジェクトのうち Sphere100,

また図 10 グラフの提案手法の表示位置誤差の結果

1
2
3
4
5
6
7

Prop

れぞれ Prop, Vert として棒グラフで描画した．

案手法で生成した映像を比べた場合，オブジェクトのCube(Approx. 5000 Polygons)

Division Number

図 11 評価 2 で使用した指標オブジェクトを従来手法でスリット幅 1 で描画した結果と提案手法で描画した結果．
Fig. 11 Displayed CG Objects for evaluation
experiment 2. Left images are displayed by conventional methods andRight images by proposed method.

表示される位置や形状に極端な差異がないことが確認

Division Number

1

Bunny

表す4 ．この図より，従来手法の理想的な映像と，提200

5Sphere1024

想的な映像を表し，右側が提案手法で描画した結果を

400

10

Sphere100

ず，頂点シェーダのみで描画したときの描画時間をそ
1
2
3
4
5
6
7

0

1
2
3
4
5
6
7

Prop

1

Sphere1024

Vert
Prop

Rendering Time of One Frame[ms]

100

Prop

Average and Standard Deviation [pixel]
Average and Standard Deviation [pixel]

Rendering Time of One Frame[ms]10

Average and Standard Deviation [pixel]

Average and Standard Deviation [pixel]

Conventional

Sphere(100 Polygons)

Division Number

Porp= Proposed Method
Vert= Without Geometry Shader (Only Vertex Shader)[pixel] 以下になるものの，同時に処理時間も大幅に増
加し実時間性が失われてしまう．それに対し，提案手法では表示位置誤差の生じやすい大きなポリゴンを中心に分割を行っているため，表示位置誤差を十分に抑え，かつ処理時間も押さえられており，効率的な手法

図 10 表示位置誤差および描画時間の関係．左側のグラフは表示位置誤差を表し，右側のグラフは描画時間を表す．
Fig. 10 Displayed location error and Rendering Speed. Left graph shows errors
and right shows framerate.

といえる．
また，提案手法の核となるジオメトリシェーダ部で4 なお提案手法を実装したシステムでは，3 章で述べたとおり輝度補正処理が含まれているため，従来手法を実装したシステムで描画した結果よりも映像が暗くなっている．この色の違いは実装上の差であり，本質的な問題ではない．

日本バーチャルリアリティ学会論文誌 Vol.13, No.3, 2008
800

合（グラフ中の Vert）と，ジオメトリシェーダも用い

700

700

て描画した場合（グラフ中の Prop）との差で確認でき

600

600

500

500

400

400

300

300

200

200

100

100

0

0

用いた地点以外でも描画速度が 20–40[fps] となることが確認でき，提案手法によって CG 空間を実時間で描画可能であることを示す一つの実例ともなった．

Bunny では，提案手法は辺分割数 1 で固定の状態と全く同じ表示位置誤差を示している．これは Bunny を構成するポリゴンが小さく，提案手法では分割を行わなかったためだと考えられる．しかしながら，提案手法と，辺分割数を 1 に固定した場合（すなわち分割を全く行わなかった場合）とでは描画速度に大きな差がSlit Width[pixel]

Slit Width[pixel]

800

0
20
40
60
80
100

近い状況の Cube の例では，この指標オブジェクトに

Bunny

0
20
40
60
80
100
Vert
Prop

間性にやや欠けた結果となった．しかし，より実用にSphere1024

0
20
40
60
80
100
Vert
Prop

67 [ms]，Cube: 30 [ms] という結果となった．リアル
タイム CG の目的としてはポリゴン数の多い Bunny
では，提案手法での描画速度は 14 [fps] となり，実時

Sphere100

Vert
Prop

る．Sphere100: 2 [ms]，Sphere1024: 8 [ms], Bunny:

Frame Rate [fps]の処理時間の増加は，頂点シェーダのみで描画した場

Slit Width[pixel]

Porp= Proposed Method
Vert= Without Geometry Shader (Only Vertex Shader)

図 12 提案手法と従来手法の描画速度の比較．
線グラフは，従来手法で 1 スリットの幅とフレームレートの関係をあらわす．提案手法，およびジオメトリシェーダを用
いずに分割を行わなかったときの描画時
間は，それぞれ Prop,Vert の棒グラフで示している．
Fig. 12 Comparison of frame rate. Lines
show relationship between frame rate
and width of one slit.

ある．提案手法では約 14 [fps] に対し, 辺分割数 1 に固定の場合は 134 [fps] となった．この二つの状況では，る際の一般的な高速化手法であるディスプレイリスト

辺分割数を決定する判定命令が有るか否かの差しかなを用いた．全周囲を何分割するかは可変とし，スリッ

い．そのため，辺分割数を決定する部位で大きなオー

トの幅を変更できるようにした．

バーヘッドが生じていることが分かる．一般に GPU

従来手法ではプログラマブルシェーダを用いていな上の処理では，条件文などの分岐処理が非常に遅いう

いため，表示位置誤差をピクセルシェーダを用いて測え，Bunny はポリゴン数が多いため，このような結定することが難しい．そこで，以下の手順で評価を果が生じたのだと考えられる．しかし，近年 GPU 上行った．

で C 言語を動かす Cuda をはじめ，GPU を汎用的に使用できるように発展しており，この判定処理のオー
バーヘッドの問題は，ハードウェアの進歩で将来的に十分解決できる問題だと考えている．
以上をまとめると，Bunny のようにポリゴン数が多い描画対象の場合，辺分割数判定処理の部位のオー

1. 提案手法を用いたときの描画速度を測定する．
2. 従来手法で，映像の分割数を変えて描画したときの描画時間を測定する．
3. 提案手法と同程度の時間で描画できる従来手法のスリット幅を記録する．

バーヘッドが問題になり実時間性に欠けてくる．しか指標オブジェクトとしては，前実験と同様の Sphere100,

し，リアルタイム CG を念頭に置いた場合，一般的にBunny のような精密な CG モデルは使用されず，Cube

Sphere1024, Bunny を選定した．ただし前実験でもちいた Cube は本実験には含めなかった．その理由は, 従のゲームのようにポリゴン数が少ない CG 空間が構成

来手法を Cube に実装するためには Cube の描画処理される．このような描画対象の場合，提案手法は，表部を大幅に書き換えて実装しなければならない上に，示位置誤差を減少させ，かつ描画時間も抑えた効率的

Cube は描画処理以外にもゲームのための処理も多く含まれているので，従来手法との比較を目的とする本
実験には適さないと判断したためである．

な手法といえる．

4.3

評価 3：従来手法との比較

従来手法と提案手法の性能の比較を行う．ここで述結果・考察べる従来手法とは，1 章で記述したように，CG 空間

結果のグラフを図 12 にまとめる．Sphere100 では，

上で，全周囲 360 度を複数回に分けて描画することで提案手法の描画速度は，従来手法のスリット幅約 18

得たスリット状の映像を並べることで，全周囲に渡り[pixel] の状態の描画速度と同程度であり，Sphere1024

で視差を持った画像を生成する手法である．従来手法

では，スリット幅約 10 [pixel] のときと同程度であっの実装は，提案手法のシステムと同様に OpenGL，及た. 提案手法は表示位置誤差は 1 [pixel] 以下であるこび GLUT ライブラリを用いて行った．複数のスリッとに対し，従来手法のスリット幅 18 [pixel] は提案手トを描画する際には，同一オブジェクトを多数描画す

法より大きいといえる．理想的には画像の横幅は 3156

城・南澤・新居・川上・: GPU を用いた全周囲立体 CG 映像の実時間生成[pixel] なので，従来手法で 3156 等分しスリット幅を
1 [pixel] として描画すれば生成された画像の表示位置

る．頂点シェーダやジオメトリシェーダを既に使用し誤差はゼロとなる．Sphere100 のスリット幅 1 [pixel]

ま適用することが難しいが，近年では頂点シェーダやの状態では 8.5 [fps] となり，提案手法に比べ非常に低ジオメトリシェーダで演算した結果を再びビデオメモ

速である．

リ側に書き戻す Stream Output の機能も登場していているアプリケーションに対しては，本手法をそのま

ただし，描画するオブジェクトのポリゴン数が増加

る [16]．そのため，頂点シェーダやジオメトリシェー

するにつれ，提案手法と従来手法の描画速度の差異はダを用いたアプリケーションであっても，アプリケー

減少する．従来手法は，描画オブジェクトのポリゴンション側で出力した結果を再びビデオメモリに戻し

数が増加してもそれほど速度は低下しないが，提案手

TWISTER 投影変換を施すことも可能ではないかと法では，ポリゴン数の増加に伴い速度も大きく低下し考えている．

ていることが, それぞれの指標オブジェクトの結果を今後は，本手法を改良し更なる高速化，最適化を行比べることで読み取れる．例えば Sphere100 に対する

う予定である．今回は画面内に収まるポリゴンにおいBunny の描画速度を比較すると，従来手法の Bunnyの描画速度は Sphere100 の約半分になったが，提案手て評価を行ったが，当然ながら画面サイズよりもはる

法では約 10 分の 1 程度になる．一方，頂点シェーダ

誤差を十分に削減することは困難であると考えられる．

のみで描画した場合 (図 12 中の Vert) では，指標オブそのため，TWISTER を用いて，TWISTER の提示

ジェクトのポリゴン数にかかわらずほぼ一定の描画速

画面内に収まる CG オブジェクトを観察する場合には度である．よって提案手法の，ポリゴン数増加に伴う問題は生じないが，空のポリゴンや，海のポリゴンな速度低下はジオメトリシェーダ部でもたらされること

ど，画面外にはみ出すほど大きなポリゴンを観察するが分かる．特に，前実験で明らかになった辺分割数判場合には，歪みが目立つ結果が予想される．この点に定処理の部位の遅延が速度低下の大きな原因の一つで関しては，提案手法のポリゴン分割法を改良し，画面はないかと推測される．

をはみ出す大きさのポリゴンの場合には，画面内に表

以上より，ポリゴン数が Bunny 程度のオブジェク
トでは提案手法と従来手法の差がほぼなくなることがかに大きなポリゴンの場合では，提案手法で表示位置示されている部分のみポリゴン分割を行うことで，対処できると考えている．

わかった．しかし，Bunny よりもポリゴン数が少ない提案手法では従来手法と同様に，観測者の頭部位

オブジェクトでは，同程度の表示位置誤差の映像を生置は TWISTER の中心部に常に一致しているという成するために必要な時間は，提案手法の方が短いと確仮定を用いた．しかしながら，観測者の頭部位置と

認した．
おわりに

TWISTER の中心部が常に一致しているという状況は現実的ではなく，わずかな視点変位による影響が，従来から TWISTER の問題点として挙げられていた．

本研究では，全周囲立体映像ディスプレイである

そこで本手法をさらに応用し，観測者の頭部位置の変

TWISTER に対し高精細な映像を，実時間で描画する

位を考慮した投影変換関数を用いることで，観測者のための手法を提案した．また，CG 空間内を移動でき頭部が動いた際の動きに合わせたインタラクティブなるコンテンツである Cube を TWISTER で描画し，提5

案手法により，CG 空間を実時間で描画可能である事

CG を生成することが可能となる．今後，観測者の頭部の位置計測システムと組み合わせ，頭部位置に応じの実例を示した．ポリゴン数が Bunny よりも十分少なて投影変換関数を変化させる描画システムの研究開発

いオブジェクトで，かつ画面内に収まるオブジェクトを行うことが有効であると考えられる．

であれば，従来手法と比較しても，同一時間で，歪みまた，本論文では TWISTER を対象として評価をの少ない映像を描画可能である事を確認した．リアル

行ったものの，提案手法は TWISTER 以外にも様々

タイム CG を念頭に置いた場合には，一般的に Bunny

なディスプレイに容易に応用することが可能であるとのような精密な CG モデルは使用されず，Cube のゲーも考えている．他のディスプレイに応用するためには，

ムのようにポリゴン数が少ない CG 空間が構成される．

CG 空間上の座標と対象のディスプレイの提示面の座そのため，提案手法はリアルタイム CG を描画するう標の対応関係を数式として算出し，投影変換関数を作えで，従来手法より効率的な手法だと考えられる．

成すればよい．特に非平面のディスプレイ面を持つシ

1 章で述べたように，本手法は，既存のアプリケー

ステムや TWISTER のように画像中で複数の映像視

ションのうちプログラマブルシェーダを用いていな点を持つ映像を要するシステムに対しても，ポリゴン

いアプリケーションならば，従来手法よりも容易にを細かく分割することで歪みの少ない映像を提示する

TWISTER 用の映像として描画することが可能であことが可能と推測できる．そのため，このような特殊日本バーチャルリアリティ学会論文誌 Vol.13, No.3, 2008

なディスプレイへの応用も有効であると考えている．

参考文献[1] Susumu Tachi. Telecommunication, Teleimmersion and Telexistence. Ohmsha, IOS Press, 2003.
ISBN4-274-90586-1 (Ohmsha), ISBN1-58603-3387 (IOS Press).
[2] Susumu Tachi. TWISTER: Immersive Ominidirectional Autostereoscopic 3D Booth for Mutual Telexistence. In Proceedings of ASIAGRAPH
2007, pp. 1–6, Tokyo, Japan, 2007.
[3] Carolina Cruz-Neira, Daniel J. Sandin, andThomas A. DeFanti. Surround-screen projectionbased virtual reality: the design and implementation of the CAVE. In Proceedings of ACM SIGGRAPH ’93, pp. 135–142, New York, NY, USA,1993. ACM.
[4] 廣瀬通孝, 小木哲朗, 石綿昌平, 山田俊郎. 没入型多面
ディスプレイ (CABIN) の開発. 日本バーチャルリ
アリティ学会第 2 回大会論文集, pp. 137–140, 1997.
[5] 橋本渉, 岩田洋夫. 凸面鏡を用いた球面没入型ディスプレイ:Ensphered Vision. 日本バーチャルリアリ
ティ学会論文誌, Vol. 4, No. 3, pp. 479–486, 1999.
[6] 橋本渉, 吉田恭平. 壁面と凸面鏡を用いた可搬型没入
ディスプレイ環境. 日本バーチャルリアリティ学会論文誌, Vol. 10, No. 2, pp. 183–189, 2005.
[7] 柴野伸之, 柏木正徳, 澤田一哉, 竹村治雄. 小型半球面
スクリーンを用いた没入型視覚ディスプレイの開発. 日本バーチャルリアリティ学会大会論文集, Vol. 6,
pp. 393–396, 2001.
[8] 近藤大祐, 木島竜吾. 双対レンダリングを用いた自由曲面ディスプレー. 日本バーチャルリアリティ学会大会論文集, Vol. 7, pp. 465–468, 2002.
[9] 橋本直己, 倉橋雅也, 佐藤誠. 曲面スクリーンを用いたマルチプロジェクションディスプレイにおける任意視点での歪みのない映像提示手法. 映像情報メディア学会誌, Vol. 58, No. 4, pp. 507–513, 2004.
[10] 小木哲朗, 林正紘, 藤瀬哲朗. 簡易没入型ディスプレ
イ CC Room の開発と映像生成手法. 日本バーチャル
リアリティ学会論文誌, Vol. 11, No. 3, pp. 387–394,
2006.
[11] Heung-Yeung Shum and Li-Wei He. Renderingwith concentric mosaics. In Proceedings of ACM
SIGGRAPH ’99, pp. 299 – 306, Los Angeles, CA,
USA, 1999.
[12] Kenji Tanaka, Junya Hayashi, Masahiko Inami,
and Susumu Tachi. TWISTER: An Immersive Autostereoscopic Display. In Proceedings of the IEEE
Virtual Reality 2004, pp. 59 – 66, Chicago, IL,
USA, 2004.
[13] E. Catmull and J. Clark. Recursively generated
B-spline surfaces on arbitrary topological meshes.
Computer Aided Design, Vol. 10, pp. 350–355,
1978.
[14] Tony DeRose, Michael Kass, and Tien Truong.
Subdivision surfaces in character animation. In
Proceedings of ACM SIGGRAPH ’98, pp. 85–94,
New York, NY, USA, 1998.
[15] Le-Jeng Shiue, Ian Jones, and Jörg Peters. A realtime GPU subdivision kernel. ACM Transactions
on Graphics, Vol. 24, No. 3, pp. 1010–1015, 2005.
[16] D. Blythe. The Direct3D 10 system. ACM Transactions on Graphics, Vol. 25, No. 3, pp. 724 – 34,
2006.
[17] Kun Zhou, Xin Huang, Weiwei Xu, Baining Guo,and Heung-Yeung Shum. Direct manipulation ofsubdivision surfaces on GPUs. ACM Transactions
on Graphics, Vol. 26, No. 3, p. 91, 2007.
[18] Cube Engine Games. Available from http://
cubeengine.com/. Accessed March 29, 2008.

(2008 年 3 月 31 日)［著 者 紹 介］
城 堅誠 （学生会員）
2007 年東京大学工学部計数工学科卒
業．現在，同大学大学院情報理工学系研
究科システム情報学専攻修士課程在学中．
バーチャルリアリティ，拡張現実感の研究に従事．

南澤 孝太 （学生会員）
2005 年東京大学工学部計数工学科卒
業．2007 年同大学大学院情報理工学系研
究科システム情報学専攻修士課程修了．
同年同専攻博士課程進学，日本学術振興会特別研究員 (DC1)．ハプティックイン
タフェース，テレイグジスタンスシステ
ムの研究に従事．2007 年日本バーチャル
リアリティ学会学術奨励賞受賞．

新居 英明 （正会員）
1995 年東京工業大学大学院理工学研
究科博士前期課程制御工学専攻修了．同年株式会社トキメック入社．2003 年 4 月
同社退社．2003 年から 2006 年まで電気通信大学大学院電気通信学研究科博士後期課程機械制御工学専攻在籍．現在，東京大学大学院情報理工学系研究科システ
ム情報学専攻助教．情報投影技術を利用したヒューマンインタフェースの研究に従事．

川上 直樹 （正会員）
平 8 東工大・理工・電気電子修士課程修了．平 11 東大・工・先端学際工博士課
程修了．工学博士．同年東大院・工・計
数工助手，平 14 東大院・情報理工・シス
テム情報学専攻講師．バーチャルリアリ
ティの研究に従事．
（正会員）
昭 43 東大・工・計数卒．昭 48 同大
大学院博士課程修了．工学博士．同年同
大助手．昭 50 通産省工技院機械技研研究員，マサチューセッツ工科大学客員研究員を経て，平 1 東大先端科学技術セン
ター助教授，平 4 同センター教授，平 6
同大・工・計数工教授，平 13 同大大学院・情報理工・システム情報学専攻教授．テ
レイグジスタンス，人工現実感の研究に従事． IEEE/EMBS 学会賞，通産大臣表彰，国際計測連合 (IMEKO) 特別功労賞，IEEE-VR Career Award など受賞．
IMEKO ロボティクス会議議長，計測自動制御学会会長，日本バーチャルリアリ
ティ学会初代会長.