🤿

clusterワールドで場所毎に適用するPost Processを切り替えて雰囲気を変える方法

2021/12/08に公開

これはCluster Creator Advent Calendar 2021 8日目の記事です。

先月、11月15日にCreator Kitに大きなアップデートが入って、トリガーやギミックがいくつも追加されたみたいです。がしかし、11月はとても忙しかったのでまだ全く触れてません。なんとなくこのアップデート関連で何かしら書けたらと思ってたんですが、まだ何も知らないので、今回は以前に作ったIn the bucketというワールドでやったPost Processの設定を紹介します。Creator Kitの機能は使わず、UnityというかPost Processingパッケージの設定で出来ています。あんまりというか全く目新しい方法とかじゃないですが。

In the bucketはどんなワールドか


In the bucketは、名前の通りバケツの中の水中世界を体験する小さいワールドです。「CUBEの世界再び」という企画に参加したのもあって10立方メートルの広さしかありませんが、この小さい世界の中にも、水中と水上の2つの空間が有ります。この2つの空間を表現する為に、3つのPost Processを使っています。
Post Processについてはこの記事で紹介しますが、他にも水中で聞こえる周囲の環境音や、水から上がった時の聞こえ方の変化とか、水中から10立方メートルよりもっと外の空間を感じられる様な作りをこだわったので、1度訪れて貰えたら嬉しいです。
最近は更新できてないですが、2021年6月頃に雨が降る様にしました。

In the bucket|メタバースプラットフォーム cluster(クラスター)

水の中と外の2つの空間

既に書いたようにIn the bucketには水中と水上の2つの空間があるので、Post Processも2つ、水中用と水上用を用意しています。水中にだけPost Processを使い、水上ではPost Process無しのデフォルトでも2つの異なる空間は表現出来ますが、雨を降らせた事もあり、少しどんよりとした空気感がする様なPost Processを使っています。

この2つのPost Processの切り替えはCreator Kitは使ってなく、Post-process VolumeとBox Colliderの設定だけで出来ています。

  • Post-process Volume: Is Globalをoffに設定
  • Box Collider: Is Triigerをonに設定

基本的にはこの2つを設定するだけで、Box Colliderの範囲内にだけPost Processが適用される様になります。適用したい範囲が四角では設定し難ければ、他のコライダーも使えます。
上の画像の様に、Post Processの適用範囲が隣り合う様に、水面を境に水中を覆うBox Colliderと水上を覆うBox Colliderを積み重ねたら、clusterのプレイヤーがどっちのコライダーの中に居るかで、適用されるPost Processが切り替わります。

Creator Kitは、ほとんどのワールドに対する変化・変更は全プレイヤーに同期的に行われ、例えば部屋の電気を消す様な仕組みを作ったら、全員から見て電気が消えたように画面が暗くなりますが、Post Processでは各プレイヤーがどのコライダーの範囲内に居るかで適用されるので、いわゆるLocalに変化を適用できます。
例えばCreator Kitで素直にOn Collide Item TriggerとSet Game Object Active Gimmickを使って、コライダーの中に入ったらPost-process VolumeがついてるGameObjectをアクティブにする作りだと、誰か1人が水上に出たら、他の人が水中にいたとしても、水中表現が消えてしまいます。Creator Kitのトリガーやギミックを使って、水上に出た人にだけ適用するというのは、不可能ではないですが割と大変なので、Post Processは簡単にローカルへの変化を作れてお手軽です。


左: 水上用Post Processを適用/右: Post Processの適用無し

ちなみに、雨の為にどんよりとした空気感を表現するべく適用したPost Processと、適用しなかった場合の差はこの様な感じです。左右で並べると、こんなに暗いかなって思いましたが、実際にclusterで見たら多分良い感じになってるはずです。

水上の範囲が無限に広い場合

In the bucketは10立方メートルに限られた世界なので、水上の方が水中より狭いまであるんですが、大抵の場合は水上はシーン全体を占めていて、限られた空間である水中という構造な場合の方が多いかもしれません。

