【Unity】Decalシェーダーで円形の壁に汚れを表示する

投稿者: | 2021-06-01

HDRPのサンプルシーンには、円形の大きな建物があり、カーブした壁の下部に汚れが付いています。

この壁のマテリアルには、シンプルなテクスチャが設定されていて、この汚れは含まれていません。

汚れ部分を選択すると、壁に沿ってカーブしたメッシュがあることがわかります。

このオブジェクトのマテリアルに設定されたDecalシェーダーで、汚れを表示しているようです。

これらのメッシュをBlenderで作って再現してみました。

Blenderで円形の壁を作る

まず、BlenderのUV Sphereの下半分を削除して、プロポーショナルエディティングで全体を上方向に引き伸ばした後、天井も削除しました。

この一段目の面を選択して複製し、X軸とY軸に沿って少し縮小しました。

この部分を別オブジェクトにして、両方ともUV展開しました。複製した方は「TexTools」という無料のアドオンで直線的にしました。

シームレスな帯状の汚れテクスチャはtextures.comでダウンロードしました。「decal」で検索すると背景が透明なテクスチャがたくさん見つかります。

これをUVエディタに表示して、汚れが収まるようにこのUVアイランドを拡大します。

はみ出た部分ではテクスチャがリピートされるので問題ありません。

Unityでマテリアルを設定

これらのメッシュをUnityでインポートして、マテリアルを設定します。大きな壁にはコンクリートのマテリアルを設定しました。

汚れを表示する帯状のメッシュには、Decalシェーダーを設定したマテリアルをアタッチします。

このマテリアルでは、Base Mapの左の欄に、上の汚れテクスチャを設定します。テクスチャのアルファを適用するために、Mask Opacity Channelで「BaseColorMapAlpha」を選択しています。

カラーピッカーやGlobal Opacityで、色や不透明度を変えられます。

これで円形の壁に沿って汚れを付けられました。

コメントを残す

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