!AmateurLab Aug/11/2025 00:23

【Unity個人ゲーム制作】ライティングにおけるベイクとは?

ライティングについて少しわかったこと

前回の課題は
・部屋の明かりが隣の部屋まで漏れてしまう。
・明かりの届く範囲を狭めれば、隣の部屋まで明かりは漏れなくなるが、明かりが届いてほしいところには届かなくなる。

こちらについて解決するためにライティングについて学ぼうと思いました。

ベイクを行うと不安定な影による問題を解決できるとの事前情報をもとに調べてみました。

結果、ベイクとは何だったのか。
それは光と影を事前に計算しておいて予め結果をオブジェクトのテクスチャに書き込んでおくということでした。

詳しく説明するととんでもなく長い記事になってしまうので、超簡単に説明すると…

ライトから発せられる光は主に2種類あります。

・ライトからの「直射光」
・直射光がオブジェクトに反射した「間接光」

こちらがオブジェクトに影をもたらすわけです。

この光の角度や位置とオブジェクトの位置や形状を計算して影というのができますが、これらの計算はとても処理コストが高いものとなっています。

ベイクは反射した間接光と影をあらかじめ計算しておいて、テクスチャに書き込んでおこう的なノリです。(多分ね)

ベイクを行うメリット

ゲーム中に間接光と影の計算を行う必要がなくなるので、処理が軽くなります。
またリアルタイムに計算するよりも影のクオリティが良くなります。
リアルタイムによる計算は以外とアバウトな部分が多いらしく、光の漏れや不自然な影ができやすいらしいです。



明かりの状況が変わるならベイクは向かない…?

事前に計算しておく、つまりゲーム中にその計算したときと状況が変わってしまう場合、おかしなことになるのは想像できるでしょうか。
私のゲームの場合、部屋の明かりは好きなときにON/OFF切り替えられるようになっています。
部屋の明かりがついているときにライティング情報をベイクしていたとします。
電気をOFFにすると当然部屋の電気は消えますが、事前に計算していたライティング情報はそのままオブジェクトのテクスチャに残っています。
つまり、電気を消しているのに影や間接光ができてしまうというわけです。

ベイクライティングが向いている状況

私のゲームで言えば、窓の外から見える景色がまさに向いていると言えるでしょう。
プレイヤーが干渉することはできないので、常に状況は変わりません。
昼と夜という概念はおそらく作ると思いますが、太陽の光源と月の光源の位置を同じにしてしまえば、できる影の方向も同じはずです。
このような静的なものについてはベイクが向いているのではないでしょうか。


で、前回の課題をどう解決するか

上記の理由から部屋の中のライトはリアルタイムで描画しなくてはなりません。
ベイクによって不安定な影の問題を解決できると思っていただけに、焦りを感じていました。

しかし意外なところに原因がありました。


そもそも部屋の明かりが隣の部屋に漏れてしまう原因は影の濃さの問題でした。
画像は影の濃さが最大になっており、きちんと光がきちんと遮られているように見えます。
前回の記事の設定では、この影の濃さが半分に設定されており、影が薄い=光が漏れているように見えていたということですね。

なので、光の届く範囲を(廊下まで)大きくしたうえで影の濃さを最大にしました。
そうすることによって隣の部屋に明かりの影響がでないようになりました。

が、別の問題が発生します。


影を強くすることによって部屋の中が不自然な状況になってしまいました。
影が強すぎると思いませんか?
現実的に考えるならテーブルの下などはちょっと暗くなる程度のはずです。

光というのは様々なものに反射して入り乱れています。
先ほど話した間接光によってテーブルの下にも光は差し込み、ここまで暗くなることはありません。
あなたの家のテーブルの下は何も見えなくなるほど真っ暗ではないですよね?


この問題を解決すべく、部屋のライトとは別に補助ライトを作成しました。
このライトは部屋をほんのり明るくするのと、影を生成しないという機能を持っています。
よってオブジェクトを貫通する光となっており、設定された範囲を照らす明かりとなっています。
こうすることによって、部屋のライトが生成した濃い影を補助ライトが照らしてくれて薄い影になるという寸法です。
ちょっと力技だったかもしれない。

出来上がったのがこちら。
テーブルの下も暗すぎない。
廊下に光が届いており、扉を閉めるとちゃんと暗い状態。
バスルームも隣の部屋の明かりが届いていない状態。

たったこれだけに2日もかけてしまったが、ライティングについて勉強できたので良しとしたい。

If you liked this article, support the creator with a tip!

Sending tips requires user registration.Find details about tips here.

Search by Article Tags

Monthly Archive

Search by Exclusive Perks

Search Articles