Unreal Engine4(虚幻4)学习心得-Ambient Cubemap 环境立方体贴图

创建项目

如何创建新的项目在这里就不做过多说明了,打开UE4 Editor,就可以选择是创建blueprint项目,还是C++项目。

  • blueprint蓝图项目
    blueprint蓝图项目,使用图形化编程方式,供非程序员可以不通过代码,就可以做出一个不错的UE4项目,可以用作demo,甚至是上线项目使用。
  • C++项目
    C++项目,也就是通过代码来完成一个项目的开发。不过其实说白了,蓝图中使用到的函数、变量,都是底层C++写好之后,选择性的暴漏给蓝图的。

创建了项目之后,从Editor左侧将一些static mesh、light之类的拖到关卡编辑器中,点击播放,也就可以看到场景的效果了。


Ambient Cubemap 环境立方体贴图

  • 用处
    在标准光照模型(Blinn-Phong模型)中,进入摄像机的光线分为4种,自发光、高光反射、漫反射、环境光。其中环境光适用于描述物体所收到的间接光照的。而Ambient Cubemap用于高质量光照环境的立方体贴图。
  • 实现方式
    其实就是对物体的六个方向拍照,得到一个cubemap,然后根据不同的光泽度,生成不同模糊程度的图片保存在不同mipmap中,然后根据物体的粗糙度、法线等因素,在shader中针对cubemap编写算法,然后将计算出来的结果,参与最终颜色的生成上。
  • 注意事项
    由于环境光并非一般的方向光,可以认为它的光照来自四面八方。所以不能对其使用shadow map,而只能使用SSAO,建议与带阴影的动态光照产生的直接光照组合使用。
  • UE4中的使用方法
    很多地方可以使用Ambient Cubemap,这里只说一种使用方式:在后处理中对全场景使用ambient cubemap:

    1. 首先在关卡中拖进一个Post Process Volume,并对其Unbound属性的checkbox进行勾选,目的是是的这个后处理将影响整个世界

      1. 如果不将Post Process Volume与整个世界关联,也可以不勾选其Unbound选项,而是调整其blend Radius即可
    2. 在Post Process Volume的Settings的Ambient Cubemap属性中,赋给其一个Cubemap Texture(),设置其Intensity,用于影响其光的强度,设置Tint用于影响颜色。
      1. 这里赋予的Cubemap就是我们刚才一直说的ambient cubemap,这里用的是预先准备好的cubemap,其实也可以在游戏中生成cubemap,但是会比较耗费性能
      2. Intensity和Tint这俩属性与原生的Ambient Cubemap算法无关,只是UE4给这个算法添加的两个属性,用于,比如我们准备了一个场景白天时候的Ambient Cubemap,然后可以通过修改这个Intensity和Tint,然后不修改Cubemap,就可以获取到这个场景晚上的Cubemap了。
    3. 设置世界中物体的材质,将其金属度设置为1,这个值是用于blend直接光和cubemap的,值越高,cubemap的比重越大;将其粗糙度设置为0,这样将使用清晰的Cubemap mipmap。
      1. 在这里还可以设置法线,但是一般使用默认法线就好,如果设置其他法线可能会造成扭曲的效果
      2. 这里还能获取到上一步设置的Ambient Cubemap Intensity和Tint,用于设计更复杂的算法
  • UE4源码中相关的类
    FCubemapShaderParameters:

    • 成员变量

      1. AmbientCubemapColor,由于AmbiendCubemap的实际使用方法还是将Cubemap中的RGBA值采样出来,参与到最终颜色的计算,所以通过设置这个参数,可以设置使用Cubemap的哪几个通道,各个通道采样的比例、颜色偏移等
      2. AmbiendCubemapMipAdjust,由于需要根据绘制物体的粗糙度等因素,计算出来使用cubemap的哪层mipmap,而设置这个参数,可以对此进行修正
      3. AmbientCubemap和AmbientCubemapSampler用于指定Ambient Cubemap指的Cubemap texture。
    • 成员函数
      1. 函数Bind,用于将4个成员变量与shader中对应的变量进行bind
      2. 函数SetParameters/SetParametersTemplate通过给4个成员变量赋值进而给shader中的对应变量赋值
    • 使用位置
      1. PostProcessAmbient类,正如刚才举到的例子,后处理中可以使用Ambient Cubemap,所以在这个后处理类中使用到了该类。
      2. FInjectAmbientCubemapPS类。

