【Unity】UnityでHD-2Dの表現をしてみた

こんにちは！
[CYBIRD Advent Calendar 2024](https://qiita.com/advent-calendar/2024/cybird) 20日目担当の @yoooosu です。
昨日は@cy-n_aoさんの[]()記事でしたね。とても興味深い内容だったので是非見てみてください。

# 今回の記事について
今回、HD-2Dについての記事を書こうと思ったのは近年よく聞くようになった単語で詳しく知らなかったので、これを機に調べて実際に作ってみようと思いました。

# HD-2Dとは
HD-2Dとはドット絵と3Dを融合させた表現技法で懐かしい感じもすれば新しい感じがするものになります。「オクトパストラベラー」から始まり、直近で言うと「ドラクエⅢ」のリメイクでもこの表現技法が使われていましたね。

# 実際にやってみる
1. 使用環境、準備するもの
＜使用環境＞
Uinty 2022.3.4f1
＜準備するもの＞
・Post Processing
・3Dのオブジェクト(今回は[こちら](https://assetstore.unity.com/packages/3d/environments/fantasy/stylized-fantasy-pagan-village-demo-302012)を使用しました)
・降り注ぐ光のエフェクト(今回は[こちら](https://assetstore.unity.com/packages/vfx/shaders/lightrays-2d-effect-103506?locale=ja-JP)を使用しました)
・ドット絵のキャラクター(今回はユニティちゃんを使用しました)
2. 準備したものをインポートする
まずは準備したものを全てインポートします。インポートが完了したら、Assets＞Charttyp＞Stylized fantasy pagan village＞Scenes＞SampleSceneを開きます。今回はこのシーンに手を加えていこうと思います。
![スクリーンショット 2024-12-17 14.34.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991293/bf129e24-caa9-2a8b-5dbf-9e73263babdc.png)
3. Post Processingを使用する
Post Processingを使用して雰囲気を出していこうと思います。
まずは「Bloom」を使用します。「Bloom」は光をあふれさせる表現で、使用すると明るいところを光らせてぼやっとさせることができます。

<img width="350" alt="スクリーンショット 2024-12-17 18.19.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991293/50e3463b-613c-adc6-29aa-f09cca417d66.png">
<img width="350" alt="スクリーンショット 2024-12-17 18.19.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991293/af62906e-c2fc-ce2b-5740-010c1e7c2ca3.png">

次に「Vignette」を使用します。「Vignette」は画像のエッジを暗くし、画像の中央を明るくする効果です。これを使用することで懐かしさの表現ができます。

<img width="350" alt="スクリーンショット 2024-12-17 18.19.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991293/af62906e-c2fc-ce2b-5740-010c1e7c2ca3.png">
<img width="350" alt="スクリーンショット 2024-12-17 18.20.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991293/272b5316-77ad-e42c-f945-332ff285a6c2.png">

最後に「Depth of field」を設定します。「Depth of field」は被写界深度の設定でカメラのピントが合ってない部分をぼやかすことができます。

<img width="600" alt="タイトルなし.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991293/26f53581-6a01-7ce2-cfd8-c7be1c854552.gif">

4.降り注ぐ光のエフェクトの設定
まず、Assets＞LightRays2D＞Shaders＞LightRaysを選択した状態でMaterialを作成します。そうすると「Custom_LightRays」というMaterialが生成されます。
![スクリーンショット 2024-12-17 19.03.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991293/2ee9fde0-113f-326d-27c1-4c69d23fb5a5.png)
次にMain Cameraの子オブジェクトに3D Object＞Quadを追加します。そうしたらQuad＞Mesh Renderer＞Materialを作成した「Custom_LightRays」に設定します。
![スクリーンショット 2024-12-17 19.07.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991293/0c4890b6-9730-9d1a-abd7-9c2509bc4ec7.png)
設定できたら、「Light Rays 2D」というスクリプトを追加します。アタッチできたら、カメラに映るようにTransformやScaleを設定し、そのあとは色などいじれる項目が多くあるので良い感じにいじってみてください。
![スクリーンショット 2024-12-17 19.16.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991293/20bb9b41-497c-b7fc-a7e0-cc3f4f5f2bdf.png)
5. キャラを置いてみる
最後にキャラを配置してどのように見えるか見てみましょう。インポートしておいたドット絵のユニティちゃんを配置してみます。注意することはColliderやRigidbodyは3Dのものを使用します。あとは細かい調整を行えばそれっぽくなると思います。
![スクリーンショット 2024-12-18 10.57.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991293/9b4af360-d998-e75d-e9d4-f8797d43598f.png)

# 終わりに
今回はサクッとできることをやってみました。UnityのPost Processingで使用していないものはまだあるので、もっとこだわればクオリティの高いものができると思いました。
明日の[CYBIRD Advent Calendar 2024](https://qiita.com/advent-calendar/2024/cybird) 21日目は@R_araiさんの[Android Gradle Pluginを更新したらBuildConfig.VERSION_NAMEが参照出来なくなったお話](https://qiita.com/R_arai/private/99c194fe190c82fc81bf)です。楽しみですね。