VR用のレンダリング

Shade3D ver.17で、VR(Virtual Reality/バーチャルリアリティ)向けのレンダリングを行う機能が追加されました。
どのようなレンダリングを行い、VRを見るHMD(Head Mounted Display)にどう渡すのか、といったことを書いていきます。

Shade3D ver.17の製品紹介ページ「VR体験をする」にも使い方が記載されています。
VR動画を再生する場合は、YouTubeにアップロードする方法が近道かと思われます。
ここでは、VR静止画を見る手順を書いていきます。

VRとは?

写真や3Dで作られた画像や世界などを用いて、現実ではない世界を体感する手段をVR(Virtual Reality/バーチャルリアリティ)と呼びます。
作られた世界に入り込むイメージです。

VR-HMD

VRの世界を見るための道具として、VR-HMDがあります。
これは頭にかぶるハードウェアです。
Oculus社のRift、HTC社のVive、Sony社のPSVRなどが有名です。
昨今ではケーブルがないスタンドアロン型としてOculus GoやLenovo社のMirage Soloなども出てきています。

また、スマートフォンと連携するタイプのVR-HMDとして、Google Cardboard (https://vr.google.com/intl/ja_jp/cardboard/)対応の比較的安価で手に入るものもあります。
これは段ボールで組み立てるものになります。
「VRゴーグル」や「ビューア」と呼ばれています。

今回は、この2種類のVR-HMDで見る流れを書くことにします。

VRの世界を作る手段

VRは急速に進化中ですので今後変わるかもしれませんが、
VRの世界に入り込むには大きく2つの方法があります。

  1. 写真または3Dとしてレンダリングされた静止画/動画を使用して、視点位置を変えずに周りを見渡せるもの
  2. 3Dとして構築された世界を使用して、その世界を歩きまわることができるもの

1つめは、左右の目の2視点からのパノラマ画像を作り、これをHMDに映します。
動画の場合は視点を移動させたパノラマ画像にできますが、HMDをかぶって体感する側が視点位置を操作することはできません。
向きは自由に変えることができます。
Shade3Dでは、ver.17からこのステレオのパノラマVR画像を出力する機能が追加されました。
ここでは「パノラマVR」と書きますが、名称はこれといって決まってません。
「パノラマVR」といっても単眼だけのものもあります。Shade3Dからの出力は、ステレオの「パノラマVR」となります。

2つめは、3次元空間上に3Dでモデリングしたシーンを用意し、
3D空間上のシーンをリアルタイムにレンダリングして、HMDに映します。
この場合は、視点を自由に移動させることができます。
左右の目に対応した2つのレンダリングを高解像度で行うことになるため、表示するHMD側は高いスペックが必要になります。
Shade3Dでは、直接は3D空間上のシーンをVR対応させることはできません。
形状データをfbx形式でファイル出力し、UnityやUnreal Engine(UE4)などのゲームエンジンからVRシーンとして出力することになります。

今回は、1つめの「パノラマVRレンダリング」についての説明になります。

VRレンダリングを行う

レンダリングシーンを用意する

チュートリアル「建物を作る」で作成した建物内をレンダリング対象としました。
通常のレンダリングは以下のようになっています。

現実世界と同じように、厳密に寸法を合わせたシーンを使用するようにしてください。

カメラ位置の指定

カメラを見渡したい位置に移動します。
なお、パノラマVRレンダリング時は全天球としてレンダリングするため、カメラの向きや焦点距離はレンダリングに反映されません。

カメラからかなり近い距離に壁がある場合は目の焦点が合わなくなりますので(現実世界とも同じですね)、
ある程度空間に余裕がある場所にカメラを置くのがよいかと思います。

カメラパラメータの調整

統合パレットのカメラウィンドウを表示し、「立体視設定」で以下の調整を行います。

  • 「立体視カメラ」チェックボックスをオン
  • 「配置」ポップアップメニューで「トップアンドボトム(左優先)」を選択
  • 「ゼロ視差面」ポップアップメニューで「自動計算」を選択
  • 「カメラ間距離」の「自動計算」チェックボックスをオフ。60mmを指定。

「カメラ間距離」は、視点を水平方向にずらす距離値です。

「カメラ間距離」は、VRではIPD (Interpupillary Distance : 瞳孔間距離)と呼ばれています。
左右の眼球の瞳孔の中心間の距離になります。60mm~65mmがよく使用されるでしょうか。
また、この距離値は個人個人で差があるため、自身の目に合わせたIPDを測るとより正確になります。

レンダリング設定の調整

イメージウィンドウのレンダリング設定で、「効果」タブを選択し「パノラマ」を「球投影」にします。

レンダリング解像度は、2:1の比率になるように指定します。

VRで表示する場合は、最低でも4096 x 2048ピクセル (4K)を指定するのが望ましいです。
解像度は2の累乗サイズで指定しています。
解像度が小さい場合は、VR上ではボケて見えることになります。
また、現在のVR-HMDの解像度はそれほど鮮明ではないため、最高でも8192 x 4096ピクセル (8K)くらいあればとりあえずはきれいに見えるかと思われます。

レンダリングを行う

レンダリングします。
室内シーンの場合は、レンダリング時間がかなりかかります。
パノラマの解像度x2の画像を作ることになります。ここでは、2048 x 1024ピクセルでレンダリングしました。

縦に2つのパノラマ画像が並び、2048 x 2048ピクセルの1枚の画像となっています。

これをjpeg形式でファイル保存します。
Shade3Dでの作業はここまでになります。

2048 x 2048ピクセルのレンダリング画像をzip圧縮したものを添付します。
解凍するとjpegファイルになります。
shade3d_vr_arch_2048x2048.zip

次回はVR-HMD側にレンダリング画像を渡します。

カテゴリー: VR