Unreal Engine4(虚幻4)学习心得-Ambient Cubemap 环境立方体贴图相关推荐

  1. Unreal Engine4(虚幻4)学习心得-材质

    Unreal Engine4(虚幻4)学习心得-材质 材质 制作材质的过程其实就相当于在写shader,只是UE4制作材质使用的是可视化方式在写shader.下面将介绍一些材质属性: Blend Mo ...

  2. 【Unity Shader】 CubeMap(立方体贴图)

    Unity Shader 立方体贴图 一.介绍CubeMap Shader中对CubeMap采样 Unity中如何制作CubeMap 二.Reflect CubeMap(反射立方体纹理用于环境映射) ...

  3. LearnOpenGL学习笔记——立方体贴图

    立方体贴图 在本节中,我们将讨论的是将多个纹理组合起来映射到一张纹理上的一种纹理类型:立方体贴图(Cube Map).简单来说,立方体贴图就是一个包含了6个2D纹理的纹理,每个2D纹理都组成了立方体的 ...

  4. 立方体贴图 Cubemap

    1. 立方体贴图 Cubemaps 1.1 创建立方体贴图 2. 天空盒 Skybox 2.1 加载天空盒 2.2 显示天空盒 2.3 优化 2.4 整体代码 3. 环境映射 Environment ...

  5. OpenGL cubemap 立方体贴图实例

    OpenGL cubemap 立方体贴图 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <glad/glad.h> #include ...

  6. UE4(Unreal Engine4)虚幻引擎视口布局,并且自定义HDRI

    UE4系列文章目录 文章目录 UE4系列文章目录 前言 一.操作步骤 1.准备工作 二.操作步骤 1.UE4中创建第三人称游戏 前言 在UE4中搭建电影级场景.先看下效果 一.操作步骤 1.准备工作 ...

  7. 百度dueros人工智能-RDA5981(R01开发板)-学习心得-电脑软件环境配置及调试

    R01开发板在WIindows开发环境下需要预先安装以下环境软件: 1.Keil MDK 安装 Keil MDK是美国Keil软件公司推出的微控制器开发工具,这里我们需要使用5.17以上的版本就行. ...

  8. dx12 龙书第十八章学习笔记 -- 立方体贴图

    本章讨论:立方体贴图 cube map,即以特殊的方式来运用这种由6个纹理所构成的基本数组.我们可以利用这项技术方便地映射天空纹理或模拟反射. 1.什么是立方体贴图 -- Cube Map 立方体贴图 ...

  9. C++学习(三三六)球面贴图Sphere mapping 立方体贴图Cube mapping

    1.球面贴图 1.1原理 在一幅平面纹理图像中对各个方向的颜色进行编码就相当于把一个擦得锃亮的完美球体放在环境的中央,然后在极远处用长焦镜头对它进行拍照.需要编码的区域就是覆盖整个纹理图像的一个圆形区 ...

最新文章

  1. appJSON[tabBar][0][pagePath] pages/basics/basics 需在 pages 数组中
  2. 人类未来将毁于元宇宙?刘慈欣向往星辰大海,小扎却要深耕Meta
  3. 有关eigen库的一些基本使用方法
  4. 浅析Avicii的MV Hey Brother
  5. vscode c++编译报错:‘nullptr’ was not declared in this scope(-std=c++11)
  6. IntelliJ IDEA 添加项目后编译显示包不存在的解决方案
  7. 执行力:Just Do It
  8. 使用c# .net core开发国标gb28181 sip +流媒体服务完成视频监控实例教程 亲身完美体验过程...
  9. 【截至2006.12.31】毒霸反间谍可清除的部分流氓软件清单
  10. smbus使用 树莓派_Linux控制I2C/SMBus设备
  11. JZ6-旋转数组的最小数字
  12. win2008服务器虚拟内存设置,电脑虚拟内存设置(Win 7/8/10、Windows Server 2003 - 2019)...
  13. [USACO题库]1.2.3 Name That Number命名那个数字
  14. 制作一幅简单的ArcGIS故事地图
  15. php网络图片拼接,图片处理-PHP图片拼接如何高效的实现
  16. 【MATLAB】rem和mod函数的区别
  17. Android拨号盘列表加载机制(原)
  18. 六度分离(hdu1869,floyd最短路)
  19. 强化学习原理及应用作业之动态规划算法【SYSU_2023SpringRL】
  20. 与小雷粉-半初夏的聊天感悟

热门文章

  1. 聊聊 kerberos 的 kinit 命令和 ccache 机制
  2. 如何在项目运行过程中动态修改邮箱发件人的配置信息
  3. 2022长春理工大学计算机之科技大厦
  4. 松下机器人进行数据备份与恢复的具体方法
  5. 【What if 系列】压力山大
  6. 【考研词汇训练营】Day 2 —— 词根词缀记忆法
  7. Java在线聊天网站(源码)
  8. 传感器实验——噪音警报
  9. html css 圆圈数字,html5 css3带日期的圆形数字电子时钟代码
  10. 讯*DSE客户端强制删除不能识别U盘的解决办法