UE4昼夜交替的简单实现(蓝图)

  • 组件介绍
    • DirectionalLight(定向光)
    • Sky_Sphere(天空球)
  • 昼夜实现
    • 调整DirectionalLight(Light Source)
    • 蓝图设计
  • 一些不足

最近在学习ue4引擎,有要求做一个天气系统。于是上网查询了一下资料,先做了个简单的昼夜交替的实现。只是简单实现,如果要细化这个部分还有许多要更改的,废话不多说,先做。

组件介绍

要完成这个功能之前首先介绍一下需要用到的组件以及他们的一些参数。因为笔者也是刚开始接触ue4,可能有些地方会写地有点繁琐,因为是第一次接触,有可能有写的不对的地方,望指正。

DirectionalLight(定向光)

DirectionalLight可以看做是模拟太阳发出的光源,这个光源所发出的光都是相互平行的。
平行光不像是SpotLight以及PointLight那样距离物体越远,光的强度就不一样,而DirectionalLight所散发出来的光,所照射的整个区域范围内光强是一样。换句话说,不管怎么拉动平行光的位置,他的光照效果都不会发生改变。

Sky_Sphere(天空球)

进去后每个场景世界大纲里都会有一个默认存在的Sky Sphere,删掉了可以在左侧Modes搜索到BP_Sky_Sphere。

本次用到的参数有下面一些,介绍一下:

  • Refresh Material(刷新材质):虽然是个Bool类型参数,但其实相当于一个按钮的功能。当你在游戏未开始时,调整SkySphere绑定的Directional Light Actor的旋转,需要点一下这个按钮才能更新太阳的位置和天空的颜色。
  • Directional Light Actor(定向光源):绑定的定向光源(就是上面介绍的DirecionalLight,在这里需要被绑定)。太阳会根据这个Light来调整高度。如果不绑定,就可以通过OverrideSettings里的SunHeight自由更改高度。
  • Colors Determined By Sun Position(由太阳的位置决定颜色):如果勾选,则会根据太阳的位置自动计算天空的颜色。如果不勾选,则应用OverrideSettings里的设置。
  • Horizon Falloff(地平线衰减):值越高地平线越清晰。
  • Sun Brightness(太阳亮度):这个就是调整太阳的自发光亮度,跟定向光源的亮度没有关系。
  • 剩下的就是Cloud Speed(云移动的速度),Cloud Opacity(不透明度),Stars Brightness(星星亮度),这三个参数主要用来调整星星的显示效果。

昼夜实现

下面就是正式的蓝图实现了。

调整DirectionalLight(Light Source)


笔者在一开始尝试的时候,发现如果DiretionalLight的Rotation为默认值的话,在最后完成太阳旋转移动的时候,最晚的天空只能是黄昏,而不是漫天繁星,所以在一开始就应该把定向光的Rotation设置为(0,90,0)。

并且,我们是后面是需要实时移动光源的,所以将Mobility设置为Movable(可移动的)。
然后回到天空球的属性面板,点击一下Refresh Material(刷新材质)。目前的效果如下图所示:

蓝图设计

打开Level Blueprint(关卡蓝图),右键创建一个Tick的事件,选择下图的第一个。

回到场景主页面,选中Light Source物体,再回到蓝图中右键,创建Light Source的引用。

接着从light source拉出一个选框,搜索addactorworldrotation,进行添加
然后将这些连接起来:

为了方便调整参数,应该将Delta Rotation这个值细化调整,speed参数是自行添加的变量,因为我们只想要昼夜交替的效果,所以简单一点的办法就是让太阳旋转,所以只需要更改y这个值,speed值设置为0.5:


因为太阳的高度是根据定向光源的旋转而变化的,而天空的颜色是根据太阳的位置变化的,所以我们只需要改变定向光源的旋转然后用SkySphere自带的刷新函数UpdateSunDirection就可以了。
于是会场景主页面选中sky_sphere回到蓝图中创建它的引用,在创建他的事件UpdateSunDirection:

所以完整蓝图为:

到此,运行项目即可执行昼夜交替。

一些不足

目前这个功能缺点还有很多,因为刚接触还不熟悉。
因为笔者参加的还是团队工作,所以需要把这个功能放到有水体的场景中。然后就出现了一下一些问题:

  • 光照在水面上时,水面不能呈现出自然的颜色。
  • 并且当太阳移动到水面下的时候,因为一些原因(这里暂且不知道,但是猜测是因为太阳光在水面下也能发出光照),所以水面不管是昼夜都呈现出很透亮的状态,几乎没有变化。这是一个很头疼的点,目前还不知道怎么修正这个点。

