【UE】地球光照模拟--太空视角

分析:

太阳光照射在地球上,光照的变化是有一定的规律的。

  • 地球自转——一天的光照
  • 地球公转——一年的光照

模型化:

为了简化整套光照系统,将地球和太阳分别用球体和定向光源模拟。所有的光照变化都可以看作是太阳围绕着地球的运动。

其中,引擎自带的球体分段数不高,比例放大容易出现棱角边缘。所以,在这里使用了另一个高分段的球体资源。

【UE】地球光照模拟--太空视角
地球:

  • 球状网格体
  • 地球表面材质
    【UE】地球光照模拟--太空视角

太阳:

  • 定向光源组件
  • 移动-自转&公转

移动:
为了模拟真实的时间光照位置,我们需要:
1、旋转定向光源的Z(Yaw)数据,直到太阳光照刚好划分东西半球,并且东半球是明亮区域。记下此时的旋转Z(Yaw)值为InitYaw,这里为110°。
【UE】地球光照模拟--太空视角
2、满足①的时候,太阳直射70°E(东五区),时间为12:00。此时,北京时间东八区(120°E),时间为15:20。

经度间隔:120°-70°=50°
时间间隔:50°×4min/°=3h20min

3、根据①和②的数据,可以得到默认情况(未修改Z(Yaw)值)时,北京时间东八区的具体时间InitTime。

时间间隔:110°*4min/°=7h20min
初始时间:15:20-7:20=8:00

4、在代码中获取当前系统时间,跟InitTime进行对比,并进行计算获得旋转分量XY_Value(地球自转分量)
【UE】地球光照模拟--太空视角
5、春分和秋分的时候,地球刚好以南北极为顶点被划分为明暗半球。旋转定向光源的Y(Pitch)值,使光照刚好以南北极为顶点划分地球,一般此处不需要调整。

6、根据赤纬角的计算公式,得到系统时间下太阳直射点的改变的朝向Z_Value(地球公转分量)

赤纬角又称太阳赤纬,是地球赤道平面与太阳和地球中心的连线之间的夹角。
当日期为1月1日时,n=1,当日期为3月22日时,n=81。
δ=23.45×sin(2×PI×(284+n)/365)

代码如下:
【UE】地球光照模拟--太空视角
7、将计算得到的值应用到太阳上

在这里要注意,游戏引擎内的变换旋转是“Roll, Pitch, Yaw”,但是在代码内FRotator是“Pitch, Yaw, Roll”。因此,要注意这里的调整。

代码如下:
【UE】地球光照模拟--太空视角

效果

SpaceSun 虚幻编辑器 2020-08-07