この記事でのバージョン
Unity 2022.3.21f1
はじめに
今回はUnityのURPで、デカール(Decal)という
3Dモデルの表面の形に沿って、画像をスタンプのように投影して表示する公式機能の紹介です!
イメージとしては以下のような感じ。
ちなみに同様のシステムにサイバーエージェントが開発したOSSの「AirSticker」があります。
(双方メリットデメリットがあるので、用途によって使い分けるか、もしくは併用する感じ)
なお、記事中では以下のアセットを使っています。
Night Club (SRP) - Unity Asset Store |
Riko - Unity Asset Store |
2D Casual Game UI Set - Unity Asset Store |
デカール(Decal)の使い方
デカールを使うにはまずEdit/Project Settings…を開き、
Graphicsの項目で設定されているUniversal Render Pipeline Assetを選択、
さらにそのアセットに設定されているUniversal Renderer Dataを選択し、
Add Renderer FeatureからDecalを追加します。
なお、デカールが表示されない時はTechniqueをScreen Spacesすると表示されるかもしれません。
ただし、TechniqueをDBufferにした方がクオリティ(と負荷)は上がります。
次にデカール用のマテリアルを作成して、ShaderをShader Graphs/Decalにし、
投影したい画像とそのノーマルマップを設定します。
ちなみにノーマルマップはなくてもいいですが、以下の記事のように自動で簡単に作る事も出来ます。
あとは任意のオブジェクトにURP Decal Projectorを追加し、先程のマテリアルを設定するだけ。
Mesh Rendererはもちろん、
Skinned Mesh Rendererにも表示可能です。
さらにリアルタイム(ゲーム中)に動かす事も可能です。