しっぽを追いかけて

ぐるぐるしながら考えています

Unity と猫の話題が中心   掲載内容は個人の私見であり、所属組織の見解ではありません

Unity URP で Shader Graph でドーナツ型メッシュの穴を調整する

※ これは 2023/04/14 時点の Unity 2022.2.15f1 の情報です

最新版では動作が異なる可能性がありますのでご注意ください

前回は URP Shader Graph を使って Sprite に光る走査線を表示するような効果をつけた

ドーナツ型メッシュの描画

今回はこんなドーナツ型のメッシュを穴の部分の大きさを Shader Graph で調整して描画させてみたい

まず Blender で下記のようなドーナツをつぶしたような形状のメッシュを作成し、.fbx ファイルとしてエクスポート、Unity にインポートする

ドーナツ型メッシュ

カーブで円を作って厚みをつけた後にメッシュに変換して、縦軸のスケールを小さくしてつぶせばできるはず

次に RIng という名前で Unlit の Shader Graph を新規作成し、下記のように設定する

中心からの距離を調整

Object の Positon ノードから頂点座標を持ってきて、Length ノードで中心点からの距離を求めたのち、Lerp ノードで InnerRadius から OuterRadius までの範囲で先ほどの距離に応じて滑らかに移動、元の座標でかけて頂点を移動させるということを行っている

この Shader Graph で Material を作り、先ほどのドーナツ型メッシュに設定してみると・・・

穴の大きさ調整

InnerRadius を小さくすれば穴が小さくなり大きくすれば穴が大きくなる、OuterRadius を大きくすればドーナツ全体が大きくなる

これの何がいいかというと、一定の厚みを維持したままドーナツ全体を大きく描画する・・・みたいなことがやりやすくなる

単純に拡大すると厚みの部分もそれに比例して大きくなってしまう事態が避けられるというわけ