Unity

【Unity】VideoPlayerで3D空間の3Dオブジェクトに動画を映す

この記事について

Unityで「テレビ」「モニター」「看板」に動画を再生したいことはありませんか?
実は、VideoPlayerコンポーネントを使えば誰でも簡単に実装可能です。

この記事では、
・3D空間内のオブジェクトに動画を表示する方法
・動画を再生・停止するスクリプト
を実際の設定画面と一緒に解説します。

この記事でわかること

  • UnityのVideoPlayerを使った動画再生の仕組み
  • モニター(Planeなど)に映像を表示する設定手順
  • スクリプトで動画を制御する方法
  • 見た目をきれいにするマテリアル設定のコツ

ゲーム内モニターに動画を映す

Unityには「VideoPlayer」という専用コンポーネントがあり、動画を以下の3通りで再生できます。

Render Mode説明
Camera Near Planeカメラ前面に再生(HUD風)
Render Texture指定のテクスチャに出力
Material Override(おすすめ)オブジェクトのマテリアル上に再生

今回は「Material Override」を使って3D空間のモニターに直接動画を流します。

モニター(3Dオブジェクト)を用意する

  1. Hierarchy → 3D Object > Plane を追加
  2. 名前を「Monitor」に変更
  3. スケールをモニターっぽい比率に調整

モニターにVideoPlayerを追加する

  1. 「Monitor」を選択
  2. Add Component → 「Video Player」を追加
設定項目補足
SourceURL動画は以下に保存。Assets/StreamingAssets
Render ModeMaterial Overrideオブジェクトのマテリアルに出力
RendererMonitor の MeshRendererどのオブジェクトに表示するか指定
Material Property_MainTexAuto-Select Propertyのチェックを外すと変更可能

※StreamingAssetsフォルダに動画を置くと、ビルド後も自動で読み込めます。

マテリアルをUnlitに変更する

光の影響を受けると画面が暗くなるため、Unlit(発光タイプ)のマテリアルを使います。

  1. Projectビューで「右クリック → Create → Material」
  2. 名前を「Mat_Monitor」
  3. Shaderを Unlit/Texture に変更
  4. Plane(Monitor)に適用

スクリプトで再生・停止を制御する

以下のスクリプトを書いてアタッチすると、必要に応じて再生・停止を制御します。
※動画が逆さだったのでMonitorのRotationを「X:90,Y:180,Z:0」にしています。また、VideoPlayerの「Play On Awake」のチェックボックスを外すように変更しています。

using UnityEngine;
using UnityEngine.Video;

public class VideoPlayerScript : MonoBehaviour
{
    [SerializeField] private VideoPlayer videoPlayer;

    void Start()
    {

        string path = System.IO.Path.Combine(Application.streamingAssetsPath, "PV.mp4");
        videoPlayer.url = path;

        // ゲーム開始時にポーズ(これを入れておかないと何も表示されていない状態でポーズする)
        videoPlayer.Pause();
    }

    void Update()
    {
        // スペースキーで再生・停止を切り替え
        if (Input.GetKeyDown(KeyCode.Space))
        {
            if (videoPlayer.isPlaying)
                videoPlayer.Pause();
            else
                videoPlayer.Play();
        }
    }
}

これでゲーム中に「再生/一時停止」切り替えが可能になります。
※音が流れるので注意してください。また、途切れているのは「Space」キーで投稿者が制御しています。

🎯 まとめ

項目内容
使用コンポーネントVideoPlayer
出力方法Material Override
素材配置場所Assets/StreamingAssets
おすすめShaderUnlit/Texture
制御C#スクリプトで再生・停止