【Unity】なめらかに昼と夜が切り替わるシーンを作ってみた!

ハロー!新入社員のタケです!

今日も引き続き前回の住宅街シーンを作っていきます。
前回はベイクまでしちゃいましたが、やっぱり昼と夜を動的に変えていきたいのでがんばって設定をしてみました。


とりあえずベイクしたままのデータで朝にしてみるとライトの光が地面に残ったままで不自然になってしまいました。
なので一旦リアルタイムのライトでライティングします。


ここで昼と夜のサイクルシステムを作ってみます。
空はデフォルトの空にして、スクリプトはあまり使いたくないので太陽の角度、強さ、色などはTimelineで制御します。


実はデフォルトの空はプロシージャルスカイボックスと呼ばれるシステムが採用されており、太陽の向きに応じて空の色が変わるようになっています。
これを使うことで比較的簡単に昼夜を表現することができます。


街灯などのライトもTimelineで朝には消灯し、夜になったら点灯するようにします。



ここからが問題です。
住宅の窓の光も同じように消灯したり点灯したりしたいのですが、アニメーションで制御しようと思っても選択した部分の窓しかアニメーションしてくれません。

マテリアルごとにまとめて色を変えたりできるようになればすごい楽なので…ここはさすがにスクリプトを作ってみることにしました。


私は高校の時にプログラミングを学んでいたのですが、あんまり使わないせいでほとんど忘れていってしまいました…
Unityのプログラミングとはかなり久しぶりに向き合っていきます。なんだか懐かしい気持ちでしたね。

まずはネットで二つのマテリアル変更スクリプトを見つけました。
マテリアルのシェーダーの値を直接いじるスクリプトとスライダーで二つの色の間を自由に設定できるスクリプトです。

これらのスクリプトをどうにかこうにか理解しながらくっつけたら・・・できました!


突然スクリプトを見せられてもわからないと思うのでInspectorでの画面を見てみましょう。
使い方は簡単です。


変更したいマテリアルをMaterialの欄に入れて、Start~に最初の色を入れます。
End~には後から変更したい色を入れます。

ColorChangeのスライダーを0から1にするとなめらかに色が変わっていきます!
ここはTimelineで制御できるようにしたので、ちゃんと昼夜で色が変わるようにすると完成です!







スクリプトを書くのは大変でしたが、これを作ることでこれから同じような作業が発生しそうになった時に使えると思うので作っておいてよかったです!

今日の成果物!

動画のナレーション
制作時間:1時間15分

シームレスな昼夜のシーン
制作時間:5時間30分

--------------------------------------------------------------------------------

シェルパでは、3DCGや建築パースはもちろん
VRやARアプリの開発も行っています!
新しいことに興味のある方はきっと楽しめると思います!
新人研修も充実していて初心者でも3DCG経験者でも安心!

株式会社シェルパ
【福岡本社】
〒810-0042 福岡県福岡市中央区赤坂1丁目13-10赤坂有楽ビル7F 
【東京オフィス】
 〒101-0041 東京都千代田区神田須田町2丁目13-1YKS黒田ビル5F
TEL 092-717-6800 / FAX 092-717-6801

--------------------------------------------------------------------------------

コメント