照亮环境

尽管Lightmass可以生成静态对象上的间接光照的光照贴图,但像角色这样的动态对象 也需要一种接收间接光照的方法。这个问题可以通过Indirect Lighting Cache(间接光照缓存) 解决, 它在构建光照时使用Lightmass生成的样本来计算动态对象在运行时的间接光照。

Elemental(元素)关卡中没有应用 间接光照缓存 的漫反射光照

应用了 间接光照缓存 的漫反射光照

工作原理

从高层次的角度来看:

  • Lightmass把光照样本放置到关卡的各个位置处,并在光照构建过程中计算它们的间接光照。

  • 当要渲染一个动态对象时, 间接光照缓存 会检查那个对象是否已经有了可用光照, 如果有则使用这些光照。

  • 如果没有任何光照可用 (该对象是全新的或移动了很多), 间接光照缓存 会插值预计算的光照样本。Lightmass在朝上的表面上放置高密度的光照样本, 其它地方则放置低密度的光照样本。样本仅限于在 LightmassImportanceVolume 中,且他们仅能放置在静态表面上。

使用 r.Cache.DrawLightingSamples 1 来可视化地查看Lightmass生成的光照样本。

这个工作流程的目标是进行尽可能少的内容设置。然而,有时候,这种放置方式 不能在浮在空中的区域上呈现足够的细节,比如,一个角色乘坐的升降机或 飞行物。您可以把 LightmassCharacterIndirectDetailVolumes 放在这些区域的周围来获得更多的细节。

这里的这个花托是个InterpActor,并显示了 5x5x5大小的插值位置。

由于仅当对象进行了很大的移动导致光照样本无效了时才会发生插值,因此缓存会分离。注意,这些位置距离对象的边界 是很远的,这是为使得当该对象在世界中到处移动时可以产生连续的、稳定的光照。 大多数对象实际上会获得 3x3x3 的插值位置。光照数据是2波段SH(就像光照贴图一样), 为法线贴图提供了足够的方向信息,使其有效。之前,这个工作是由 DynamicLightEnvironments 处理的。 这个实现的产生主要视觉效果差异是: 在一个对象上不止有一个样本,插值时 没有时间延迟。

预览未构建的光照

间接光照缓存也允许预览没有构建光照的对象。对于较小的对象,它的效果非常好, 对于像建筑物或地面这样较大的对象就不是很好了。当您移动一个构建了光照的静态网格物体时,它将会自动地 切换到间接光照缓存,直到进行下一次构建光照为止。

这是复制的其中一根柱子,它在预览时获得间接光照,而不是黑色的。注意在游戏中, 未构建光照的柱子仍然是黑色的。

照亮环境

尽管Lightmass可以生成静态对象上的间接光照的光照贴图,但像角色这样的动态对象 也需要一种接收间接光照的方法。这个问题可以通过Indirect Lighting Cache(间接光照缓存) 解决, 它在构建光照时使用Lightmass生成的样本来计算动态对象在运行时的间接光照。

Elemental(元素)关卡中没有应用 间接光照缓存 的漫反射光照

应用了 间接光照缓存 的漫反射光照

工作原理

从高层次的角度来看:

  • Lightmass把光照样本放置到关卡的各个位置处,并在光照构建过程中计算它们的间接光照。

  • 当要渲染一个动态对象时, 间接光照缓存 会检查那个对象是否已经有了可用光照, 如果有则使用这些光照。

  • 如果没有任何光照可用 (该对象是全新的或移动了很多), 间接光照缓存 会插值预计算的光照样本。Lightmass在朝上的表面上放置高密度的光照样本, 其它地方则放置低密度的光照样本。样本仅限于在 LightmassImportanceVolume 中,且他们仅能放置在静态表面上。

使用 r.Cache.DrawLightingSamples 1 来可视化地查看Lightmass生成的光照样本。

这个工作流程的目标是进行尽可能少的内容设置。然而,有时候,这种放置方式 不能在浮在空中的区域上呈现足够的细节,比如,一个角色乘坐的升降机或 飞行物。您可以把 LightmassCharacterIndirectDetailVolumes 放在这些区域的周围来获得更多的细节。

这里的这个花托是个InterpActor,并显示了 5x5x5大小的插值位置。

由于仅当对象进行了很大的移动导致光照样本无效了时才会发生插值,因此缓存会分离。注意,这些位置距离对象的边界 是很远的,这是为使得当该对象在世界中到处移动时可以产生连续的、稳定的光照。 大多数对象实际上会获得 3x3x3 的插值位置。光照数据是2波段SH(就像光照贴图一样), 为法线贴图提供了足够的方向信息,使其有效。之前,这个工作是由 DynamicLightEnvironments 处理的。 这个实现的产生主要视觉效果差异是: 在一个对象上不止有一个样本,插值时 没有时间延迟。

预览未构建的光照

间接光照缓存也允许预览没有构建光照的对象。对于较小的对象,它的效果非常好, 对于像建筑物或地面这样较大的对象就不是很好了。当您移动一个构建了光照的静态网格物体时,它将会自动地 切换到间接光照缓存,直到进行下一次构建光照为止。

