こんにちはっ🌟八ツ橋まろんです。
最近YouTubeショートやTikTokに上げている動画ではUnity HDRPのPathTracing(パストレーシング)機能を使って絵作りをしています。
パストレーシングによってレンダリングされた見た目はこんな感じ🌟
めっちゃフォトリアルできれいですね✨
前半の記事(この記事)では「パストレーシングを使うまでの設定方法」を解説し、
後半の記事(支援者限定)では「パストレーシングを使った上でさらに見た目のクオリティを上げる方法」について解説します(執筆中)。
パストレーシングでどんな絵作りができるの?
パストレーシングを使うことでできる絵の完成形の例がこちらです。
普通に映画なんかで使えそうなクオリティのCGになっていますね✨
パストレーシングの原理
パストレーシングはUnityの通常のレンダリング方法と大きく異なります。
パストレーシングというのをざっくり説明すると
『光の進んだ道筋をシミュレートするレンダリング手法で、カメラから大量の光線を出し、物体にぶつかったら反射させ、光源にたどり着いたら明るいピクセルとする』
というやり方で各ピクセルを計算し、画面を作ります。現実世界のカメラに映る光の道筋を逆算してシミュレーションしているので、現実にかなり近い結果が得られます。
しかしその分、パストレーシングは描画に時間がかかるため、まだリアルタイム用途では使えません。(私のPCで軽めの設定にしても1フレームに5秒かかる)
つまり応答速度の大事なゲームなどでは使えず、時間をかけて写真や映像にするなら使えるといった具合です。
時間のかかるパストレーシングですが、もちろんそれも、できるだけ速くレンダリングできるように工夫されています。その結果、たった数秒でレンダリングできているとも言えます。
光の道筋を逆算するとき、オブジェクトにぶつかったら光を反射させますが、現実の光は1方向に反射せず、全方向に拡散します。全ての拡散の角度をシミュレーションするとキリがないので、パストレーシングではランダムに1つだけ計算し、それを何度も繰り返せば、平均してそれっぽい答えになるよね、というやり方をしています。
つまり『パストレーシングは点描で絵を描いているようなもの』です。上記のランダム要素は点描っぽいノイズ成分として画像に現れます。
下の画像の左を見ると、ノイズがわかりやすいですね。真ん中のようにサンプリング数を上げても、ノイズ成分は完全には消えませんし、レンダリングに時間がかかります。右のように、デノイズ機能でノイズ除去処理をすることで、サンプリング数が少なくてOKでかつノイズのない画像が出来上がります。
このデノイズ機能は、パストレーシングした後ノイズ除去を施し、一気にゴールまで仕上げてくれます。少ないサンプリングでOKかつ、仕上がりがとても良いです。
この機能はUnity 2022.2から登場したもので、私がパストレーシングを使おうと思ったきっかけになりました。
パストレーシングを使うための条件
パストレーシングを使うには強いPCが必要です。具体的には、以下のリンク先(Unity公式)に書いてあるグラフィックカードを搭載した、いわゆるゲーミングPCです。
パストレーシングを始めるための準備(HDRPの準備)
パストレーシングはUnity HDRPの機能なので、まずはHDRPの準備をする必要があります。HDRPの準備の手順は過去にこちらのFANBOX記事でも書いていますが、今回はUnity2022.2で行うので若干UIなどが異なることもあり、いま一度手順を記します。
まずはUnity2022.2で新しいプロジェクトを作成します。
Window → Package ManagerからHigh Definition RP(HDRP)をインポートします。
HDRPのバージョンは14以降です。バージョン14でデノイズ機能が追加されました。
(そして、バージョン14はUnity 2022.2以降でのみ使えます)
HDRPをインストールすると、HDRP Wizardが開きます。
開かない場合はWindow → Reendering → HDRP Wizardで開けます。
HDRP WizardではUnityプロジェクトをボタン一つでHDRP用の設定に変えることができます。
HDRP + DXRタブを選択し、Fix Allを押します。
途中、以下の画面が出てくるのでそれぞれCreate OneとRestart Editorを選びます。
Restart Editorを押すとUnityが自動で再起動します。
Unityが再起動したらHDRP Wizardは閉じてよいです。
HDRPで良い感じの見た目を1から作るには、それなりのライト・スカイボックス・カメラ設定が必要です。今回は、Unity公式が出しているサンプルのシーンを使うことで、これらの設定済みの状態を使って楽をしましょう。
(詳しく設定したい人は、先ほども紹介したこちらのFANBOX記事を参考にしてください)
Package ManagerでHDRPの項目を見ると、Samplesのタブがあります。今回は、その中のMaterial Samplesをインポートして、そのサンプルシーンを使っていきます。
インポートが終わったら、
Assets/Samples/High Definition RP/14.X.X/MaterialSamples/Scene/MaterialSamples
シーンを開きます。下のようなシーンが出てきます。
このシーンでは、ヒエラルキーのRendering Settingsオブジェクトに、スカイボックスやポストプロセスなどの設定が全て入っています。HDRPではVolumeコンポーネントによって、これらのレンダリング設定をします。詳しくは上記で紹介したFANBOX記事を見てください。
これらを1から設定するのは面倒なのですが、今回は既に設定済みで、これを丸々使うので、何もしなくてOKです。
ちなみに、このサンプルシーンではHDRPで使えるマテリアル設定(質感)がたくさん並んでいるので、自分でシーンを作るときにも参考になって便利です。
以上でHDRPの準備は完了です。
既にフォトリアルな見た目が完成しています。HDRP、すごいですね!
しかし、キャラクターを入れてみると、残念ながら大抵のシェーダーではエラーになります。
これはHDRPでは使えないシェーダーを指定しているためです。UTS2.0など、よくあるトゥーンシェーダーはほぼ使えません。シェーダーを変更し、HDRP Litシェーダーにする必要があります。(キャラクターに適切なシェーダー設定をする方法はこちらのFANBOX記事にて)
適切に置き換えると、いい感じになりました。
パストレーシングを使う
さて、やっと下地が整ったので、ここからパストレーシングを使います。使い方は簡単で、VolumeコンポーネントにPath Tracingを追加するだけです。
追加してEnableにチェックを入れると、先ほど見せたようなノイズ交じりの画面になります。デノイズ機能を付けると、このノイズが消えるようになりますので、下画面の右下のFixボタンでデノイズを有効にしましょう。
これで、パストレーシング×デノイズ機能を使えるようになりました。以下のように少なめのサンプリング数で、デノイズ機能はIntelかNvidiaどちらでもいいので有効にして、シーンを再生してみましょう。
また、上の画像の緑色の丸で示した部分にある薄くて白いプログレスバー(パストレーシングの進行度を表す)が出ているのがわかるでしょうか。パストレーシングはサンプリング回数をこなすことで良質な結果がでるので、進行度がプログレスバーであらわされています。右端に行くと進行度100%になり、その状態でデノイズ機能がかかり、ノイズの消えた画像が出来上がります。
パストレーシングの進行は、カメラやオブジェクトの移動、オンオフによって進行度0%からやり直されます。
また通常、シーンを再生していない状態ではパストレーシングは進行しませんが、GameビューやProjectビューの大きさをマウスで操作している間は進行するので、一応シーン再生していなくても見た目の確認はできます。
明るさを変えてHDRPとパストレーシングを比べたのが以下です。
気づいた人もいるでしょう。背景の文字がパストレーシングでは消えています。パストレーシングではレンダリングされるシェーダーにさらに制限がかかるので、HDRP対応でもパストレーシングでは使えないものが多く、今はまだ制約の大きいレンダリング手法と言えます。
その分、ライティングが正確で、奥行きを感じやすく、情報量が増えたように感じるといったメリットがあります。
また、シーンによってはパストレーシングとHDRPとであまり違いが無いことがあります。(上の3番目の明るい場面のスクショなど)
これはこれでHDRPがそもそもすごいということなので良しとして、しかしせっかくなので、パストレーシングによってより際立って見栄えが良くなるライティングや、キャラクターのFBXやマテリアルの設定・モデルの編集などは次の後編の記事で紹介しています。(支援者向けになります)
以上、パストレーシングの紹介でした。またねっ🌟