🎨

Resoniteのホームワールドが青いと感じる理由と対策

2024/06/03に公開

はじめに

Resoniteのデフォルトホームワールドで作業をしているとワールドが青いと感じることはありませんか?
私はResoniteをはじめた当初何人かとそういう話をしました。
そこで改めてResoniteのホームワールドが青く感じる理由と対処法を解説したいと思います。

なお調整方法だけを知りたい場合は青さを軽減する具体的な方法までスキップしてください。

なぜ対処する必要があるのか

ありません。別に見た目が綺麗なので特に対処する必要は皆無ですし、色調整しづらいと感じるならワールドを変える手もあります。
これはあくまでちょっと青がきついから軽減したいとか、ホームワールドで色調整したいけど青さが…とか、そんなニッチな理由のためです。

そもそもなぜワールド全体が青く見えるのか

環境光が青いから

なぜワールド全体が青く見えるかと言えばそれは環境光が青だからです。
環境光はアンビエントライトとも呼ばれ、世界全体を均一に照らす光です。

環境光(アンビエントライト)とは

現実世界では光源がありそこから放たれる直接光と、直接光が壁や地面に反射して他を照らす間接光というのもあります。
光は鏡や金属に反射するとイメージしがちですが実際は部屋の壁紙や床の木材でも反射します。

しかしゲームなどでは軽量化の観点から直接光は再現しても間接光の再現はしません。
間接光は光の反射の反射の反射の…とどこまでも続いていくのでゲーム中にリアルタイムに計算するのは現実的ではないからです(やってる場合もある)

けれど現実では存在する間接光を一切無視してしまうと、直接光の当たってない部分は真っ暗になってしまいます。
環境光を消してDirectionalLightだけを置くとこうなります。

光の当たらない左側の面と床の部分が完全に黒くなっています。
けれど現実では床から反射した光がそれらの部分を照らすので完全な闇になることはあり得ません。

そこで間接光の結果を疑似的に表現するのに用いられるのが環境光(アンビエントライト)です。

ResoniteではSkyboxが環境光の設定を担っている

環境光は世界全体を照らす光です。
おそらくこの空間で反射が繰り返されたら世界全体はこれくらいの光と色で照らされるだろうと仮定して使用するライトです。
ResoniteではSkyboxが環境光を決定します。
Skyboxをオンにする。すると環境光も適応されます。

直接光では照らされていなかった影の部分が照らされているのがわかると思います。

この時、空の色と環境光の色は連動しています。
空が青いのだから環境光に青が混ざるのは当然と言えます。
ただResoniteのホームワールドが青く見える原因はここにあります。

Resoniteの環境光はワールドに対して一つしか設定できない

これは環境光がSkyboxと連動しているために、基本ワールドに対して一つしか設定できません。
しかし本来環境光は反射を繰り返した結果なので屋外と屋内では全く違います。
Resoniteのホームワールドは屋内と屋外が共存しているワールドです。結果として屋外と同じ環境光を使っている屋内部分で特に青の強さを感じる場合があります。

Resoniteのホームワールドの空は実はめっちゃ青い

Skyboxの空の色が環境光に影響を与えると書きましたが、実際Resoniteのホームワールドの空がそこまで青いようには感じないかもしれません。

けれどGridワールドの空と比べてみるとその差は一目瞭然。


実はこれだけの差があります。

さらにSkyboxに使われているマテリアルを見てみましょう。
ホームワールドの空はリアルな空を再現するProceduralSkyMaterialではなく任意に色を決められるGradientSkyMaterialを使っています。
その設定を見てみると…。

かなり青いです。
ここまでの青が環境光に使われているのだから青く見えるのは当然ですね。
Gridワールドで撮った写真と見比べてみるとその差ははっきりとわかります。

どうすれば青さを抑えられるのか

ここで最初の本題に戻って青すぎてちょっと…となった場合どうすればいいのか。
答えは簡単でGradientSkyMaterialの値を調整してやればいい。
ただしそれによって空の色自体が変わってしまうのはこの仕組み上しょうがない。
更にResoniteのホームワールドは太陽の位置を移動させて時間帯を表現できる面白ギミックが入っているのでそれらの見た目にも支障をきたしてしまうので結果の良し悪しは自己判断で。

