どうも!新入社員のタケです!
今日はBakeryというUnityのアセットを使ってライトマップのベイクをもっときれいに速くやってみたいと思います!
このアセットを使えばGPUを使ってライトマップをベイクすることができます。
Unityは標準ではCPUでしかライトマップをベイクすることができません。
GPUの力を借りることでより早く、綺麗になるということですね。
Bakery - GPU Lightmapper
https://assetstore.unity.com/packages/tools/level-design/bakery-gpu-lightmapper-122218
さっそくやっていきましょう!
まずは適当にこんなオブジェクトを作ってみました。
何もライトをベイクしていないので影の部分が真っ暗になっています。
Bakeryでは完全に従来のライトマップのベイク機能を使うことなく完結するそうなので、このまま進めてみましょう。
次にDirectional LightにBakery Directional Lightというスクリプトを付けます。
Bakeryで行うベイクはそれぞれのライト専用のスクリプトを付ける必要があるそうです。
するとなんか一気に明るくなりました!
いったんIntensityを下げています。
どうやらDirectional Light本体との情報を共有できる機能が備わっているようなので、これで調節していきます。
次に環境光を付けたいので適当に作ったオブジェクトにSkyLightスクリプトを付けます。
これでGIがついてくれます!
まあとりあえず物は試しだ!なにも考えずベイクベイク!
Bakeryウィンドウを開いたらRenderボタンを押します。ベイク開始!
できました!
当然といえば当然ですがめっちゃ綺麗になりましたね…
ベイク時間も驚異の30秒!普通にやれば2分くらいかかりそうなグラフィック設定なのに…
めちゃめちゃ速い!
次は車を置いてみたのですが、影が落ちてくれません。
これはDirectional Light自体の影が完全にベイクされてしまっているからですね。
リアルタイムのライトも付けたいのでShadowMaskという機能を使います
これを使うとリアルタイムで落ちる影とベイクした影が全く同じ色になり、良い感じになじんでくれます。
ShadowMaskの設定を適用してベイクすると…
太陽の影がちゃんとベイクされて車の影が落ち、それらが重なっても色が変わらないようになりました!
…
他にもいろいろ設定があったのですが、ちょっと紹介しきれないくらい奥が深いですね…
ちゃんとベイクしようと思ったらもっといい設定があると思います!
コメント
コメントを投稿