不要パーツを消す「何もしない透明なUnityシェーダー」
バッドノウハウっぽいけれど、3D初心者は初心者らしく初心者的なノウハウを書いていこうかと。
既存のモデルを使うとき、「このパーツは要らないなあ」とか思うことがある。
- そのパーツがUnity上で独立したGameObjectになっていれば非表示するだけで済む。
- だが、1つのMeshの中に複数パーツがまとめられているとそうもいかない。
- Blenderとかに行ってMeshをいじる必要がある。
- ヘタするとその過程で色々壊れて面倒なことになる。
で、「何もしない透明なUnityシェーダー」を適用してしまう。最初からマテリアルが分けられていればこのシェーダーを使ったマテリアルを適用するだけで済む。
仮に必要なパーツと要らないパーツが同じマテリアルの間にまたがっていても、Blenderでマテリアルの塗り分けをするだけならモデルが壊れる可能性は低い。
(もちろんチャンとMeshを消すのと比べて重くなることは予想されるので、速度にシビアな局面では使えないと思われる)
Shader "Custom/VoidShader" {
SubShader{
Colormask 0 Zwrite Off
Pass{}
}
}
多分もっと簡単な書き方があるのだろうけど、とりあえずこれで動く。
より軽い書き方があったら教えて下さい。
よりシンプルなのを教えて頂いたので、そっちで。
引っ張ってきたUnityシェーダーがinvalid subscript uv2 エラー
Unityで以前作ったStandardを改変したシェーダーを別のプロジェクトに持ち込んだら、
invalid subscript 'uv2' at /Program Files/Unity/Editor/Data/CGIncludes/UnityStandardMeta.cginc(21) (on d3d11)
というエラーが出た。
これは、そのシェーダーをProjectウィンドウで右クリックして「Reimport」すればいいらしい。
https://www.reddit.com/r/Unity3D/comments/8kjzdf/standard_shader_invalid_subscript_uv2_error/