複数のマテリアルにひとつのテクスチャ画像を投影するには
https://www.youtube.com/watch?v=P0asZc1ud4E
今回は複数のマテリアルにまたがって、ひとつのテクスチャ画像を投影する方法をご紹介します。
サンプルとなるシーンには複数のメッシュが用意されており、それぞれに異なるマテリアルが適用されています。この中で床以外のマテリアルに対して、ひとつの画像をマッピングし、それを動かしてみます。
まずは床以外のマテリアルを一つのグループとしてまとめます。床以外のメッシュを選択し、グループ化しておきましょう。アイテムを選択したらグループタブ > 新規グループをクリックしOKボタンをクリックします。これで床以外のメッシュを一つのグループとして作業することができます。
次に作成したグループに対してマテリアルを設定します。レイヤー追加 > Groupを選択し、マテリアルグループを作成します。この段階だとただ作っただけなので、このマテリアルグループの影響範囲が設定されていません。テクスチャレイヤータブにあるアイテムポップアップから、先ほど作成したグループを指定します。こうすることで、このマテリアルグループで設定するマテリアルは、床以外のメッシュ全てに対して影響を及ぼすことになります。
それでは、このマテリアルグループの中に一つマテリアルを作成します。このマテリアルは床以外のすべてのマテリアルに共通となるのが確認できます。ではここでテクスチャ画像をマッピングします。レイヤー追加 > 画像 > 画像の読み込みでコンテンツフォルダの中にあるAssets > Images > Miscellaneousからロゴ画像を読み込みます。読み込んだ画像を反転し、シェーダツリー上でマテリアルへとドラッグアンドドロップし、マテリアルのレイヤーマスクとして適用します。そうすると、適用した画像のところだけが新しいマテリアルへと反映され、それ以外の箇所はオリジナルのマテリアルが適用されているのがわかります。
次に画像を簡単に投影できるよう、投影用のカメラアイテムを作成します。アイテムメニュー > カメラ作成でカメラを追加します。このカメラはレンダリングを行うためのカメラではなく、あくまでテクスチャを適用するためだけのカメラとなります。後からひと目で分かるように、カメラの名前はあらかじめ変えておきましょう。ProjectionCameraとでもしておきます。
ではシェーダツリーからレイヤーマスクの画像を選択します。テクスチャロケータタブからプロジェクションタイプを見てみると、デフォルトではUVマップになっています。ここをフロントプロジェクションへと変更し、プロジェクションカメラのポップアップから先程追加したProjectionCameraを設定します。3DビューでProjectionCameraからのビューへと切り替えます。ここで見えているビューに対して、テクスチャが適用されていることになりますので、カメラを調整してテクスチャの映り込み具合を変更してみます。カメラを移動させると、その分、投影されるテクスチャの位置も変わっていきますので、カメラアニメーションによりテクスチャのアニメーションが可能になります。
また、今回は一つのマテリアルに対してレイヤーマスクとして適用しましたが、さらにテクスチャを重ねたグループに対してグループマスクとして適用することも可能ですので、様々なメッシュやマテリアルをまたいで複雑なテクスチャを設定していくことができます。