ゴイサギ日記

東京でエンジニアとして頑張って何とか生きてます。。ゆる~く更新していきます

【Unity】3Dオブジェクトに動画を埋め込む

会社のアーティストさんから3Dオブジェクト内に動画を埋め込む方法を教えて欲しいと言われたので需要があるか分かりませんがその辺をまとめてみました。

リソースの準備

まずは必要リソースを準備します。

動画ファイル

動画ファイルです。まずはこれが無いと何も始まりませんね

RenderTexture

動画のレンダリング先となるテクスチャを用意します。
Projectビュー内で 右クリック > Create > Render Texture で作成します。

RenderTexture の Inspectorで重要な項目を以下にまとめました。

項目 概要
Dimension ここは2DでOKです。
Size テクスチャの解像度を設定します。設定する数値は2のべき乗(128, 256, 512...)にする必要があります。
Anti-aliasing アンチエイリアスを設定します。必要無ければ None にしておきます。
Enable Compatible
Color Format
チェックを入れておくと Color Format で設定したフォーマットが未対応ハードの場合、互換性のあるフォーマットを設定してくれます。
Color Format テクスチャのカラーフォーマットを設定します。
Depth Buffer Depthを用いて何か処理をしない限り必要ないのでサイズ削減のために None を選択します。デフォルトでは「At least 24 bit ...」が設定されているので注意
マテリアル

次にマテリアルを用意します。先ほど同様に Projectビュー内で 右クリック > Create > Material で作成します。Shader は今回はシンプルに Unlit > Texture にしています。あとはこのマテリアルに先ほどのRenderTexture を設定して準備は完了です。

設定
  1. まずはシーン内に適当な3Dオブジェクトを配置します。
    今回はHierarchyビュー上で 右クリック > 3D Object > Cube で立方体を作成しました。

  2. 次に対象の3DオブジェクトのMaterials に作成したマテリアルを設定します。

  3. Inspectorビューから Add Component を選択して VideoPlayer を接続します。

  4. Video Clipに 動画ファイルを設定します。

  5. Render Mode を Render Texture に変更後、Target Textuure に先ほど作成した RenderTexture を設定します。

  6. 以上で準備は完了です。シーンを再生すると3Dオブジェクト内に動画が再生されてます。

まとめ

というわけで今回は VideoPlayer と RenderTexture を使って
3Dオブジェクトに動画を埋め込む方法をまとめてみました。
スクリプトなしでここまで出来るUnityやっぱり凄いですね。

ちなみにスクリプト制御での動画再生やコーデックについてはこちらにまとめてます。
goisagi-517.hatenablog.com

参考

Unity - Manual: Render Texture