その場合、手元で確認してないのでざっくりとしした説明になりますが、水上のPost-process Volume: Is Globalをonにして、水中のPost-process Volume: Priorityを1以上にすれば、水上のPriorityが0なので、水中に居る時だけ水中のPost Processが優先で適用されるんじゃないかと思います。
もしかしたら、水上と水中のPost Processが混ざってしまうのかもしれないので、効果の値とかWeightとかの調整が必要かもしれません。

水の中の深さの表現


左: 深さ用Post Processを適用/右: Post Processの適用無し

左: 深さ用Post Processを適用/右: Post Processの適用無し

In the bucketで使ったPost Processは3個なのでもう1個使いました。それが、水中の表現をより良いものにしたくて、バケツの底に近いほど暗くなるような効果をPost Processでやったというものです。
上の画像は、左側がこのPost Processを適用していて、右側は適用していない場合のものを1枚の画像に繋げたものです。水面に近い1枚目では、左右で暗さにほとんど違いはありませんが、底に近い2枚目では、左の方が暗くなっています。

こうして画像で並べてみると、Post Processを適用した状態に慣れてる自分には、右の方が不自然に白んでいる様な気さえしていますが、実際にclusterで体験している時には、恐らく底に近いほど暗くなっているとは気が付かないかもしれません。
とはいえ、この暗くなる変化が大きすぎると不自然になってしまうので、大袈裟になり過ぎない様にと思いながら、設定値を調整しました。
なので、これが実際により水中にいる実感を高める効果が出ているかは分かりませんが、そういった効果を狙ってやってみたものです。

これもCreator Kitは特に使わず、水中・水上のPost Processと同様にPost-process Volumeの設定だけで出来ています。
特定の範囲内に入ったらPost Processを適用するという事だけじゃなく、特定の範囲に近くなるほどPost Processを段階的に適用される様になっています。

  • 水中・水上と同様にPost-process Volume: Is Globalをon, Box Collider: Is Triggerをonに設定
  • Box Colliderの大きさを薄い板状にして、底に配置
  • Post-process Volume: Blend Distanceを0から大きくし、この場合は3.5に設定

やっている事はほとんど変わってないですが、新たにBlend Distanceを使っています。Blend Distanceの数値を上げていくと、Box Colliderの外側にもう一つコライダーの様な緑の線が出てきます。
この外側の線が、Post Processの段階的な適用が始まる範囲になるので、In the bucketの場合は丁度水面からその範囲が始まる様に調整し、3.5となりました。

このBlend Distanceを使うと、突然にPost Processが切り替わるのではなく、段々と変化していく効果が簡単に作れます。
注意点としては、Post Processの範囲の中に入ってから段階的に適用されるのではなく、範囲の外から段階的に適用されていき、恐らく範囲内ではPost Processが設定値通りに適用されます。In the bucketの場合、深くなる途中で暗くなりきる事は無いので、Post Processの範囲となるBox Colliderは薄い板にして底にピッタリ配置し、底に着くまで段階的に暗くなる効果にしました。
また、水中には先の水中用のPost Processが既にあるので、WeightやPriorityの調整が必要かなと思ったんですが、当時やってみた限りでは、両方ともがWeight: 1, Priority: 0でうまい事ブレンド出来ました。作りたい表現によってはこの辺の調整も必要になってくるかもしれません。

In the bucket|メタバースプラットフォーム cluster(クラスター)

水中と水上、そして水中の深さの3個のPost Processで2種類の表現について紹介しましたが、画像もあるけど実際に体験してみないと良く分からない所もあると思います。よかったら実際にclusterでIn the bucketを訪れてみて、バケツの底や水面付近、水上での見え方の違いを見比べてみてください。

明日のCluster Creator Advent Calendar 2021

明日のCluster Creator Advent Calendar 2021は9日目で、Dolphiiiin∞さんの「clusterワールド作成でエラーなどで困ったときにとりあえず読む記事」です。

Notes

Discussion