この記事ではclusterクリエイター・美坂さんがUnityの機能「Reflection Probe」について解説。映り込み表現をつくることでワールドの見た目がグッと良くなります。設定は難しくないのでぜひ覚えて使ってみてください!
皆様こんにちは、美坂と申します。この記事ではUnityの「リフレクションマッピング」および「Reflection Probe」機能による映り込み表現の設定方法について説明します。
リフレクションマッピングとは
物体の映り込み表現は、clusterなどのCGで構成される世界ではとても重要な要素です。

金属・ガラスなどで映り込み表現があると、材質のリアルさが一気に増します。
反射により表面の情報量が増え、とても”映える”ビジュアルを作ることができます。
しかし映り込み表現はまともにやると負荷の高い処理です。リアルタイム処理には高いスペックの機器が必要となってしまいます。
そこでUnityでは処理を簡略化し、負荷を抑えた「リフレクションマッピング」という手法が用意されています。
リフレクションマッピングは事前に「Cubemap」と呼ばれる周囲360度の様子を写した画像を用意し、それを物体表面に貼り付けることで映り込みを表現する手法です。
正確ではない擬似的な処理ですが、軽い処理で映り込みをそれっぽく表現することができます。
そして「Reflection Probe」は、このリフレクションマッピングで使用する「Cubemap」を作成する機能となります。
基本的にUnityでは「Reflection Probe」がシーン内に設置されていないと周囲の映り込み表現は行われません。光沢のあるオブジェクトを配置するなら是非設置したいところです。
なおこの設置と設定は、実は手順がわかっていればそれほど難しいものではありません。
今回の記事を参考に積極的に使っていきましょう!
映り込み表現の実例
こちらは私、美坂が制作したワールドでのReflection Probeによる映り込み表現の例です。

こちらのストーブとやかん部分、テカテカです。強く周囲が映り込んでいます。
映り込みがあることで金属など光沢のあるオブジェクトの見栄えがグッと良くなります。

こちらのワールドでは床にうっすらと照明が映り込んでいます。やや控えめな設定。
静止画だと判りづらいですが、実際のワールドで移動しながら見るとわかりやすいかもしれません。
こういう磨かれた床に天井の照明が映り込んでいるみたいな表現、個人的に好きで多用しています。

こちらは同ワールド内、とあるイベントの展示ブース。瓶や金属の表現などに使用されています。ガラスや金属の表現では映り込みは欠かせない要素です。
マテリアルの設定
早速設定していってみましょう。
まず下準備として映り込みを表現するマテリアルを用意します。
メニュー
「Assets > Create > Material」からマテリアルを作成して下さい。

名前は適当に「reflection」としてみました。
Shaderは「Standard Shader」です。
映り込みがわかりやすいように色(Albedo)は黒。
Smoothnessの値は「1」に設定します。Smoothness値が大きいほど映り込みは強くなります。
オブジェクトの設定
説明用のサンプルとして平面と球、立方体などを適当に配置してみます。

とりあえず配置の完成イメージはこんな感じ。今回は中心の球に周囲のオブジェクトを写り込ませる設定で行ってみます。
ではオブジェクトを置いていきます!
まず写り込ませる物体の配置・設定です。
メニュー
「GameObject > 3D Object > Plane」と
「GameObject > 3D Object > Cube」より
平面(Plane)・立方体(Cube)を生成して適当に置いていきます。

PlaneとCube4つ置いてみました。

配置したPlaneとCube全ての「Static」をチェックします。
Reflection Probeは「StaticなオブジェクトのみがCubemapに映る」という仕様となっています。正確にはStaticの中の「Reflection Probe Static」が有効になっているオブジェクトが映る仕様です。
慣れないうちは単純に右上の「Static」のチェックだけでOKです!
次にメニュー
「GameObject > 3D Object > Sphere」で球(Sphere)を配置します。

これは映り込みのある物体としてみましょう。

マテリアルに先程作成した映り込みありのもの、「reflection」を設定。
マテリアルの設定の仕方がわからないよ!という方はこちらの記事がおすすめです。

一通りオブジェクトを配置しました。まだ球は映り込み無し、ほぼ真っ黒です。
Reflection Probeの設定
続いてメニュー
「GameObject > Light > Reflection Probe」からReflection Probeを配置します。

各項目は以下のように設定して下さい。
位置の指定 (Transform)
「この座標から見た」周囲360度の風景がCubemapとして生成されます。
基本的に「プレイヤーがよく通る位置」や「部屋の中心付近」などに設置するのが良いかと思います。他のオブジェクトと重なっていない場所に配置しましょう。
座標の高さはプレイヤーの視点の高さに合わせると違和感が少なくなります。
床面から1.5m程度の高さがオススメですが、VR世界の皆さんは何故か身長が低めなのでもっと低くてもいいかもしれません。
Box Projection
リフレクションマッピングでは「Reflection Probeの座標から見た映像」を映り込ませるので、座標と視点が離れると映り込みに違和感が生じてきます。
この項目をチェックすることでこのズレを自動補正し、ある程度違和感を軽減させることができます。室内など狭めの空間で効果的です。
チェックした場合は下の「Box Size / Box Offset)」項目の範囲を室内の大きさなど合わせると良い感じに補正されます。
範囲の指定 (Box Size / Box Offset)
このReflection Probeの影響を受けるオブジェクトの範囲を指定します。
※Cubemapに映り込む範囲ではありません。
Bake

項目の設定が終わったら一番下の「Bake」ボタンを押して下さい。
Cubemapの画像が生成されます。
※この例のような単純なシーンではほぼ一瞬で生成されますが、複雑なシーンでは数十分以上かかる場合もあります。
はい、以上で設定終了です。

球オブジェクトに周囲のオブジェクトが映り込んでいます。やりました!
まとめ
ここまでのReflection Probe設定を簡潔に3行でまとめます!
- 映り込みオブジェクトのマテリアルはSmoothness値を上げる
- 映り込ませるオブジェクトのStaticをチェック
- Reflection Probe置いてBakeする
基本的に設定はこれだけです。これで映り込みが有効になります!
Reflection Probeを配置して設定することで、一段グレードアップした画を割と少ない手間で得ることができます。
皆さんも是非Reflection Probeを使いこなして、“映える”ビジュアルのワールドを作っていきましょう!