[Unity Shader Graph]部分的に色を変える(初心者)
Unity version 2021.3.14f1
1、Shader Graphをインストール
レンダーパイプラインがURPやHDRPの場合はすでにインストールされているのでこの工程は不要
メニュー >> Window >> Package Managerでウィンドウを開く
PackagesのプルダウンメニューからUnity Registryを選択
Shader Graphをインストール
2、Shader Graphを作成
Projectウィンドウで右クリックからCreate >> Shader Graph >> URP >> Lit Shader Graph を選択してファイルを作成
Shader Graphファイルをダブルクリックするとウィンドウが開く
ウィンドウ上で右クリックからCreate NodeでNode検索ウィンドウが出てノードを作成できる
※Create NodeをクリックしてもNode検索ウィンドウが表示されない場合はShader Graphのウィンドウ上で左クリックしてみる
使用するノード
Color:色を出力
Blend:Baseになる入力値にもう一つの値をBlendするOpacityはBlendの強度
Texture 2D Asset:任意のテクスチャを出力
Sample Texture 2D:テクスチャを出力するために必要なノード
Replace Color:特定の色を任意の色に変更する
3、ノードを作成
Texture 2D Assetノードを作成しBase Color用テクスチャを設定
Sample Texture 2Dノードを作成しTexture 2D Assetノードを繋げる
Colorノードを作成しノードを右クリックからConvert To >> Propertyでプロパティ化
Replace Colorノードを作成しSample Texture 2DノードのRGBAをInに繋げる
Fromの色を変更したい色にする
※少しでも違う色だと変更されない、また同じ色が他の場所にもあるとそちらも変更されるので絶対に使用しない色にする ここではR:0,G:255,B:0にしている
※色の境目はアンチがかかって変更されないのでテクスチャ展開の時に少し広めに隙間をとったほうが良いColorノードをReplace ColorノードのToに繋ぐ
Texture 2D Assetノードを作成し影用のテクスチャを設定(黒が影、白が透過)
Sample Texture 2Dノードを作成しTexture 2D Assetノードを繋げる
Blendノードを作成し7で作成したSample Texture 2DノードのRGBAをBlendに繋ぐ
Replace ColorノードをBlendノードのBaseに繋ぐ
BlendノードをFragmentのBase Colorに繋ぐ
4、マテリアルを作成
Projectウィンドウで右クリックからCreate >> Materialで必要な数のマテエリアルを作成
MaterialファイルにShader Graphファイルをドラッグ&ドロップする
Materialファイルを選択しInspectorウィンドウでプロパティ化したノードのColor(色)を調整する
5、3Dモデルにマテリアルを設定
3Dモデルを3Dツールで作成しテクスチャ展開してエクスポート
ここではBlenderで作成しfbxでエクスポートしているUnityにモデルをProjectウィンドウにドラッグ&ドロップでインポート
インポートしたファイルを選択してInspectorウィンドウのMaterialsタブで作成したMaterialファイルを設定
ProjectウィンドウからHierarchyウィンドウにドラッグ&ドロップする
そのファイルを右クリックからDepulicateで複製する
複製したモデルのInspectorウィンドウでMeshRendererのMaterialsでマテリアルを変更する
※メッシュにアニメーションがついている場合はファイル内のメッシュを選択してSkinned Mesh RendererのMaterialsでマテリアルを変更する5〜6を必要な数だけ繰り返す
説明が間違っている可能性がありますので自分でも調べて確認してみてください
Materialを増やさずC#でPropertyの色を変更したい場合は以下を参考にしてみてください
この記事が気に入ったらサポートをしてみませんか?