初心者向けのUnityHDRPの使い方
※この記事は Life is Tech!School秋葉原校のメンバー・メンターが執筆する akihabara-school Advent Calendar 2024 4日目の記事になります
こんにちは!Unityを学んでいるギャップと申します。今回は初心者向けにUnityのHDRPの使い方や概要について説明していきたいと思います。
そもそもHDRPとは
HDRPを説明する前にUnityのレンダリングパイプライン(RP)について解説しておく必要があります。
- RPとはグラフィックの描画にかかわる仕組みのことです。具体的にはカリング (カメラに映らないオブジェクトを取り除く作業),レンダリング (マテリアルなどを参考にゲームオブジェクトを2Dに描画する作業),ポストプロセッシング (光やエフェクトの見た目の追加作業)などの作業を順々に行っています。
- Unityにはこのレンダリングパイプラインが3つあり、そのうちの1がHDRP(High Definition Render Pipeline)です。
- このHDRPは3つの中で最も現実に近い描画ができますが、今のところWebGLやモバイルには対応していない という点があります。
プロジェクトを作成
HDRPを初めて扱う方はSampleProjectを使用することをお勧めします。木やメタルなどの高品質なマテリアルが入っているからです。
- UnityHubの右上の[New project]をクリック
- High Definition 3D sampleを選択して[Create project]をクリック
- 待つ HDRPは機能が多いので他のRPより作成時間が長くなってしまいます。
- 完了 このように金色のボールが置いてあるシーンが読み込まれたら成功です
プロジェクトの編集
サンプルプロジェクトが開けたら次は編集していきましょう。
しかしながらHDRPはほかのRPとLigthやSkyBox周りの設定が大きく異なっているのでそれについて説明していきます
Ligthの設定
HDRPではLightの強さをPhysical Light Units(PLU) というものを使って設定できます。
これらは実際にある単位に基づいて作成されているので現実に近い見た目を作成することができます。
具体的にはCandela(cd),Lumen(lm),Luminance(nits),Lux(lx),EV100(EV)という5つの単位が使用できます。次はこの単位について解説していきます。
- Candela :一つの方向に対してのライトの明るさ(Spot LightやPoint Lightで使用)
- Lumen :全方向に対してのライトの明るさ(Point Lightで使用)
- Luminance:面積をもつ光源からの明るさ(MaterialのEmissionで使用)
- Lux :光が当たったところの明るさ(Directional Lightで使用)
- EV100 :カメラの露出値(VolumeのVisual Environmentで使用)
この単位を使い分けることでよりリアルなグラフィックを作成できます
また、これらの単位は世界中で基準値が共有されています。たとえば「昼間 Lux」などで検索すると簡単に値が出てきます。
そして、光の明るさは進んだ距離の2乗分小さくなるためRangeの値は√明るさにすることをお勧めします。
SkyBoxの設定
HDRPではほかのRPのようにLightingのEnvironmentで設定できません
なのでGlobal VolumeというところからSkyBoxを設定します
設定する前に空のAssetを入れましょう(私が使ったAssetは最後の方に載せます)
- Hierarchy Windowの+ボタンから「Volume」の中の「Global Volume」をクリック
- そしてInspector WindowのNewというボタンでProfileを作成
- するとProfileが作成されるのでAdd OverrideからHDRI Skyを追加してみましょう
上のようになると思います - そしてHdri Skyを有効にしてCubemapを設定してみましょう
上のような空から意図した空に変わっていたら成功です
また、Rotationを有効にして値を変更させると空の向きを変更させられます
何か作ってみる
次はチュートリアルとして下の画像のような画面を作成してみましょう
このような画面はVolumeの設定を変更するだけで簡単に作成できます
-
その前に
HDRPで新しくシーンを作成すると下の画像のように最初に雲が入っている場合があります
このようなときはProject Settings>HDRP Global Setting>Volumetric Cloudsから
一番上のEnableを非有効にすることで雲を消せます -
Global Volumeの設定
雲を削除することができたら、Volumeを下のように設定してください(Hdri Skyのところは何でもいいです)
Bloomは光が漏れだしたり、にじむような表現をさせることが可能です
またExposureはシーン全体の明るさを設定できます
どちらも使いすぎると不自然な見た目になってしまうので注意が必要です
あとは見た目がおかしくならない程度にDirectional Lightを設定して適度なCubeオブジェクトを配置すれば、上のような画面が作成できます
(上の画像のCube元から入っているマテリアルを使用しており、左からBrass_Mat,SandblastMetal_Mat,WoodCounter_Matを使用しています)
他の機能
私が知っている便利な機能を紹介しようと思います
1.Celestial Body
Directional Lightについている機能です
Global VolumeにVisual Environmentを追加し、Sky TypeをPhysically Based Skyにすることで使えます
この機能は天体を描画する機能です
上のようにDirectional Lightの角度を変えることで太陽の位置を変えることができます
(一番下のものは雲に隠れています)
この機能を使うことで夕日などを簡単に作成できます
2.SSGI(Screen Space Global Illumination)
物体は太陽光からの光だけでなく、ほかの物体から反射した光もあたっています
この機能によってその光の照り返しを実装させることができます
Global VolumeにScreen Space Global Illuminationを追加することで使うことができます
下の画像のようにProject Settings>Quality>HDRPからすべてのQualityでLighting>Screen Space Global Illuminationをオンにしないとエラーが出てしまいます
設定ができたら、VolumeにSSGIを設定して下のようにしてください
そして下のように2色のオブジェクトの上にCubeを置くと、照り返しが見えるはずです
(光の影になっている面の方が変化が見やすいです)
(画面に映っていないオブジェクトの反映はできません 下の画像のようになります)
画像に映っている場合
画像に映っていない場合
便利なアセット
HDRPで使える便利なアセットについて紹介します
-
The Heretic: Digital Human | HDRP
こちらもUnity公式が出しているHDRPアセットです
これはリアルな人のモデルが入っているアセットです
ただ重たいので使うときには注意です -
Unity Terrain - HDRP Demo Scene
Unity公式が出しているHDRPアセットです
このアセットはHDRPで使用できる植物などをまとめたアセットです
上記機能と合わせると下の画像のようなものも作れます
使用したアセット
1.https://assetstore.unity.com/packages/2d/textures-materials/sky/allsky-free-10-sky-skybox-set-146014
SkyBoxのアセットです
2.https://assetstore.unity.com/packages/3d/environments/unity-terrain-hdrp-demo-scene-213198
途中でも紹介した植物のアセットです
参考にさせて頂いたYoutubeチャンネル
UnityJapan公式チャンネルです
HDRP以外にも役立つ動画が配信されています
最後に
これを読んだ皆さんもHDRPを使って美しいグラフィックを作成してみてください
最後まで読んでいただきありがとうございました!
Discussion