Developer : ft-lab (Yutaka Yoshisaka).
03/04/2019 - 03/01/2022.
Cameraに割り当てる「Panorama180 Render」コンポーネントのパラメータの説明です。
すべての指定はCameraのInspectorの"Panorama180 Render"コンポーネントで行います。
ここでは、
視差を考慮した左右の目から見たEquirectangular 180度の画像を「パノラマ180-3D」と表現しています。
視差を考慮した左右の目から見たEquirectangular 360度の画像を「パノラマ360-3D」と表現しています。
「Panorama Mode」の選択(Panorama 180/Panorama 360)で指定できる項目が変わります。
「Panorama 180」の場合は以下のようなUIになります。
「Panorama 360」の場合は以下のようなUIになります。
"Output"-"Texture Size"の指定がPanorama 180/Panorama 360で異なります。
また、"Simulate VR180 Camera"、"Vignette"、"Output"-"Align Type"の指定が無効になります。
項目名 | 説明 |
Show Info |
Play時のGameビューの左上にフレームレートや現在のフレーム数、経過時間を表示します。 |
Post Processing |
Post Processing (v2)がカメラに割り当てられている場合、レンダリング結果にも反映します。
Unity 2018.3以降でHDRPを使用している場合は、このパラメータは機能しません。
|
Panorama Mode (ver.2.0.0 -) |
"Panorama 180"を選択した場合はパノラマ180-3Dの画像を生成します。
"Panorama 360"を選択した場合はパノラマ360-3Dの画像を生成します。
|
Eyes Type (ver.2.0.1 -) |
"Mono"を選択した場合は単眼の画像を生成します。
"Stereo"を選択した場合はステレオの画像を生成します。
"Mono"のときは、IPDは0として扱われます。視差はゼロとなり、カメラの中心からパノラマレンダリングされます。
|
Game View Mode |
"Panorama View"を選択した場合は、Gameビューの表示をパノラマ180-3Dまたは360-3Dにします。
"Default"を選択した場合は、Gameビューの表示をMainCameraからの表示にします。
"Default"のとき、Panorama180 Renderの処理は行われません。
出力されるレンダリング自身はパノラマ180-3Dまたは360-3Dになります。
なお、ビルドしてRuntime実行した時は常に"Default"として扱われます。
|
Render Texture Size |
パノラマ180-3Dのレンダリングは、キューブマップの5面(-X/+X/-Y/+Y/+Z)を使用します。
パノラマ360-3Dのレンダリングは、キューブマップの6面(-X/+X/-Y/+Y/-Z/+Z)を使用します。
このときの各キューブマップのテクスチャサイズを指定します。
512/1024/2048/4096/8192を選択できます。
パノラマ360-3Dの場合はこのテクスチャのサイズ自身を変化させるため、同一テクスチャサイズにはなりません。
|
IPD |
左目と右目の間隔を瞳孔間距離(IPD : Interpupillary distance) として指定します(単位 メートル)。
"Eyes Type"で"Mono"を選択している場合は、IPDの指定は無効になります。このとき、パノラマは視差0としてレンダリングされます。
|
Near Distance (ver.1.0.2 -) |
内部計算用の、カメラの近クリップ面までの距離を指定します(単位 メートル)。
Depthテクスチャを出力するとき、0.0-1.0の間に補正する際に使用されます。
|
Far Distance |
内部計算用の、背景とみなす距離を指定します(単位 メートル)。
"Simulate VR180 Camera"がOffの場合に、
キューブマップをスティッチングする際の背景と認識する距離を指定します。
この値は、"Background Panorama"の"Radius"よりも小さい値である必要があります。
|
Simulate VR180 Camera |
Onにすると、魚眼2つで構成されるVR180カメラのようなレンダリングを行います。
レンダリング自体は魚眼ではなくEquirectangularになります。
VR180カメラのようなレンダリングは、左右を向いた場合に視差がなくなります。
そのため、左や右を向くほど被写体が大きくなるように見えます。
このパラメータをOffにした場合は、左右を向いた場合の視差も反映します。
"Panorama Mode"が"Panorama 360"の場合はこの指定は無効になります。
"Panorama 360"時は常に視差を考慮します。
|
Synchronize Gaze Direction (ver.1.1.0 -) |
パノラマ画像生成時のカメラの回転を制御します。
Offにすると、Y軸回転のみを許可します。
Onにすると、Y軸回転に加えてXZ軸回転も許可します。
|
Vignette |
左/右それぞれで、周囲を暗くするビネット効果の強さを指定します。
"Panorama Mode"が"Panorama 360"の場合はこの指定は無効になります。
|
Background Panorama
背景のパノラマ画像または動画を指定します。
Runtime時は機能しません。
項目名 | 説明 |
File Type |
Imageを指定すると静止画、Videoを指定すると動画の指定になります。
なお、Videoを指定した場合のVideo ClipのAudioは、動画出力時には反映されません。
|
Image |
File Typeが"Image"の場合に、静止画のTextureを指定します。
環境によっては、背景パノラマのテクスチャのImport Settingsで"Generate Mip Maps"がOnの場合に正しく表示できないときがあります。
その場合は、"Generate Mip Maps"をOffにするようにしてください。
|
Video |
File Typeが"Video"の場合に、動画のVideo Clipを指定します。
|
Loop |
File Typeが"Video"の場合に、動画を繰り返し再生します。
|
Speed |
File Typeが"Video"の場合に、再生速度を指定します。
|
Panorama Type |
投影タイプを指定します。
"Equirectangular360 TopAndBottom"は、上/下に左目/右目の360度パノラマを配置したものです。
"Equirectangular180 SideBySide"は、左/右に左目/右目の180度パノラマを配置したものです。
"FishEye180 SideBySide"は、左/右に左目/右目の180度魚眼を配置したものです。
|
Radius |
背景は球体に投影して反映されます。このときの球の半径を指定します(単位 メートル)。
この半径は、"Far Distance"よりも十分大きな値を指定する必要があります。
|
Intensity |
背景の色の明るさを指定します。
|
Output
出力時のパラメータです。
項目名 | 説明 |
Align Type |
左右から見たパノラマを配置する種類を選択します。
"Top And Bottom"で上下に配置します。
"Side By Side"で左右に配置します。
"Panorama Mode"が"Panorama 360"の場合はこの指定は無効になります。"Panorama 360"時は常に"Top And Bottom"で扱われます。
|
Texture Size |
出力時のイメージのサイズを指定します。
"Panorama Mode"の指定で選択できる内容が異なります。
"Panorama 180"
512 / 1024 / 2048 / 3072 / 4096は、左右それぞれのイメージのサイズと同じ指定になります。
"Aligin Type"により上下または左右に配置されます。
4K/5.7K/8K/16Kの場合は、Side By Side固定の配置になります。
このサイズが大きい場合、キューブマップとしての"Render Texture Size"も大きくしないと全体的に引き伸ばされて荒くなることになります。
"Panorama 360"
パノラマ360-3D時は常に左右のパノラマが"Top And Bottom"で配置されます。
出力されるパノラマ画像は正方形になります。
512(512x512) / 1024(1024x1024) / 2048(2048x2048) / 3072(3072x3072) /
4096(4096x4096) / 4K(3840x3840) / 5.7K(5760x57640) / 8K(7680x7680) / 16K(15360x15360) / 16384(16384x16384)を選択できます。
また、"Eyes Type"で"Mono"を選択している場合は、片側の画像のみ反映されます。
|
Depth Texture Type (ver.1.0.2 -) |
パノラマのDepthテクスチャ出力を行う際の種類を選択します。
"None"はDepthテクスチャを出力しません。
"Depth default"はパノラマ画像と同じサイズでDepthテクスチャを出力します。
"Depth one half resolution"はパノラマ画像の1/2のサイズでDepthテクスチャを出力します。
"Depth one quarter resolution"はパノラマ画像の1/4のサイズでDepthテクスチャを出力します。
|
Depth Linear Type (ver.1.0.2 -) |
パノラマのDepthテクスチャ出力を行う際の補間の種類を選択します。
"Linear"はビュー座標でのZ距離を、線形に0.0-1.0に補間して格納します。
"Non-Linear"はビュー座標でのZ距離を、非線形に0.0-1.0に補間して格納します。
Depthの補間計算で、"Near Distance"と"Far Distance"のパラメータが使用されます。
|
Output Image
静止画として出力する場合のパラメータです。
Panorama180 RenderのUnity Editor上の機能になるため、Runtime時は使用できません。
項目名 | 説明 |
Folder |
出力先のフォルダを指定します。
フォルダ表示のテキストは編集できません。
"Select"ボタンを押すと出力フォルダを選択するダイアログボックスが表示されます。
|
File Name |
出力ファイル名を指定します。ここでは拡張子は指定しません。
|
File Format |
出力ファイルの種類を指定します。
jpg/pngを選択できます。
|
Quality |
Jpegとして出力する場合の品質を指定します。
品質は、Superb 100%、Good 75%、Normal 50%、Average 25%、Bad 10%、となります。
|
Depth (ver.1.0.2 -) |
"Output"-"Depth Texture Type"が"None"以外の場合に、パノラマイメージの出力に加えてDepthテクスチャをexr形式で出力します。
|
Output |
このプッシュボタンを押すことで、レンダリングされた静止画が指定のフォルダに出力されます。
|
Output Video
動画としてキャプチャして出力するときのパラメータです。
Panorama180 RenderのUnity Editor上の機能になるため、Runtime時は使用できません。
項目名 | 説明 |
Folder |
出力先のフォルダを指定します。
フォルダ表示のテキストは編集できません。
"Select"ボタンを押すと出力フォルダを選択するダイアログボックスが表示されます。
|
File Name |
出力ファイル名を指定します。ここでは拡張子は指定しません。
jpg/pngの連番出力の場合は、ファイル名の後に"_000000"とフレーム番号が追加されます。
|
File Format |
出力動画ファイルの種類を指定します。
mp4(H.264)、webm(VP8)、mov(H.264)、jpg、pngから選択します。
ハードウェア処理されるmp4が一番出力速度が速いです。
jpg/pngを指定した場合は、指定のフォルダに連番ファイルとして1フレーム事に出力されます。
Ubuntu(Linux)の場合は、mp4フォーマットは使用できません。
|
FrameRate |
1秒間に出力するフレーム数を指定します。
|
Start Time (sec) |
キャプチャの開始時間を秒単位で指定します。
はじめのいくつかのフレームは準備中の場合があり、真っ暗になることがあります。
その場合は、ある程度時間が経った状態でキャプチャするようにしてください。
|
End Time (sec) |
キャプチャの終了時間を秒単位で指定します。
|
Video Smooth |
単純なフレーム補間をして滑らかに見せます。
これは、過去のフレームから現在のフレームを単純に合成する処理を行います。
|
Blur Count |
"Video Smooth"をOnにした場合、参照する過去のフレーム数を指定します(最大5)。
|
Capture Scale |
キャプチャする場合のサンプリング時間間隔を調整します。
この値を大きくするとキャプチャ時間の短縮につながりますが、Video Clipをシーンで使用している場合に同期が取れずに真っ黒になったり、
レンダリング時間がかかる重いシーンの場合にスムーズにならない場合があります。
この値を小さくするとキャプチャ時間は増えますが、より正確にシーンをキャプチャできます。
|
Quality |
動画の品質を指定します。Low/Medium/Highから選択します。
|
Audio |
Audioを動画に付加する場合はOnにします。
シーンのAudioはAudio Sourceを配置するようにしてください。
Video Clip内のAudioはキャプチャ時に反映されません。
|
Exit Play |
キャプチャ処理が完了したときに、自動でPlayを停止します。
|
Output Video |
"Output Video"ボタンを押すと、動画として指定のパラメータでキャプチャを開始します。
|
Play時に表示される情報
Panorama180 Renderコンポーネントの"Show Info"チェックボックスをOnにした場合、Gameビューの左上に経過フレーム数や経過時間が表示されます。
"Inner Framerate"はPlay時の内部的な1フレームの実行時間(秒)です。
動画出力時は、"Output Framerate"と同じ値になります。
"Inner Frame"は経過したフレーム数です。
"Output Framerate"は動画出力時の動画ファイルとしての1フレームの実行時間(秒)です。
動画出力を行わず、Playするだけのときはこの値は参照されません。
Current TimeはPlay開始からの経過時間です。
Playだけ行った場合は現実の経過時間と同じになります。
動画出力時は、出力する動画での経過時間になります。
Panorama Mode (ver.2.0.0 - )
"Panorama Mode"を"Panorama 180"にすると、パノラマ180-3Dの画像を生成します。
"Panorama Mode"を"Panorama 360"にすると、パノラマ360-3Dの画像を生成します。
"Panorama 360"の場合は常に"Top And Bottom"の配置になります。
できるだけ境界部分の切れ目が出にくいように補正(スティッチ)されますが、
上下を向いた場合は立体視する場合の矛盾が大きくなるため、境界部がうまくつながりにくい箇所が出てきます。
Play時のカメラの向き
Play時のカメラは、常にY軸に垂直な向きを向きます。
カメラはY軸中心の回転を行い、XZ軸の回転を行いません。
"Synchronize Gaze Direction"をOnにすると、カメラのXZ軸の回転も許可されます(ver.1.1.0-)。
また、カメラが移動する場合はパノラマ180-3Dのレンダリングもそれに追従します。
以下は、Play前のカメラの位置と回転です。
以下は、Play中のカメラの位置と回転です。
"Synchronize Gaze Direction"がOffのときは、回転のXとZは0になります。
"Synchronize Gaze Direction"がOnのときは、XYZ軸の回転が反映されます。
Play時にシーンに配置する要素
Play時に"Panorama180Render"というGameObjectが生成されます。
この中の"captureCameras"にパノラマ180-3Dのキューブマップの各面を投影するカメラが配置されます。
全部で5+5個のカメラになります。
"Panorama Mode"が"Panorama 360"の場合は、全部で6+6個のカメラになります。
Post Processingが割り当てられている場合は、"captureCameras"内のカメラにも割り当てを行います。
このカメラからのレンダリングを、左右それぞれ1つのパノラマに統合することになります。
背景パノラマを指定している場合は、"panorama360Sphere_left" "panorama360Sphere_right"の球の形状が配置されます。
この球に対して、背景のパノラマ180度が投影されます。
背景パノラマに動画を指定している場合は、"VideoPlayer"に動画が割り当てられます。
"AudioSource"はそのときのAudioが反映されるものになります(Panorama180 Render ver.1.0.0では未使用)。
VR向けの解像度
VR-HMD向けの出力は、最低でも片目で2048ピクセル以上(全体で4K解像度以上)が望ましいです。
VR-HMDで見るパノラマ画像を出力する場合は、
"Render Texture Size"で"2048"以上、"Output"-"Texture Size"で"2048 (4096 x 2048)"以上を指定します。
"Output"-"Texture Size"で"5.7K"以下を指定する場合は、
"Render Texture Size"はキューブマップとしての1つの面のサイズになるため"2048"で間に合いそうです。
なお、両方とも解像度を上げるとそれだけ1フレームのレンダリング時間がかかることになります。
"Render Texture Size"の指定
"Render Texture Size"は、パノラマレンダリングする際のキューブマップとしての1面分の解像度を指定します。
512/1024/2048/4096/8192から選択できます。
この解像度が大きくなると、GPUのメモリ使用量が増大しレンダリング時間もかかります。
4096/8192の場合はより高い性能のGPUが必要です。
目安として、"Render Texture Size"の幅の4倍(カメラを水平にぐるっと一周)が単眼パノラマの解像度に収まると考えるとよさそうです。
"Render Texture Size"が2048の場合は、2048*4=8192となります。
この場合は、パノラマ360で8K解像度がちょうど収まります。
パノラマ180の場合は、2048 * 3 = 6144がパノラマの横方向の解像度に相当します。
パノラマ180-3DでSide By Sideとして8192 x 4096のパノラマ画像を出力する場合は、片目で4096ピクセル分必要になります。
そのため、パノラマ180-3DのSide By Sideの8192 x 4096は"Render Texture Size"が2048の指定でも収まります。
Post Processingの使用
この処理は、Unityのプロジェクトを作成する際にTemplateとして"High-Definition RP"や"Lightweight RP"や"Universal RP"を指定する場合は不要です。
HDRP/LWRPのTemplateの場合は、Post Processingが含まれます。
Unity 2018.3.6 + Post Processing 2.1.3段階での確認になります。
Unity 2019.3.7 + Post Processing 2.3.0でも確認済みです。
メインメニューの「Window」-「Package Manager」を選択し、
「Packages」より「Post Processing」を選択し、プロジェクトにインストールします。
Post Processingの使用方法は、Post Processingのドキュメントをご参照ください。
MainCameraに"Post Processing Layer"コンポーネントを追加し、Post Processingの設定を行います。
"Panorama 180 Render"コンポーネントを追加し、"Post Processing"チェックボックスをOnにします。
これで、パノラマ画像がレンダリングされる際にPost ProcessingのImage Effectがかかります。
この処理は、片目で5面のキューブマップテクスチャ(両目で10面分)に対して行われるため処理時間がかかります。
Panorama180 Renderは片目で5面のキューブマップテクスチャを作って合成します。
その際にAmbient OcclusionやBloomが強い場合やVignetteを使用している場合に、境界が見えてしまいます。
この場合は、Post ProcessingでのAmbient OcclusionやBloomを弱めに調整、VignetteをOffにするようにしてください。
Auto ExposureもOffにしたほうがいいかもしれません。
Vignetteについては、"Panorama180 Render"の"Vignette"を使用するようにします。
Simulate VR180 Camera
"Simulate VR180 Camera"オプションをOnにすると、
VR180カメラのような2つの魚眼レンズからのレンダリングをEquirectangularにしたレンダリング結果が得られます。
この場合は左右を向くにつれて視差がなくなり、立体視できない状態に近づきます。
Offにすると、左右を向いた場合の視差を考慮したレンダリング結果が得られます。
"Simulate VR180 Camera"がOnの場合は、
キューブマップをEquirectangularに展開するときにそれぞれのキューブマップ面を滑らかにつなぐスティッチは発生しません。
Post Processing処理を行った場合は、滑らかに見せるための処理は発生します。
"Simulate VR180 Camera"がOffの場合は、
1つのEquirectangularに異なる視差情報が混在することになるため、スティッチが発生します。
このとき、滑らかに見せるように補間を行い極力境界部のゆがみや切れ目を緩和します。
背景パノラマの指定 (Unity Editor)
背景パノラマは、左右2つの要素がある画像または動画を背景として指定します。
静止画VR180フォーマットの場合はあらかじめ"VR180 Creator" (https://vr.google.com/vr180/apps/) で2眼のパノラマが表示されるように変換しておいてください。
※ "VR180 Creator"は現在公開されていません。
以下のパノラマ展開の種類を指定できます。
- "Equirectangular360 TopAndBottom"
上/下に左目/右目の360度パノラマ(Equirectangular)を配置したものです。
背景としては、前面の180度の範囲が使用されます。
- "Equirectangular180 SideBySide"
左/右に左目/右目の180度パノラマ(Equirectangular)を配置したものです。
- "FishEye180 SideBySide"
左/右に左目/右目の180度魚眼を配置したものです。
なお、背景パノラマはPlay開始時のはじめのカメラの向きが正面になるように配置されます。
カメラの移動や回転には同期しません。
背景パノラマのVR180写真と3D形状を合成する場合 (Unity Editor)
2つの魚眼レンズで構成されるVR180カメラの場合は、左右を向いたときの視差がなくなるという点に注意してください。
VR180カメラで撮影した写真とシーンに配置する3D形状を合成する場合、
Panorama180 Renderでは、"Simulate VR180 Camera"をOnにして使用すると背景のパノラマ写真と3D形状が一致しやすくなります。
ただしこの場合、左右を向いた場合の視差はなくなります。
背景パノラマの解像度が低い場合 (Unity Editor)
背景パノラマ画像は、UnityのプロジェクトにインポートしたTextureもしくはVideo Clipを指定することができます。
このとき、再生時の解像度が低い場合はTexture/Video ClipのInspectorをご確認ください。
テクスチャサイズが2048(デフォルト)よりも大きい場合は、"Max Size"を大きくすることでUnity上で大きなテクスチャとして使用できます。
2の累乗サイズではないテクスチャを読み込む場合は、"Advanced"の"Non Power of 2"を"None"にすることでオリジナルのサイズを使用します。
静止画出力 (Unity Editor)
パノラマ180-3Dの静止画は、
Playを実行後、Cameraに割り当てた"Panorama180 Render"コンポーネントで"Output Image"-"Output"ボタンを押すと
指定のフォルダ/ファイル名に出力されます。
なお、Play中はInspectorの各パラメータを変更することができます。
Playを停止するとPlay前のパラメータに戻ります。
フォルダの変更は"Folder"の"Select"ボタンを押して指定します。
初期値では"プロジェクト名のパス/Output"に出力されます。
"File Name"には拡張子を指定しないファイル名を入力します。
"File Format"はjpgまたはpngを指定し、jpgの場合は"Quality"でJPEG画像の品質を指定します。
動画出力 (Unity Editor)
パノラマ180-3Dの動画は、
"Playを行わない状態で"
Cameraに割り当てた"Panorama180 Render"コンポーネントの"Output Video"-"Output Video"ボタンを押すと出力が開始されます。
このとき、Gameビューではプログレスバーが表示され"Start Time"から"End Time"の時間分の動画が指定のフォルダ/ファイル名で出力されます。
動画出力が完了したときに、出力時間と終了メッセージが表示されます。
このメッセージが表示された後にPlayを停止するようにしてください。
なお、動画出力中はPanorama180 Renderの各パラメータは変更できません。
フォルダの変更は"Folder"の"Select"ボタンを押して指定します。
初期値では"プロジェクト名のパス/Output"に出力されます。
"File Name"には拡張子を指定しないファイル名を入力します。
"File Format"はmp4/webm/mov/jpg/pngを指定できます。
このうち、jpg/pngは連番の静止画をフレーム数分出力します。
mp4は出力が速いです。webmは出力は低速です。
Unityでの実行時の各フレームをキャプチャするために、全体の再生速度を遅くして(timeScaleを小さくして)フレームが飛ばされないようにしています。
シーン要素としてVideo Clipを扱う場合は、はじめの数フレームは暗くなることが多いです。
この場合は"Capture Scale"の値を小さくするようにします。
この値を小さくすることで出力時間はかかりますが、より正確な出力になります。
動画にAudioを付ける場合は、"Audio"チェックボックスをOnにします。
Audioについてはシーンに配置したAudio Sourceが反映されます。
Video ClipについているAudioについては反映されません。
これは、動画を安定して出力したい場合にシーンのtimeScale調整とVideo Clipの再生速度を自動的に調整するのですが、
そのときにVideo Clip側のAudioの同期がうまくいかないためです。
Audioについては、Audio Sourceに分けて指定するようにしてください。
動画(mp4/mov)でのコーデック H.264のライセンス
動画出力時の解像度
mp4(H.264)やwebm(VP8)などの動画を出力する場合、4096 x 2048ピクセルより大きくなると再生時間がかかります。
mp4(H.264)では一般的には4096まで対応していますが、それ以上の解像度も指定できます。
ただし、再生プレイヤーによっては高解像度の場合に、再生のフレームレートが安定しなくなる場合があります。
webm(VP8)の場合は、高解像度(4K以上)になるとmp4よりも再生時の負荷は高いかもしれません。
Panorama180 Renderでは、Unityで使用されているMediaEncoder経由で動画を出力してます。
Unity 2018.3段階ではmp4のコーデックはH.264、webmのコーデックはVP8が使用されます。
両方とも高解像度の動画は負担になりますので、もし4K解像度以上を扱う場合、
FFmpeg (
https://www.ffmpeg.org/ )などを使用して、
H.265やVP9に変換したほうがいいかもしれません。
YouTubeに動画をアップロードする場合は、2019年段階では自動的にVP9に変換されるようです。
Panorama180 Render Ver.2.0.2で16K(15360, 16384)解像度のパノラマ画像/動画出力に対応しています。
Unityでは、webm(VP8)として最大15360 x 15360ピクセルの動画まで対応しているようでした。
16384 x 16384の解像度で動画出力しようとするとエラーになります。
LWRP/HDRP/URPへの対応 (ver.1.0.2 - )
"Panorama180 Render" ver.2.0.0段階では、Unity 2018.3-2019.4/2020.3/2021.2のLWRP/HDRP/URPに対応しています。
バージョンによって動作は異なります。
対応は以下の通りです。
Unityのバージョン | LWRP | HDRP | URP | 備考 |
2018.3 - 2018.4 | OK | OK | - | |
2019.1 - 2019.2 | OK | NG | - | |
2019.3 - 2019.4 | - | OK | OK | |
2020.3 | - | OK | OK | |
2021.2 | - | OK | OK | |
Unity 2019.1 + HDRPでは、"Panorama180 Render"のDepth出力が正しく動作しません。
「
動作検証」に各バージョンの検証内容を記載しています。
HDRPへの対応
Panorama180 Renderは、Unity 2018.1で搭載されたSRP(Scriptable Render Pipeline)のHDRP(High-Definition RP)に対応しています。
HDRPはUnity 2018.3-2018.4/Unity 2019.1-2019.2段階ではPreview版になります。
Unity 2019.3のHDRPは正式対応になります。
HDRPは、プロジェクト作成時のTemplateでHDRPを指定するか、"Package Manager"よりインストールします。
Panorama180 Renderではパノラマ180 3D時は10枚、パノラマ360 3D時は12枚、
のキューブマップテクスチャを生成しそれぞれにPost Processing(Volume)の割り当てを行うため、
HDRP使用時は非常に重くなります。
HDRP使用時のVignetteとExposureを確認
HDRP使用時は、デフォルトで自動露出が行われています。また、VignetteがデフォルトでOnになっています。
この場合は、Panorama180 Renderを使用すると境界が正しく処理されません。
この場合は、HDRPのPost ProcessingでVignetteとExposureを追加し、
VignetteをOffに、ExposureのModeをFixedにします。
以下のように、境界が正しくなりました。
Unity 2020のHDRPでのSampleSceneでは、1つのシーンに複数のVolumeが指定されています。
これにより、場所によってPost Processingの効果が変化します。
そのままPanorama180 Renderの処理を行うと、以下のように境界部が目立ちます。
これを緩和するには、それぞれのVolumeで「Exposure」を「Fixed」にする、「Vignette」を無効にする、
「Bloom」の「Intensity」の値を小さくするのが有効です。
以下のようになりました。
もし、Post ProsessingのVolume指定でBloomが存在しない場合は、追加してIntensityを0にしておくのがよさそうです。
デフォルトではBloomの効果がかかるため、それを無効にしています。
その他、「Directional Light」で「Lens Flare」を使用する場合にも、不正なフレアが出る場合がありました。
Lens Flareはカメラによるエフェクトであるため、Offにしておきます。
VR180としての使用
※ "VR180 Creator"は現在公開されていません。
Panorama180 Renderはパノラマ180-3Dの出力までを行い、静止画または動画のVR180フォーマットとしてのメタデータの割り当ては行っていません。
動画の場合は、Google社の"VR180 Creator" (
https://vr.google.com/vr180/apps/) を使用することで、メタデータをmp4ファイルにつけることができます。
使い方はVR180 Creatorのドキュメントをご参照ください。
静止画の場合は、パノラマ180-3Dレンダリングした画像に対してVR180 Creator(ver.4.0)でメタデータを後から割り当てる手段はありません(メタデータが格納されたbinファイルが必要)。
ただし、180度対応のステレオパノラマ表示ができる大部分のVR-HMDで見る手段があります。
Oculus Goの場合は、
"ギャラリー"でパノラマ180-3Dレンダリングされた画像を読み込み、"180 3D"に切り替えることで立体視で見ることができます。
Depthテクスチャを出力 (ver.1.0.2 - )
"Output"-"Depth Texture Type"で"None"以外を指定し、"Output Image"-"Depth"チェックボックスをOnにした場合、Depthテクスチャをファイル出力することができます。
このとき、Play時のGame View上にDepthテクスチャが表示されます。
"Output"-"Depth Texture Type"の指定で、パノラマ画像と同じサイズ、1/2サイズ、1/4サイズを選択できます。
"Output"-"Depth Linear Type"で"Linear"を指定した場合、Depth値は線形に0.0-1.0に変換されます。
"Output"-"Depth Linear Type"で"Non-Linear"を指定した場合、Depth値は非線形に0.0-1.0に変換されます。
内部的な計算式は以下になります。
"Depth Linear Type"が"Linear"の場合
depth = (ZDistance - NearDistance) / (FarDistance - NearDistance)
"Depth Linear Type"が"Non-Linear"の場合
depth = (ZDistance < FarDistance) ? ((ZDistance - NearDistance) / ZDistance) : 1.0
ZDistanceはビュー座標でのZ距離、
NearDistanceは"Near Distance"で指定したカメラの近クリップ面までの距離、
FarDistanceは"Far Distance"で指定したカメラの遠クリップ面までの距離、となります。
Depthテクスチャの各ピクセルを使用して、 0.0-1.0のDepth値からビュー座標でのZ距離を逆計算できることになります。
"Output Image"-"Output"ボタンを押して静止画像を出力するとき、
"xxxx.jpg"のパノラマ画像の出力に加えて、"xxxx_depth.exr"としてEXR形式でDepthテクスチャが出力されます。
なお、動画でのDepthテクスチャ出力には対応していません。