質問: Unityで1scaleあたり1タイル模様を表示するシェーダーの作成方法を教えていただきたいです。 Unityでタイルを表示するシェーダーをShaderGraphにて作成し、オブジェクトにそのシェーダーを設定したマテリアルをつけました。 上部と下部はオブジェクトのscaleを取得して1scaleあたり1タイルにすることは可能ですが、そのままだと側面が1scaleあたり1タイルにすることができず、以下の画像のようになってしまいます。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/3cb72178975468342befd1df6961f66e.png) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/4bbc4f4c8cc7169ef70fb042943eb1b0.png) 側面のみ何かしらの処理をする必要があると思うのですが、検討もつきません。 一般的な方法として1scaleあたり1タイルのシェーダー作成するにはどのような方法があるのでしょうか? よろしくお願いいたします。
回答: モデル行列のX、Y、Z基底の長さをモデル座標X、Y、Zにかけて、それをTriplanarノードのPositionに繋ぐというのはどうでしょうか? グラフ全体図 !全体図 グラフ拡大図 !拡大図 キューブを拡縮した様子 !拡縮 Shader Graphは使用経験がなかったので、変な繋ぎ方をしている部分があるかもしれません。あくまでご参考ということで、「このノードを使えばもっとスマートに作れる」といった部分がありましたら、ぜひ改造してしまってください。 追記 == 後でノード一覧を見ていたところ、Objectなんてノードがあるようですね。わざわざモデル行列からスケールを算出しなくても、同様の動作をこのノード一つでまかなえそうです。 Objectノードの「Scale(3)」を、先のグラフ図の中央付近にあるMultiplyノードの「B(3)」に接続すれば、同じ結果をよりシンプルに得られるかと思います。