Version: Unity 6.0 (6000.0)
言語 : 日本語
Video Player コンポーネントのクロック管理
Introduction to panoramic videos

パノラマ動画

Unity のパノラマ動画機能によって以下のことが可能になります。

  • 360 度の、現実世界の映像を簡単に含めることができます。
  • 実際のジオメトリを含める代わりにプリレンダリングされた背景動画を含めることで、 VR シーンの複雑性を低減させることができます。

Unity は、正距円筒レイアウト (経度と緯度) またはキューブマップレイアウト (6 フレーム) の、180 度と 360 度のビデオをサポートしています。

正距円筒図法の 2D 動画のアスペクト比は、 360 度のコンテンツの場合は 2:1 、 180 度のコンテンツの場合は 1:1 です。

正距円筒 2D ビデオ
正距円筒 2D ビデオ

キューブマップ 2D 動画のアスペクト比は、面のレイアウトによって、 1:6 、 3:4 、 4:3 、または 6:1 になります。

キューブマップ 2D ビデオ
キューブマップ 2D ビデオ

Unity エディターでパノラマ動画機能を使用するには、パノラマ動画クリップにアクセス可能であるか、その作成方法を理解している必要があります。

このページでは、エディターにパノラマ動画を表示するための以下の手順について解説しています。

  1. ビデオプレイヤーで、動画ソースの再生をレンダーテクスチャに設定する。

  2. レンダーテクスチャを受け取るスカイボックスマテリアルを 1 つ設定する。

  3. そのスカイボックスマテリアルを使用するようにシーンを設定する。

ノート: これはリソースに負荷がかかる機能です。最適なビジュアル結果を得るには、可能な限り高い解像度 (多くの場合、4K または 8K) でパノラマビデオを使用します。サイズの大きな動画は、デコードのためにより多くの演算能力とリソースを必要とします。ほとんどのシステムでは、ビデオデコードの最大解像度に特定の制限があります (例えば、多くのモバイル端末では HD または 2K、古いデスクトップ端末では 2K または 4K に制限されます)。

1. ビデオプレイヤーの設定

使用したい動画を、アセットとして Unity にインポートしてください。ビデオプレイヤーを作成するには、動画アセットを Project ウィンドウから、Unity の Hierarchy ビューの空の領域にドラッグします。デフォルトでは、この操作によりコンポーネントが設定され、動画はデフォルトカメラに全画面表示で再生されるようになります。Play を押すと、この動画が再生されます。

この挙動を、レンダーテクスチャに対して描画するように変更する必要があります。この変更により、どのように表示されるかを正確にコントロールできるようになります。この変更を行うには、メニューから Assets > Create > Render Texture の順に移動してください。

レンダーテクスチャの Size を、動画に正確に一致させてください。動画のサイズを確認するには、Assets フォルダー内で該当の動画を選択し、Inspector ウィンドウを開きます。下にスクロールして、動画をプレビューするセクションを表示します。プレビューウィンドウで動画の名前を選択し、名前を Source Info に変更してください。

次に、レンダーテクスチャの Depth Buffer オプションを、No depth buffer に設定します。

レンダーテクスチャを No depth buffer に設定
レンダーテクスチャを No depth buffer に設定

ここで__ビデオプレイヤー__の Inspector を開き、Render ModeRender Texture に切り替えます。新規のレンダーテクスチャを Asset ビューから Target Texture スロットへドラッグしてください。

Play モードを開始し、正常に機能していることを確認してください。

動画は Game ウィンドウでは描画されませんが、レンダーテクスチャアセットを選択すれば、そのコンテンツの更新を各フレームで確認できます。

2. スカイボックスマテリアルを作成する

シーンの背景としてパノラマ動画をレンダーするには、デフォルトのスカイボックスを、その動画コンテンツに置き換える必要があります。

新しいマテリアルを作成します (Assets > Create > Material)。この新規マテリアルの Inspector を開き、Material の Shader を Skybox/Panoramic に設定してください (Shader > Skybox > Panoramic に移動します)。

レンダーテクスチャーを、アセットビューから、作成した新規マテリアルのインスペクターのテクスチャースロットへドラッグしてください。

パノラマ動画を正常に表示するには、動画内のコンテンツの種類 (キューブマップか正距円筒か) を正確に特定する必要があります。コンテンツがキューブマップ (静的スカイボックステクスチャで一般的な、十字型およびおよび直線型レイアウトなど) の場合は、Mapping6 Frames Layout に設定してください。

正距円筒コンテンツの場合は、MappingLatitude Longitude Layout に設定してから、360 度__または 180 度__のサブオプションを設定します。ビデオが 360 度ビュー全体をカバーする場合は、360 degree オプションを選択します。ビデオが正面側の 180 度のビューのみの場合は、180 degree を選択します。