青さを軽減する具体的な方法

ホームワールドでインスペクターを開いてみよう。
空が青いのはSkyboxの影響だけどResoniteのホームワールドのSkyboxの色は太陽の位置で変化する関係からドライブされています。
なのでそのドライブをしているコンポーネントを見つけます。
それは次のスロットにあります。

Root>World Assets>Dawn Sky>Skybox Materials>Drives>Skybox Base Color Gradient Driver

Root>World Assets>Dawn Sky>Skybox Materials>Drives>Skybox Top-Down Gradient Driver
です。

これに設定されているValueGradientDriver<colorX>がそれです。
そこにある見るからに青が設定されている部分があると思います。そこを軽くグレー寄りにしてみましょう。
好みに合うように調整してもらってOKですが、一緒に空の色も変わっていくので注意です。

実際に変更するとこんな感じになります。

これはかなり極端に調整しましたが、青みがかなり軽減されました。
外を見ると空が灰色になっていますがこれはこれで世界の終末感があっていいかも。

おしまい

以上!Resoniteのホームワールドが青いと感じる理由と対策、でした。
正直あまり実用的な記事とは言えませんが、副産物として環境光の解説ができたのでよかったと思います。

Resoniteは自分好みにワールドを改変できるところが面白いところだとも思うので、せっかくホームワールドの色々なところを調整して自分好みのワールドにしてみるのも最初の一歩として面白いと思います。

余談

余談1:アンビエントオクリュージョンとは

環境光がアンビエントライトなのだとしたらアンビエントオクリュージョンとは何なのか。
名前はよく聞くしResoniteでも強さを設定できるが、いまいちピンと来ていない人も多いと思う。

先ほど書いた通りアンビエントライトは光が反射を繰り返した結果を疑似的に再現するものです。
けれどその方法はざっくりとしていて世界全体を均一の光で照らします。

ただ実際光が反射を繰り返した場合奥まった場所(例えば部屋の隅やタンスの隙間、机の下など)は反射の光が届きにくいはずです。それらの場所まで均一に明るくしてしまうのはどうしてもリアリティに欠けます。

なのでそれらの場所、つまり物体同士が近い反射の光が届きにくそうな場所のアンビエントライトの影響度を下げるのがアンビエントオクリュージョンです。
オクリュージョンの意味は遮蔽(しゃへい)です。つまり環境光が遮蔽されて届かない場所を指します。

アンビエントオクリュージョンがオンの場合

アンビエントオクリュージョンがオフの場合

見ての通り奥まった場所でははっきりとした違いがあります。
どうも好みはわかれるようですが私はある方が好きです。

余談2:プレイ中そこまでの青さを実感したことがない理由は色の恒常性かもしれない

人によっては実際にワールドにいるとそこまでの青さを感じてないことがあります。
言われてみれば青いかも。アバターのセットアップをしようとしていつもより青いことに気づいた。その程度かもしれない。

それはもしかすると色の恒常性が影響している可能性があります。(あくまで可能性)

色の恒常性とは

現実世界の空を見て見ましょう。空はかなり青いです。その光に照らされている白い壁の建物も当然青く見えるはずです。
しかし私たちはそれを白の壁だと認識できます。
これは脳に周囲の光の影響を補正して物体の色を一定に保つ仕組みがあるからです。

つまり脳が勝手に環境光が青であることを認識して白い壁を白い壁に見せているということです。
脳が物体の「本来の色」を正しく認識しようとする仕組みです。

それを『色の恒常性』と言います。

写真やモニター越しの景色ですらこの現象は起こるらしいので、VR空間ではより現実に近い補完が脳内で行われている可能性があります。

そしてこれらは当然脳内で行われていることなので個人差もあります。
自分にとっては青く感じるのに、他の人に聞いても感じない。その逆もある。意識したとたん感じるようになった。
あくまで脳の補正機能なので自分の感じている色と周りの人たちが感じている色はもしかすると違うのかもしれません。

Discussion