【Unity】デカールプロジェクターで水たまりを表示する

投稿者: | 2021-06-02

HDRPのサンプルシーンでは、デカールプロジェクターで水たまりを表示しています。マテリアルには、背景が透明な白いテクスチャが設定されています。

このようなテクスチャをフリーソフトのGIMP2で作って再現してみました。

テクスチャを作る

まず、textures.comで「decal」で検索して、背景が透明な汚れや剥がれ等のテクスチャをダウンロードしました。

これをGIMP2で読み込んで、レイヤーを右クリックし、「レイヤーマスクの追加」を選択します。

「レイヤーのアルファチャンネル」で初期化すると、アルファチャンネルをレイヤーマスクにできます。

左側のサムネイルを選択して、真っ白で塗りつぶします。

これで、背景が透明な水たまり用テクスチャができました。

もとの画像をグレースケールにしてもいいかもしれません。

この画像にそのままぼかしを入れると、輪郭がぼやけて解像度が低い感じになりました。

そこで、右クリックからレイヤーマスクを適用して複製し、片方だけにぼかしを入れました。

ぼかしを入れる方は少しだけ拡大すると良い感じになりました。「中心点から」にチェックを入れると拡大しやすいです。

これで自然なぼかしが入ったと思います。

ぼかしが画像の端に到達すると、そこに線ができてしまうので、複製する前に縮小して余白を作りました。

デカールプロジェクターに設定

画像をエクスポートして、Unityでインポートし、マテリアルを作りました。シェーダーはデカールを選択し、インポートした画像をBase Mapにアタッチします。

画像のアルファチャンネルを不透明度に使うために、Mask Opacity Channelで「BaseColoMapAlpha」を選択します。

Affect Smoothnessのチェックを確認して、Smoothnessを大きくすることで水たまりの反射を表現できます。また、カラーピッカーで全体を黒くしました。

ヒエラルキービューでデカールプロジェクターを追加し、上のマテリアルをアタッチします。

Sizeは大きめに、Projection Depthは小さめにして、白枠に地面が含まれるように、シーンビューを見ながら配置しました。

これで、地面に水たまりが投影されました。水たまりが暗すぎるときは、デカールプロジェクターの「Fade Factor」を下げます。

サンプルシーンでは、水たまりに周りのオブジェクトを反射させるために、リフレクションプローブが使われています。このシーンにもリフレクションプローブを配置して、その範囲に水たまりを含めました。

さらにその上にCubeを置いて、リフレクションプローブのインスペクタで「Bake」ボタンを押すと、水たまりにCubeが映りました。

【Unity】デカールプロジェクターで水たまりを表示する」への2件のフィードバック

  1. JIN

    HDRP/DecalシェーダーはあるのですがヒエラルキーにDecalProjectorが見当たりません。ヒエラルキー→新規作成→Renderingがそもそもないのですがパッケージマネージャ等で何かをインポートしないとならないのでしょうか?
    初歩的過ぎる質問で大変申し訳ないのですが、ご教授頂けると幸いです。

    バージョンは2019.4.12です。

    返信
    1. nekoromorph 投稿作成者

      空のゲームオブジェクトに「Decal Projector Component」を付けると使えます。

      返信

コメントを残す

メールアドレスが公開されることはありません。