Material の Inspector の下部で、__プレビュー__で外観をチェックします。パンで角度を変えて、コンテンツの外観が正しいことを確認します。

3. スカイボックスにパノラマ動画を描画する

最後に、新しいスカイボックスマテリアルを必ずシーンに接続してください。

  1. Lighting ウィンドウを開きます (メニュー: Window > General > Lighting)。

  2. 作成した新規スカイボックスマテリアルアセットを、Environment の下の最初のスロットにドラッグアンドドロップしてください。

  3. Play を押すと、動画がスカイボックスにシーンの背景として表示されます。

  4. シーンカメラの角度を変更すれば、スカイボックスの各部 (つまりパノラマ動画の各部) を表示することができます。

3D パノラマ動画

Player 設定で Virtual Reality Support をオンにします (メニュー: Edit > Project Settings に移動し、Player のカテゴリを選択して、XR Settings パネルを開きます)。特にソースビデオにステレオコンテンツがある場合に有益です。これにより、Skybox/Panoramic マテリアルにある、追加の 3D Layout オプションのロックが解除されます。3D レイアウトには、次の 3 つのオプションがあります。Side by SideOver UnderNone (デフォルト値) です。

左眼のコンテンツが左に、右眼のコンテンツが右に配置されている動画の場合は、Side by Side 設定を使用してください。左右のコンテンツが動画内で上下に配置されている場合は Over Under を選択してください。Unity は、その時点においてどちらの眼が描画されているかを検知し、その情報を、Single Pass Stereo rendering を使用して Skybox/Panoramic シェーダーへ送信します。シェーダーには、Unity が各眼のコンテンツを VR 内に描画する際に、この情報を基にして動画のもう半分を正しく選択するロジックが実装されています。

3D パノラマ動画
3D パノラマ動画

360 度ではない 3D 動画 (つまりスカイボックスマテリアルを使用すべきではない動画) の場合は、カメラの Near/Far Plane Render モード使用時に、同じ 3D Layout を Video Player コンポーネント内で直接、利用できます。

キューブマップ動画のレンダーテクスチャーの種類を変更する

キューブマップ動画を使用する場合、ビデオプレイヤーを 2D レンダーテクスチャーにレンダーして全く同じキューブマップレイアウトを維持する代わりに、直接レンダーテクスチャーキューブにビデオプレイヤーをレンダーすることが可能です。

これを行うには、レンダーテクスチャアセットの Dimension2D から Cube に変更し、レンダーテクスチャの Size をソース動画の個々の面のサイズに正確に一致させてください。

例えば、4 x 3 の横向き十字レイアウトのキューブマップでサイズが 4096 x 3072 の動画の場合、レンダーテクスチャの Size を 1024 x 1024 (4096 / 4 および 3072 / 3) に設定します。

キューブのターゲットテクスチャへの描画時、ビデオプレイヤーは、ソース動画で十字型または直線型レイアウトのキューブマップが使用されていると仮定しています (どちらのレイアウトかは動画のアスペクト比で決定されます)。その後、ビデオプレイヤーはレンダーテクスチャの各面を、正しいキューブの面で埋めます。

上記の結果作成されたレンダーテクスチャキューブを、スカイボックスとして使用してください。これを行うには、マテリアルを 1 つ作成し、上述の Skybox/Panoramic マテリアルの代わりに、Skybox/CubemapShader (Shader > Skybox > Cubemap) としてアサインします。

動画のサイズとコード変換

3D コンテンツを取り入れるためには、その動画の幅 (Side-by-Side レイアウトの場合) または高さ (Over-Under レイアウトの場合) の倍のサイズが必要です。

多くのデスクトップハードウェア ビデオデコーダーでは 4K 、また多くのモバイルハードウェア ビデオデコーダーでは 2K 以下という解像度制限があり、そういったプラットフォームではリアルタイム再生の解像度が制限されることにご注意ください。

ビデオトランスコーディングを利用してパノラマ動画の低解像度バージョンを作成できますが、左右の 3D コンテンツ間のエッジやキューブマップの面とその隣接する黒い部分の間ににじみが発生しないように、予防策が必要です。一般に、視覚的なアーティファクトを減らすには、2 のべき乗のサイズでビデオをオーサリングし、別の 2 のべき乗のサイズにトランスコードする必要があります。


  • 2017–10–25

  • 2D および 3D のパノラマビデオのサポートを 2017.3 に追加 NewIn20173

Video Player コンポーネントのクロック管理
Introduction to panoramic videos