20
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Unity】URPを使ってVtuberの配信を構築したら思ったより便利だった件

Last updated at Posted at 2024-08-01

こんにちはっ🌟八ツ橋まろんです

UnityのURP(Universal Render Pipeline)を使ってVtuberのライブ配信を行ったので、URPを使ってよかったことについて書いていきます。(Unity2021を使用)

該当の配信はこちら。背景消失・衣装変身の演出を含め渾身のHOT LIMITを披露したBΣretta Crossrain(ベレッタ・クロスレイン)さんの配信も是非見てみてください。(46分30秒~)
https://www.youtube.com/live/0WGf1tdZRoU?si=H6914TAXuN1QwLi0
image.png

1. URPのカメラスタック機能で簡単合成

URPのカメラにはスタック(Stack)という項目があり、カメラ映像の合成が簡単にできるようになっています。
image.png

従来だと2つのカメラの映像合成はカメラのDepthを調整して順番を制御したり、Render Textureを使ってCanvas上で重ねたりしていたりと、面倒な作業があった上に、カメラ映像をそのまま重ねることになるので前後関係が正しく反映されなかったりして、カメラの合成は困難でした。
image.png

URPのカメラスタック機能は、Stackの項目があることでどのカメラを重ねているのか視覚的にわかりやすく、さらに前後関係がきちんと処理されるのでカメラ合成が容易です。
image.png

さて、なぜわざわざカメラを合成するのかというと、キャラクターに対してポストプロセスを追加したいからです。

URPのカメラは、ベースとなるカメラのレンダリングの後、Stackに設定したカメラが上から順に処理されてゆきます。

下の図では、ベースとなるカメラはSkyboxだけレンダリングして、キャラクター(Avatar Camera)と背景(Environment Camera)をスタックしています。
image.png

ポストプロセスが有効になっているカメラは「PP」マークが右に付きます。

スタックしているカメラは上から順に処理されるので、この図では
⓪ベースカメラをレンダリング(Skybox)
①Avatar Cameraをレンダリング
②Avatar Cameraに対して有効なポストプロセスの処理
③Environment Cameraをレンダリング
④Environment Cameraに対して有効なポストプロセスの処理
の順に処理が行われます。

そのため、キャラクターは②と④で2回ポストプロセスが処理され、背景は④でのみポストプロセスが処理されます。

④のポストプロセスで全体の色調整をした後、②のポストプロセスでキャラクターの追加調整ができるということです。(正確にはSkyboxも②の影響を受けるので少し気を付ける必要はある)
image.png

2. URPはカメラごとにレンダリング方法を変えられる

これが個人的にURPの一番の特徴だと思います。

URPはどのようなレンダリングを行うのかをアセットで設定します。
下図のアセット。デフォルトではURP-HighFidelityに設定されている。
image.png

例えばURP-HighFidelityではURP-HighFidelity-Rendererの設定でレンダリングするようにRenderer Listで指定されています。
image.png

URP-HighFidelity-Renderer
・Filtering項目にある通り全てのレイヤーをレンダリングする
・Forwardレンダリングをする
・追加でScreen Space Ambient Occlusion(SSAO)をかける
というレンダリング設定になっています。
(Built-inではポストプロセスの項目にあったSSAOですが、URPではここにあります)
image.png

Renderer Listは複数登録できるので、キャラクター用と背景用、何もレンダリングしない用の3つを追加して使っています。
image.png

そして、URPのカメラ側で、どのRenderer Listに則ったレンダリングをするのか指定できます。
image.png

以上により、
・キャラクター用のカメラはForwardの方式でレンダリング
・背景用のカメラはForwardの方式でレンダリングした上に、SSAOをかける
という使い分けができます。

画像:SSAOにより部屋の隅が暗くなって立体感が出る
image.png

(Built-inだとキャラクターにもかかってしまうため扱いが難しい)
image.png

また、背景だけDeferredレンダリングにすることで、背景に多くのリアルタイムライトを使用したシーン構築も可能になります。
(Deferredレンダリングではシャドウなしの複数リアルタイムライトの処理コストがForwardよりも小さいため)

※ソシャゲの『学園アイドルマスター』でもキャラクターをForward(正確にはForward+)、背景をDeferredでレンダリングしているらしい。
CyberAgent DevelopersのYouTubeチャンネル

3. Visual Effect Graphが使える

URPではVisual Effect Graphを使ってGPUを使ったパーティクルエフェクトが使えます。Visual Effect GraphはパッケージマネージャーのUnity RegistryからインポートできるUnity公式のパッケージです。

Unityの通常のパーティクル(Particleコンポーネント)はCPUで処理していますが、Visual Effect Graphで作ったエフェクトはGPUで処理をするため、大量の粒子を扱うことが可能です。

通常のパーティクルでは数万や数十万の粒子を出すとフレームレートに大きく影響しますが、Visual Effect Graphなら問題ありません。

画像:配信中に使う水柱のパーティクルエフェクト。使っている粒子は水柱1本で10000粒ほど。
image.png

パーティクルが多いとより映えるので、Visual Effect Graphを使えるのはURPの大きな利点の一つになります。

おわりに

以上、URPに関連した有用ポイントを説明しました。

URPに関連しない制作Tipsについては、こちらのツイートで紹介しているので、ぜひ参考にしてみてください。

それではっ🌟

20
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?