希望继续学习之后,能修正这些bug。

UE4昼夜交替的简单实现相关推荐

  1. 【学习记录】UE4 蓝图实现昼夜交替和简单的雨水效果

    昼夜效果的核心在于: -令太阳在y轴方向上匀速旋转 -大气和光照形成的明暗效果 首先在关卡蓝图中用Timeline→SetActorRotation使日光和月光在Y方向上旋转起来 一天可以被分为-清晨 ...

  2. UE4中Ultra Dynamic Sky插件蓝图实现昼夜交替

    Ultra Dynamic Sky插件蓝图实现昼夜交替 **蓝图** 前要 其他 蓝图 生成两个自定义事件.利用flip flop交替激活. 调用时间轴,定义一个时间轨道,控制天空球中 Time Of ...

  3. UE4 ——蓝图控制昼夜交替(移动方向光和太阳光的位置)(学习笔记)

    首先要知道太阳的高度控制着太阳的强度: 如下图所示,可以看到sky Spher是一个蓝图类,可以打看进行编辑: 在下图中可以看到是由方向光的y轴的旋转角度影响着太阳高度,所以想要修改太阳的高度,就需要 ...

  4. 模拟昼夜交替-第11届蓝桥杯Scratch国赛真题第1题

    本文同步发表于"超平的编程课"公众号,更多教程,可移步至公众号. [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第13 ...

  5. UE4-(蓝图)实现昼夜交替

    一.创建蓝图类选择Actor,命名为DayNight,在蓝图类中编辑昼夜交替的效果,如果在关卡蓝图中编辑,对于后期很多场景中都有就需要不停地重复编辑关卡蓝图. 二.双击打开DayNight蓝图类,在事 ...

  6. 虚幻引擎(19)-昼夜交替

    文章目录 前言 相关介绍 其他介绍 上一篇笔记 下一篇笔记 预览 关卡蓝图 一.灯光 二.关卡蓝图 前言 有关游戏中昼夜交替的实现方法 虚幻引擎版本: 4.23.1 虚幻引擎插件:Electronic ...

  7. Silverlight 游戏开发小技巧:昼夜交替动画

    记得在WP7上玩一个游戏有段动画很有趣,是背景在进行昼夜交替,一会儿白天太阳出来白天了,一会儿月亮蹦出来夜晚了,在以前做C++程序的时候曾经实现过类似的效果,今天早上移植了一下到Silverlight ...

  8. 虚幻4蓝图实现昼夜交替

    通过控制定向光源和sunlight来实现昼夜交替,其中通过旋转定向光源的Y轴可改变光影的效果达到白天和黑夜的交替. 首先创建一个globaltimer类,通过这个类定义我们的一天的时长. 其中seco ...

  9. svg地球昼夜交替动画js特效

    基于svg+js实现的地球昼夜交替动画特效 dd:

最新文章

  1. 斯坦福大学Christopher Manning:Transformer语言模型为什么能取得突破
  2. 智慧健康,协同发展:清华大学携手天津市共同探索健康医疗大数据
  3. MATLAB从入门到精通-MATLAB结构矩阵的输出
  4. 目标检测 - 如何在图片中标记Annotations中的坐标信息?
  5. java与js交互,相互调用传参
  6. Expdp/Impdp 并行导入导出详细测试
  7. MariaDB数据库日志
  8. 彻底卸载nodejs和npm然后使用nvm
  9. Spring Boot 2.0 正式发布
  10. [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  11. CRT链接ubuntu报错The remote system refused the connection
  12. jsonp 获取图片文件流_【国际IT专场】Laravel Media Library多媒体文件的上传与管理...
  13. 位图和矢量图区别,PS和AI的区别
  14. 平板电脑刷机加供电系统改造
  15. 我的一百个2019(四):2019,我被坑惨了
  16. podman的配置以及命令详解
  17. PLSQL登录时怎么输入数据库地址
  18. MBP TouchBar自定义使用
  19. sdnu oj 1357.Text Reverse 字符串
  20. 安装运行太极框架Android搞机操作root

热门文章

  1. App开发需要了解的基本技术
  2. 在Debian下安装输入法的过程
  3. WPF 限制鼠标的移动范围
  4. 基于PHP+MySQL实现在线考试系统【100010717】
  5. Web端项目测试方法
  6. 从消费者物联网聊点骇人的
  7. 疯码Java复习面试指南14-什么是死循环,分别写出三种循环结构的死循环?
  8. PyPDF2 编码问题 PyPDF2.utils.PdfReadError Illegal character in Name Object
  9. win10 定期的なタスク-schtasks
  10. 自学Java需要多长时间?