用户之间昼夜的变化通常会增加。 而且,如果太阳运动本身的组织非常简单,那么要实现或多或少的逼真的工作,例如SkySphere,就已经困难得多。 |
在本文中,我不打算展示各种方法来随着季节和进动而改变DirectionalLight的方向 。 我认为,关于这个问题,有足够的材料。 有人通过Blueprint做到了这一点,但我使用的是C ++ ,因此时钟在服务器上滴答作响,并定期(每隔几秒钟一次)同步客户端的时钟。 同时,服务器上没有移动。 在天空中移动太阳不是一件难事。
接下来,我将讨论出现的问题,并展示我升级标准BP_Sky_Sphere的版本以使其能够在每日周期中正常工作。
进行修改之前,将EngineSky文件夹的全部内容复制到您的目录中将非常有用,以免破坏标准的Blueprint及其连接的资源。
首先,我想谈谈标准领域的错误(或功能)。 球体上附加的StaticMesh的比例为400。如果将其更改为1,似乎什么都不会改变,但是如果稍稍前行,您会感觉就像在电影“杜鲁门表演”中一样。 是的,这个领域虽然巨大,但有自己的边界。 对于开放世界来说,这是一个明显的问题,通过使球体随玩家移动,很容易解决。
当然,作为替代方案,您可以扩大范围,但是我对这种想法印象不深。
下一项设置正常的夜晚。 我非常不喜欢星星只出现在午夜,而其余时间则只出现在夜晚-这是一个漫长的夜晚。
也可以通过调整现有曲线并添加新曲线来解决。
下一个问题是DirectionalLight和SkyLight的光衰减。 足以奇怪地观察到,在晚上看不到比白天更糟。 通过添加和调整曲线也可以非常简单地解决它。
好吧,要甜点...星星不动! 如果夜晚漫长而恐怖 ,那么玩家可能不会注意到它。 但是,我们是否需要认真对待?
首先,我通过向材质添加额外的变量来使星星的纹理移动。
只要太阳沿着赤道平面移动,一切都是有序的。 但是,当模拟高纬度时,数学上的困难开始了,并且纹理不愿按照我们的意愿旋转。 但是,我们是否需要认真对待? :)
结果,他决定制作两个天球。 一个带有云,太阳和天空,另一个带有更大的恒星。 BP_Sky_Sphere还连接了另一个球体,并礼貌地要求她随太阳旋转...
而最有趣的部分! 使较小的天球部分透明。 仅仅将材料的逻辑与不透明度联系起来 ,我当然会得到奇妙的恒星穿过黑色的夜云。 因此,我再次不得不用文件修改材质,实际上是绘制两个天空。 一个带有黑色夜云的视觉效果。 第二,为了不透明度 ,总是有白雪皑皑的云。 另外,他在白天添加了很多白色,实际上使天空变得不透明,因此半透明的蓝色不会吓坏其深度。
现在一切都按创建者的意图运行,在这种情况下-由我运行。 仍然仅需微调控制曲线,但总体上看起来还不错。
如果您有关于如何简化此操作的想法,请分享。 我将不胜感激。