特定のオブジェクト・アバターだけに光を当てる

投稿者:

「Creators Guide」は、メタバースプラットフォーム「cluster」で「つくる」ことにチャレンジしてみたい方に向けた導入ガイドです。

Creators Guideで読むことができるすべての情報はこちらにまとめています。


今回は特定のオブジェクト・アバターのみをライトで照らす方法について解説します。
ワールドを暗くして雰囲気を出したらアバターが見えにくくなってしまった…そんなときに役立つテクニックです。

事前準備

まず、clusterにワールドをアップロードできる環境を事前に用意してください。

準備はこちらを参考にしてください。

はじめてのワールド作成

上記で紹介する方法以外ではテンプレートプロジェクトを利用するのがおすすめです。下記URLからテンプレートプロジェクトをダウンロードして、Unityで開くことで、clusterへアップロードする環境まで一気に準備することができます。
テンプレートワールドって何?って方はこちらの記事で導入方法を解説しているので、ぜひご覧ください。動画でも解説しています。

ワールドを暗くする

まずはワールド全体を暗くしてみましょう。
詳しくはこちらの記事を参考にしてください。

ワールドに置かれているDirectional LightのIntensityを小さくします。
SkyBoxも夜っぽくしてみました。
※SkyBoxはSkybox Series Freeというアセットをお借りしました。

これで暗いワールドができあがります。
アップロードしてみると、アバターまで暗くなってしまい、せっかくのアバターがよく見えなくなってしまっています。

もちろんこのままにして雰囲気を出すのもアリですが、写真映えや友達との交流のためにはアバターはもう少し見やすくなった方が嬉しいですね。

アバター専用ライトを設置する

アバターだけを照らすように設定したライトを設置することでアバターを明るくすることができます。具体的にはライトの「Culling Mask」設定を変更することで、ライトが特定のオブジェクトだけを照らすようにすることができます。

Culling Maskはライトがどのレイヤーを照らすかを決めるものです。レイヤーとは、シーン内のオブジェクトに割り振られたグループ分けのようなものです。
clusterのワールド制作で利用できる、またシステムで利用しているレイヤーの一覧はこちらのページにまとめられています。

ワールドに設置されているオブジェクトのほとんどは「Default」というレイヤーが割り当てられていますが、アバターには別のレイヤーが適用されているため、そのレイヤーを照らすことでアバターだけを照らすライトになります。

設定は簡単です。下記で具体的な手順を説明していきます!

レイヤーを追加する

準備として、レイヤーの追加をしていきます。

  • Unityの画面右上にある「Layers」の右側の下向き三角形をクリックします。現れたパネルの一番下にある「Edit Layer」をクリックしてください。

Inspectorに「Tags & Layers」という項目が表示されます。その中にある「Layers」を展開して、以下のレイヤーを追加してください。対応する番号の入力欄に名前を入れることでレイヤーを追加できます。
なおサンプルプロジェクトやテンプレートプロジェクトを利用している場合は一部設定済みです。

  • 9: FIRSTPERSON_ONLY_LAYER
  • 10: THIRDPERSON_ONLY_LAYER
  • 16: OwnAvatar
  • 23: Performer
  • 24: Audience

下記のようになっていればOKです!

これでレイヤーの追加ができました。

追加したレイヤーだけを照らすライトをつくる

次は追加したレイヤーを照らすライトをつくっていきます。

まずは普通のライトを置いてみましょう。光のあたる角度などを統一し自然に見せるため、元からあったライトを複製します。

  • Hierarchy上ですでにあるライトを右クリックし、メニューから「Duplicate」を選びます。すると「Directional Light (1)」のような名前で同じ設定のライトが複製されます。
  • 複製されたライトをクリックしてInspectorを開き、Intensityを1にします。これで追加したライトが明るくなりました(明るさはお好みで変えてください)。

それではCulling Maskを設定していきます。

  • ライトを選択してInspectorを開きましょう。

ライトのInspectorのCulling Maskという項目にEverythingが設定されていると思います。これは全てのオブジェクトを照らしている状態になっているということです。

  • まずはこれをNothingに切り替えましょう。

こうするとライトはどのオブジェクトも照らさなくなります。ここから必要なレイヤーを照らすようにしていきます。先ほど追加した以下のレイヤーを一つずつ選択してください。これでチェックマークがついているレイヤーだけが照らされます。

  • FIRSTPERSON_ONLY_LAYER
  • THIRDPERSON_ONLY_LAYER
  • OwnAvatar
  • Performer
  • Audience

設定できたらアップロードして確認してみましょう。アバターだけが周囲より明るく照らされています。

応用編:特定のオブジェクトだけを照らす

同じテクニックを応用して、アバター以外の特定のオブジェクトだけを照らすようにしてみましょう。
まず、同様の手順で以下のレイヤーを追加します。

  • 19: VenueLayer0
  • 20: VenueLayer1
  • 29: VenueLayer2 ※連番ではないので間違えないように!

VenueLayer0~2はワールドで自由に使うことのできるレイヤーです。
追加できたら、照らしたいオブジェクトのレイヤーにVenueLayer0を指定しましょう。

続いてさらにライトを追加し、先ほどと同じようにCulling MaskでVenueLayer0にチェックが付いた状態にすれば完了です。
ここではVenueLayer0に真っ赤なライトを当ててみます。
※ライトの色の変え方は上でも紹介したこちらの記事で紹介しています。

アップロードして確認してみましょう。キューブがVenueLayer0に指定されています。上の写真と同じ白いキューブですが、これだけが赤く照らされていることが分かりますね。

VenueLayer1、2も同様に分けて使うことができるので、工夫してみましょう。

なお、この方法では枠線の出るアイテムは個別に分けることができません
アイテムには自動で特定のレイヤーが割り振られるためです。詳しくは「ワールドに使用できるレイヤー」一覧を参照してください。

今回はワールドのライトでアバターだけ、または特定のオブジェクトだけ照らす方法を解説しました。
雰囲気づくりと見やすさを両立したいときや、演出のために一部だけ照らしたい時などに活用してみてください!


参考記事:「アバターがまっくろくろすけになっちゃうよ(´•̥ ̯ •̥`)hk