这是复制的其中一根柱子,它在预览时获得间接光照,而不是黑色的。注意在游戏中, 未构建光照的柱子仍然是黑色的。

UE4 间接光照缓存相关推荐

  1. GPU Gems2 - 13 动态环境光遮蔽与间接光照(Dynamic Ambient Occlusion and Indirect Lighting)

    本文摘自https://zhuanlan.zhihu.com/p/38411575 [章节概览] 这章在讲大家很熟知的环境光遮蔽(Ambient Occlusion , AO). 文中的描述是,介绍了 ...

  2. Q89:全局光照(Global Illumination)——Path Tracing(只用于间接光照)

    89.1 Path Tracing只用于间接光照 根据Path Trace的算法,只有当最终的反射光线撞击到发光材质物体时,才会对最初的撞击点进行"有效"着色,否则着色为" ...

  3. Q85:对比“直接光照”和“间接光照”的反射模型

    这里只是罗列"直接光照"和"间接光照"的反射模型的示意图.这一章节的作用主要是:联系之前学过的反射模型(漫反射模型.高光反射模型)和接下来将要学习的反射模型. ...

  4. UE4构建光照后,BSP创建的静态网格变全黑

    UE4构建光照后,BSP创建的静态网格变全黑 UE4简单几何体的构建常会用到BSP笔刷.不少小伙伴在创建完静态网格体并且构建完光照后会发现物体死黑的问题.这是由于没有设置光照贴图分辨率和坐标索引引起的 ...

  5. ue4构建光照失败问题与解决

    ue4构建光照失败问题与解决 参考文章: (1)ue4构建光照失败问题与解决 (2)https://www.cnblogs.com/wzj998/p/6745184.html 备忘一下.

  6. Q87:间接光照(Indirect Illumination)的高光反射(Glossy Reflcetion)

    87.1 建立模型 接下来就是采样啦! 之前,我们遇到过的采样一般都是对撞击点处的上半球面进行采样,比如: 这是因为cos分布对应的夹角是光线和法向量的夹角. 但是,我们这里对应的夹角是光线和镜面反射 ...

  7. 【UE4从零开始 083】体积光照贴图

    Lightmass会生成表面光照贴图,用于静态对象上的间接光照.但是,动态对象(例如角色)也需要一种接受间接光照的方法.这种方法就是在构建时将所有点的预计算光照存储在名为 Volumetric Lig ...

  8. UE4 Lightmass 全局光照

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Unre ...

  9. UE4实时渲染基础及深入探究

    实时渲染基础:link 实时渲染深入探究:link 目录 实时渲染基础 目标帧率与毫秒 帧时间与GPU/CPU 最常见的四大性能问题 实时渲染深入探究 延迟渲染与前向渲染 渲染之前和遮挡 CPU和GP ...

最新文章

  1. lnmp上搭建zabbix
  2. html怎么让方块自动旋转,如何使用纯CSS实现一个圆环旋转错觉的动画效果(附源码)...
  3. leetcode hot100(第一部分) + python(c++)
  4. 04_使用Influxdb自带函数查询
  5. nginx中配置angular项目_强大,Nginx配置一键生成
  6. win11系统安装打印机的方法
  7. 计算当前时间往加N天后的时间,Date,SimpleDateFormat,Calendar
  8. 一文了解机器学习以及其相关领域(上)
  9. 安装Spark集群(在CentOS上)
  10. Atitit rss没落以及替代品在线阅读器
  11. ISO IEC 27001 企业信息安全管理要求
  12. Android进阶——Android无障碍服务之AccessibilityService实现微信抢红包插件
  13. watir学习系列--Watir API介绍
  14. Unicode与GB18030、GBK、GB2312
  15. 大数据工程应用 数据分析_大数据工程的方式
  16. HTML+CSS简单漫画网页设计成品--(红猪(9页)带注释)
  17. Schema being registered is incompatible with an earlier schema
  18. 4668. 【NOIP2016提高A组模拟7.19】腐败
  19. 计算机启动时bios主要完成的功能,电脑开机时bios的作用(急用)
  20. 传智播客实战taotao项目页面菜单栏Tree的Java实现方法

热门文章

  1. python制作射击游戏_零基础用Python开发的第一个小游戏——太空射击
  2. java 双线程交替,Java 创建两个线程,和主线程交替运行。
  3. linux替换指定行指定列的内容,linux – sed替换特定行号的特定列号值
  4. android 定制输入法,QQ输入法Android 4.3全新升级 实现私人定制输入
  5. eclipse没有java web,Eclipse Juno在Dynamic Web Project中没有JSP(但其他一切都很好)
  6. fastreport iif小于条件_杭州灭菌柜验证需要什么条件
  7. php 判断文件类型,php 判断图片文件的真实类型
  8. java中dao和实体类的关系_【JAVA基础】 PO、VO、BO、DTO、POJO、DAO之间的关系详解...
  9. keypairgenerator生成的公钥是不变的么_bitcoin 地址是如何生成的
  10. java字符串拼接_Java 8中字符串拼接新姿势:StringJoiner