場合によっては、空の太陽の位置によって景観が損なわれますが、これはデザイン上の重要な要素です。
大規模なアーキテクチャの建設プロジェクトや、日光と影のリアルなパターンを描く真に迫るレンダリングを生成する必要がある場合には、とりわけ重要となるケースが多くあります。
このような場合、実際の地球上の太陽の位置を決定するのと同じ数式にしたがい、Unreal Engine のレベルの正確な場所に太陽を設置する必要があります。これら複雑な計算は、見る側の地理的な位置、日付、時刻など多くの設定が関わります。
Unreal Engine では Sun Position Calculator プラグインでこれらの計算を行います。緯度、経度、基本方位、日付、および時刻を定義すると、Sun Position Calculator が Unreal Engine のデフォルトの天球と連携して、天球に太陽面を置き、レベルでメインの指向性ライトを正しい方向に向けます。すると、Sun Position Calculator が Unreal Engine のデフォルトの天球と連携して天球に太陽面を置き、レベルでメインのディレクショナル ライトの方向を正しい方向に向けます。
はじめに
前提条件:Sun Positioner は、Unreal Editor に作成したほとんどの新規レベルですでにセットアップされているデフォルトの「BP_SkySphere」と連携して実行されます。レベルに「BP_SkySphere」インスタンスが存在することを確認してください。
作成方法
メイン メニュー から、[Edit (編集)] > [Plugins (プラグイン)] を選択します。
[Misc (その他)] カテゴリにある [Sun Position Calculator (太陽位置の計算機能)] プラグインの [Enabled (有効)] チェックボックスをオンにします。
[(w:700)](01-sun-position-enable-plugin.png)クリックしてフルサイズで表示。
[Restart Now (すぐに再起動)] をクリックして変更を適用して Unreal Editor を再度開きます。
[(w:700)](02-sun-position-rerun-editor.png)クリックしてフルサイズで表示。
コンテンツ ブラウザ に移動し、[Settings (設定)] を開き、[Show Engine Content (エンジンのコンテンツを表示)] と [Show Plugin Content (プラグイン コンテンツを表示)] の両方を有効にします。
「SunPosition Content」フォルダで「BP_SunPosition」アセットを見つけて、ビューポート にドラッグします。
コンパスの基本方位のようなギズモで表されます。(Unreal Editor でプロジェクトを実行していないときはこのギズモのみ表示されます)
コンパスの基本方位のようなギズモで表されます (Unreal Editor でプロジェクトを実行していないときはこのギズモのみ表示されます)。
[(w:700)](05-sun-position-actor-in-outliner.png)クリックしてフルサイズで表示。
[Details (詳細)] パネルで、太陽の配置を決定するシーンのプロパティを設定します。
設定
説明
Latitude (緯度)
赤道の南の座標に負の値、赤道の北の座標に正の値を使用します。
Longitude (経度
子午線の西の座標に負の値、子午線の東の座標に正の値を使用します。
TimeZone (時間帯)
サイトと協定世界時 (UCT) またはグリニッジ標準時 (GMT) とシーンとの時差を時間数で設定します。
North Offset (北方向のオフセット)
レベルのオブジェクトとコンパスの基本方位間の関係性を制御します。この制御の変更すると、レベルの「BP_SunPosition 」ギズモの視覚的位置も回転します。レベルのオブジェクトに対して、ギズモの示している基本方位が正しい方向を指すように値を調節してください。
レベルのビューポートの回転ツールを使用してギズモ自体を回転させないでください。North Offset の設定は、基本方位の制御のみに使用してください。
Date (日付) と Time (時間)
シミュレーションしたい年月日と時刻を設定します。
これらのプロパティの値を変更すると、Unreal Editor で太陽が空を移動して影が変化します。
実行時に設定を変更する
「BP_SunPosition」アクタの設定を実行時に変更することができます。これにより、UI ウィジェットやその他ゲームプレイ イベントに応じて太陽の位置と光の角度を変化させることができます。
実行時の太陽光の角度を変化させるためには、レベルの指向性ライトを [Movable (可動)] にします。[Outliner (アウトライナー)] または レベル ビューポート で指向性ライトを選択して、[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 のスライダーを設置します。
クリックしてフルサイズで表示。
実行中のスライダーは次のようになります。