【CG】UE4.21で実装されたSunPositionで日当たりシミュレーションを手軽に試す【UE4】
これからUE4で建築ビジュアライゼーションをやろうかなという方には特に朗報です。UE4.21のアップデートで、太陽位置をシミュレートできる機能がデフォルトで実装されました。
既存ユーザは自前で実装していたと思いますので恩恵は少ないでしょうが、今後の新規プロジェクトから活用するのもよいのではないでしょうか。
V-Ray for Unrealの完全な互換性のために4.19で据え置いていましたが、このことを聞いてアップデートしてみました。
やってみよう
早速やってみましょう。きっと簡単なのだと思います。
1.プラグインの追加
太陽位置機能はプラグインにあります。
メインメニュの[編集]→[Plugins]を選択してプラグインウインドウを開きます。
[Misc]に[Sun Position Calculator]がありますので、チェックONにします。すると再起動を促されるので、指示通りUE4を再起動します。
2.BP_SunPositionを配置
これで下準備が整いました。
コンテンツブラウザで[プラグイン]をチェックONにします。
するとツリービューに項目がめっちゃ沢山増えますので、[Sun Position]を探します。フォルダを選択すると「BP_SunPosition」があります。これを普通のオブジェクトのように適当に置きます。
3.時刻の設定
- LOCATION
位置を指定。例えば東京駅だとだいたい以下のようになります。
Latitude = 35.68
Longitude = 139.76
Time Zone = 9
North Offset = 0補足:北の位置の指定方法はTransform – Rotationではなく[North Offset]で行います。値を変更すると画面のオブジェクトもくるくる回転します。
- DATE
日付。 - TIME
時間。
配置したあところです。もう見たまんまです。超わかりやすいです。
実用編:日当たりシミュレーションを実装する
さてさて大体の方がすぐ試してみたくなるのが日当たりのシミュレーションでしょう。これも簡単です。やってみましょう。
あらかじめDirectional Lightは可動性=ムーバブルにしておいてください。
ブループリントを開きます。
アウトライナから[BP_SunPosition]をブループリントウインドウにドラッグします。
あとは以下のようにしてみてください。仕掛けは簡単で、
- 処理が来たら、今のSecondsをgetして、Secondsに1を足す。
もしSecondsが60になったら、Secondsを0にリセットして、続けてMinutesの処理をする。 - 今のMinutesをgetして、Minutesに1を足す。
Minutesが60になったら、Minutesを0にリセットして、続けてHoursの処理をする。 - 今のHoursをgetして、Hoursに1を足す。
Hoursが24になったら、Hoursを0にリセットする。
実はこれだけでは太陽位置が更新されません。BP_SunPositionからノードを伸ばして、UpdateSunというノードを呼び出し、接続します。
これで全部終わり。
完成
早速PLAYしてみましょう。以下は6月(夏至)、9月(秋)、12月(冬至)の3つで流した例です。動画の6:03からです。
Unreal Engine 4サンプルプロジェクト
サンプルプロジェクトをGithubに公開しておりますのでご利用ください。プロジェクトのUE4バージョンは4.24です。
SunPositionExample2 by christinayan01 – GitHub
購入による支払ができません、何か方法ありますか。PayPal決済はできないのですか?はじかれます
nomu様 コメントありがとうございます。せっかくお支払いいただけるとのことで大変うれしく思いますが、動作せずで申し訳ございません。
再度動作確認致します、Paypal公式で生成されたAPIを持ってきているのですが、なにか手順不足があるのかもしれません。
Paypay動作しない現象につきまして、原因を特定し、修正を完了いたしましたのでご報告いたします。
【原因】テスト用キーのままでPaypalAPIを公開しておりました。
【対策】本番用キーを実装しました。
この度はご報告ありがとうございました。お時間経過してしまいましたが、もしお気がかわっておりませんでしたらご支援(購入)のほどよろしくお願いいたします。
購入と言うことは何かがダウンロードできるってことですか?それとも支援のみの購入ですか?気になっていましたのでお聞きします。実はBPの勉強を独学でやってましてこのようなサンプル見本が欲しいので。
nomuさん
サンプルプロジェクトをGithubに公開しておりますのでご利用ください。プロジェクトはもちろん無料です。
プロジェクトのUE4バージョンは4.24です。
https://github.com/christinayan01/demo/tree/master/SunPositionExample2
なお本サイトに有料コンテンツはありませんので、すべて「ご購入=ご支援」となります。
またPaypalご支援の表示はタイトルが「【DL】~」で始まる記事のみを意図していたのですが、「【CG】~」にも表示されてしまうようなので、修正いたします。
こんにちは。
日の出・日の入(時季ブレが難しいなら指定時刻?)に合わせて夜空に切り替えるのは難しいのでしょうか?
地平線?が明るいのが気になるので解説いただけると助かります。
hanaさんこんにちは、コメントありがとうございます。
ご質問の件ですが、分かる範囲でご回答させていただきます。
1.日の出入に合わせて切り替え
ブループリントで気軽に実装できまして、太陽が地平線より下にあることを判定する方法は2つあります。
・BP_Sky_SphereのSun Heightがマイナス値。
・Directional LightのRotationYがプラス値。
このとき、Directional LightをIntensity=0にします。Sky Lightもあれば、こちらもIntensity=0にします。
その他の全体に及ぼす光源類があれば、全部OFFしちゃうのが安全です。
2.地平線が明るい
すみません、私も地平線を狙い撃ちで明るさ調整する方法がわからないでおります。
ただし代わりの方法として以下の方法を使っていますのでご紹介いたします。
・夜になったら、Post Processing VolumeのLensの[Exposure]をそれらしい値にブループリントで変更します。
・夜間のときに、具体的にどのくらいの明るさに調整したいか決まっている場合は、夜になったらPost Processing Volumeの[Exposure]をOFFにして、[Camera]の[ISO]あたりで調整してしまうのが手軽です。
で、各設定値は内部変数で記憶しておいて、日の入になったらブループリントで値をもとに戻します。
これらの方法で解決できますと幸いです。
christinayan.
回答ありがとうございます!
試してみます!
ちなみに、地平線が明るいと思っていたのはExponential Height Fogでした笑
上手くいきますように。 :)
ちなみに私のプロジェクトも確認したらHeight FogのIntensity(一番上のパラメータ)を0にしていました笑 これも明るさに結構効いてくるんですね!
サンプルプロジェクトをGithubに公開されているものをどのようにすればダウンロードできますでしょうか?
ダウンロードボタンが見当たりませんでした。
参考にさせていただきたいので、プロジェクトの中をUnrealEngineで見ることができればと思っています。
ひとつ上の階層でダウンロード頂くことになります。ちょっと余計なサンプルもダウンロードになってしまいます。
https://github.com/christinayan01/demo
不便ですので階層の見直しを行おうと思います。