場合によっては、空の太陽の位置によって景観が損なわれますが、デザイン上の重要な要素です。
とりわけ大規模なアーキテクチャの建設プロジェクトや、日光と影のリアルなパターンを描く真に迫るレンダリングを生成する必要がある場合には常に重要です。
このような場合、実際の地球上の太陽の位置を決定するのと同じ数式にしたがい、Unreal Engine のレベルの正確な場所に太陽を設置する必要があります。これらの複雑な方程式は、見る側の地理的な位置、日付、時刻など多くの設定が組み込まれます。
Unreal Engine では Sun Position Calculator プラグインでこれらの数式を解きます。緯度、経度、基本方位、日付、および時刻を定義してください。すると、Sun Position Calculator が Unreal Engine のデフォルトの天球と連携して天球に太陽面を置き、レベルでメインのディレクショナル ライトの方向を正しい方向に向けます。
使用を開始する
前提条件:このサン ポジショナーは、Unreal Editor に作成したほとんどの新規レベルで既にセットアップされている デフォルトの BP_SkySphere と連携して実行されます。レベルに BP_SkySphere インスタンスが存在することを確認してください。
使用方法
-
メインメニュー から [Edit > Plugins] を選択します。
-
[Misc (その他)] カテゴリにある Sun Position Calculator プラグインの [Enabled (有効)] チェックボックスをオンにします。
- [Restart Now (すぐに再起動)] をクリックして変更を適用して Unreal Editor を再度開きます。
-
コンテンツ ブラウザ で Settings を開き、Show Engine Content と Show Plugin Content を両方とも有効にします。
-
「SunPosition コンテンツ」フォルダの BP_SunPosition アセットをビューポートにドラッグします。
コンパスの基本方位のようなギズモで表されます。(Unreal Editor でプロジェクトを実行していないときはこのギズモのみ表示されます)
-
ビューポート のギズモまたは、 ワールド アウトライナ の BP_SunPosition アクタを選択します。
-
[Details (詳細)] パネルで、太陽の配置を決定するシーンのプロパティを設定します。
設定 説明 Latitude 赤道の南の座標に負の値、赤道の北の座標に正の値を使用します。 Longitude 子午線の西の座標に負の値、子午線の東の座標に正の値を使用します。 Time Zone サイトと協定世界時 (UCT) またはグリニッジ標準時 (GMT) とシーンとの時差を時間数で設定します。 North Offset レベルのオブジェクトとコンパスの基本方位間の関係性を制御します。この制御の変更すると、レベルの BP_SunPosition ギズモの視覚的位置も回転します。レベルのオブジェクトに対して、ギズモの示している基本方位が正しい方向を指すように値を調節してください。
レベルのビューポートの回転ツールを使用してギズモ自体を回転させないでください。North Offset の設定は、基本方位を制御する目的のみに使用してください。
Date and Time シミュレーションしたい年月日と時刻を設定します。
これらのプロパティの値を変更すると、Unreal Editor で太陽が空を移動して影が変化します。
実行時の設定変更
BP_SunPosition アクタの設定を実行時に変更することができます。これにより、UI ウィジェットやその他ゲームプレイ イベントに応じて太陽の位置と光の角度を変化させることができます。
-
実行時の太陽光の角度を変化させるためには、レベルの Directional Light を [ムーバブル] にします。[アウトライナ] またはレベルのビューポートで Directional Light を選択して、[Details (詳細)] パネルの [Mobility (可動性)] の設定を [Movable (ムーバブル)] に設定します。
-
実行時にブループリント スクリプトで値を変更するには、レベルに存在する BP_SunPosition アクタへのオブジェクト参照が必要です。以下のように Get All Actors of Class ノードを使用するとこの参照を動的に取得することができます。
Get All Actors of Class は負荷が高いので、値を取得したりセットする必要がある度に実行するのではなく、一度実行したときに (たとえばレベルがロードされたときやウィジェットが構築されたときに) その結果を変数に保存しておくのがベストです。
-
オブジェクト参照を取得したら、その出力ポートから右にドラッグして [Variables (変数)] カテゴリを展開し、Unreal Editor の [Details (詳細)] パネルで提供されている値の取得やセットが可能な Get および Set ノードのリストを探します。
-
これら新規の値を必要に応じてセットします。完了したら、 BP_SunPosition 変数の出力ポートからドラッグして Update Sun ノードを呼び出します。
たとえば、次のような Widget ブループリントからのスニペットは、6:00am ~ 10:00pmまでの任意の時間の値に変更する UI のスライダーを設置します。
実行中のスライダーは次のようになります。