0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Terrainに穴をあけて洞窟を造る【力技】

Last updated at Posted at 2025-01-31

gif_1_.gif

事前準備

  1. Terrainの作成を行う
  2. FBX Exporter(公式)でTerrainをFBXに書き出す
    image.png
    図1.png
  3. モデリングソフトなどで書きだしたTerrainのメッシュを反転させて、洞窟の天井を作る
    (軽量化のためそれ以外のメッシュは消す)
    image.png
  4. 洞窟の床用のTerrainを作成する
    無題150_20250131110343.png

洞窟の入り口を作る

仕組みとしてはゲーム「Portal」の様に穴に見えるように描画してやろう!という話。
image.png

洞窟内用シェーダー

デフォルトのシェーダーやURPのLitシェーダーなどをコピーして
以下の設定を適切な場所に置く。

"Queue" = "Geometry"

みたいなコードがあればそれを置き換えつつその下あたりに。
"Queue"が"Geometry-300"である点に注意。

{
    //~これより上に必要な処理があれば~//
	SubShader
	{
		Tags { "Queue" = "Geometry-300" "RenderType" = "Opaque" }
        Pass
        {
            // Tags { "LightMode" = "UniversalForward" } ←URPならこれつける
            Stencil 
            {
                Ref 1
                Comp Always
                Pass Replace
            }
        }
	}
    //~これより下に必要な処理があれば~//
}

洞窟穴用シェーダー

洞窟の穴になるシェーダー
これは置き換えとか挿入とかせずそのまま使う
"Queue"が"Geometry-200"である点に注意。

Shader "Custom/HoleMask"
{
		SubShader
	{
		Tags { "Queue" = "Geometry-200" "RenderType" = "Opaque" }
		Pass
		{
			ZWrite On
			ColorMask 0
		}
	}
}

表面用シェーダー

こっちはTerrainシェーダーをコピーしてくる
やりかたは洞窟内シェーダーと同様。
"Queue"が"Geometry-100"である点に注意。

{
    //~これより上に必要な処理があれば~//
	SubShader
	{
		Tags { "Queue" = "Geometry-100" "RenderType" = "Opaque" }
        Pass
        {
            // Tags { "LightMode" = "UniversalForward" } ←URPならこれつける
            Stencil 
            {
                Comp Equal
            }
        }
	}
    //~これより下に必要な処理があれば~//
}

使い方

  1. 反転Terrain、床用Terrain、洞窟内に配置するオブジェクトの三つを洞窟用シェーダーに変更
  2. 入口に穴用オブジェクトを配置、洞窟穴用シェーダーを使う
  3. Terrainに表面用シェーダーに変更

しくみ

  1. 洞窟を描画する
  2. マスクは描画せず、代わりにマスクの部分に洞窟を描画する
  3. Terrainを描画する。この時マスクは上書きしない
  4. 洞窟完成!

gif_1_.gif

余談

力が足らず上手く動かなかったが、シェーダーを書かずともURP設定で同様のことができる。
image.png
おそらくTerrainのデフォルトの"Queue"が"Geometry-100"になっている為描画順でおかしくなるっぽい。
Terrainでなければ動くし、上手く動けばこっちの方が楽。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?