Unityトランスペアレントビデオの制作と利点について話す

透明なビデオのダウンロード

達成した目標

スタンバイアニメーションを再生する必要がある場合があります。アニメーションには、背後のインターフェイスに影響を与えずにアウトラインを含めることができます。
way1:
チャンネル付きのアニメーションフレームシーケンスを使用します。通常、2次元アートは、インポートして使用する数百のシーケンスフレームをアニメーション化して出力する準備ができています(ロードするアニメーションステートマシンを作成するか、スプライトをロードするコードを作成します)。
画像の総数
way2:
ビデオを完成させた、マスクを作成しますが、マスクは画像のみであり、ビデオコンテンツの変更によって変更されません。

欠点が見つかります。多くのシーケンスフレームがある場合、レンダリングには多くのパフォーマンスとリソースが必要であり、fpsは多くの場合1桁に低く、スタックするのが難しいので見られません。パフォーマンスを最適化する場合、小規模なプロジェクトはまったく異なり、時間と労力がかかります。

最適化とソリューション

透明なビデオを使用する:webm、ogvのフォーマット

実装

1.シーケンスフレームの命名の標準化:
フォルダーとファイルに漢字を含めることはできません。バッチ命名ツールをお勧めします:ReNamer、ダウンロードアドレス。不規則な
命名の場合:不規則
フォルダー名を英語に変更し、
ReNamerを開いて次の設定を行います
セットアップ
実施する

2.変換ツールffmpegをダウンロードし、アドレスをダウンロードします
。3. webm透過ビデオの変換を開始します
管理者を開く必要はなく、cmdウィンドウを開きます。cmdがわからない場合は、百度にアクセスしてください。
ここに画像の説明を挿入
入力: "-i画像が保存されているフォルダーの絶対パス\画像名のプレフィックス+最初の画像のシリアル番号の%桁d.png -auto-alt-ref 0 -c:v libvpx -rフレームレート-b:v 1000k出力パスフォルダー名\ビデオ名.webm」(引用符をコピーしないでください。最初の画像がrw_00001の場合は、rw_%5d.pngを入力します出力パスは、Cドライブのルートディレクトリに置くことはできませんアクセス権がないため、デスクトップへのパスである可能性があります。)、コマンドダウンロードアドレス
リファレンス:C:\ Users \ GK \ Desktop \ ffmpeg \ bin \ ffmpeg.exe -i C:\ Users \ GK \ Des
ktop \ renwu \ rw_%4d.png -auto-alt-ref 0 -c: v libvpx -r 25 -b:v 1000k C:\ Users \ GK \ D
esktop \ ffmpeg \ v.webm
ここに画像の説明を挿入
次のインターフェースが表示され、本番環境
ここに画像の説明を挿入
ここに画像の説明を挿入
が完成します。
出力サイズを見てみましょう。この記事の最初の画像を比較できます。
ここに画像の説明を挿入

Untiyで使用

way1:アイコンに従って透明ビデオを選択および設定します。RawImageイメージングを使用してビデオを再生し、VP8モードを設定する必要があります。そうしないと、色が正しくありません。
ここに画像の説明を挿入
ここに画像の説明を挿入
長年に渡って収集されたビデオ再生コードはこちらです

コードを再生

using System;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;

public class VideoControl : MonoBehaviour
{
    private VideoPlayer Vp;
    private RawImage RawImg;

    void Awake()
    {
        Vp = GetComponent<VideoPlayer>();
        RawImg = GetComponent<RawImage>();
        Vp.isLooping = true;
    }

    void OnEnable()
    {
        RawImg.color = new Color(1, 1, 1, 0);
        Vp.Play();
        Vp.loopPointReached += VideoEnd;
    }

    void VideoEnd(VideoPlayer vp)
    {
        Vp.Play();

    }

    void Update()
    {
        if (Vp.frame > 0)
        {
            RawImg.color = new Color(1, 1, 1, 1);
            RawImg.texture = Vp.texture;
        }
        else
        {
            //RawImg.color=new Color(1,1,1,0);
        }
    }

    void OnDisable()
    {
        RawImg.color = new Color(1, 1, 1, 0);
        Vp.Stop();
    }
}

再生すると、fps6666のシルキーバージョンが表示されます。

バイバイ

その他の再生方法:
way2:たとえば、3Dパッチを作成し、シェーダーを設定し、レンダリングモードを選択して画像表示します。これは再生を制御するコードを必要とせず、直接再生できます
ここに画像の説明を挿入

way3:ビデオプレーヤー
のレンダリングモードを調整します。これは、再生を制御するコードを必要としません
ここに画像の説明を挿入

それぞれに長所と短所があります。自分で決めてください。

おすすめ

転載: blog.csdn.net/gheartsea/article/details/103522355