Unreal Engine4(虚幻4)学习心得-Ambient Cubemap 环境立方体贴图
来源:互联网 发布:.net在线考试系统源码 编辑:程序博客网 时间:2024/04/29 15:17
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:- 首先在关卡中拖进一个Post Process Volume,并对其Unbound属性的checkbox进行勾选,目的是是的这个后处理将影响整个世界
- 如果不将Post Process Volume与整个世界关联,也可以不勾选其Unbound选项,而是调整其blend Radius即可
- 在Post Process Volume的Settings的Ambient Cubemap属性中,赋给其一个Cubemap Texture(),设置其Intensity,用于影响其光的强度,设置Tint用于影响颜色。
- 这里赋予的Cubemap就是我们刚才一直说的ambient cubemap,这里用的是预先准备好的cubemap,其实也可以在游戏中生成cubemap,但是会比较耗费性能
- Intensity和Tint这俩属性与原生的Ambient Cubemap算法无关,只是UE4给这个算法添加的两个属性,用于,比如我们准备了一个场景白天时候的Ambient Cubemap,然后可以通过修改这个Intensity和Tint,然后不修改Cubemap,就可以获取到这个场景晚上的Cubemap了。
- 设置世界中物体的材质,将其金属度设置为1,这个值是用于blend直接光和cubemap的,值越高,cubemap的比重越大;将其粗糙度设置为0,这样将使用清晰的Cubemap mipmap。
- 在这里还可以设置法线,但是一般使用默认法线就好,如果设置其他法线可能会造成扭曲的效果
- 这里还能获取到上一步设置的Ambient Cubemap Intensity和Tint,用于设计更复杂的算法
- 首先在关卡中拖进一个Post Process Volume,并对其Unbound属性的checkbox进行勾选,目的是是的这个后处理将影响整个世界
- UE4源码中相关的类
FCubemapShaderParameters:- 成员变量
- AmbientCubemapColor,由于AmbiendCubemap的实际使用方法还是将Cubemap中的RGBA值采样出来,参与到最终颜色的计算,所以通过设置这个参数,可以设置使用Cubemap的哪几个通道,各个通道采样的比例、颜色偏移等
- AmbiendCubemapMipAdjust,由于需要根据绘制物体的粗糙度等因素,计算出来使用cubemap的哪层mipmap,而设置这个参数,可以对此进行修正
- AmbientCubemap和AmbientCubemapSampler用于指定Ambient Cubemap指的Cubemap texture。
- 成员函数
- 函数Bind,用于将4个成员变量与shader中对应的变量进行bind
- 函数SetParameters/SetParametersTemplate通过给4个成员变量赋值进而给shader中的对应变量赋值
- 使用位置
- PostProcessAmbient类,正如刚才举到的例子,后处理中可以使用Ambient Cubemap,所以在这个后处理类中使用到了该类。
- FInjectAmbientCubemapPS类。
- 成员变量
0 0
- Unreal Engine4(虚幻4)学习心得-Ambient Cubemap 环境立方体贴图
- Unreal Engine4(虚幻4)学习心得-获取UE4
- Unreal Engine4(虚幻4)学习心得-材质
- 立方体贴图(Cubemap)
- 【UE4】如何获取/下载虚幻4(Unreal Engine4)源码
- Ambient occlusion map (环境闭塞贴图)
- (149)环境立方体贴图
- OpenGL蓝宝书源码学习(二十二)第七章——Cubemap立方体贴图
- unreal engine4效果很不错
- unreal engine4效果很不错
- 为何要学习unreal engine4
- Unreal Engine4 初学第一天
- Unreal Engine 4:虚幻4 文档
- 立方体贴图
- 立方体环境贴图(Cube Mapping)之OpenGL原理
- Unreal Engine 4/虚幻 4 Demo下载地址
- 虚幻4翻译文档-实用程序表达式 | Unreal Engine
- Unreal Engine 4 —— 虚幻开放日2017总结
- [读书笔记]《Java程序员修炼之道》
- SpringMVC 基于注解的Controller详解
- TableViewCell 复用解决
- Android学习笔记--GMS认证(常见的cts—fail及解决方法)
- iOS Autolayout之Masonry解读
- Unreal Engine4(虚幻4)学习心得-Ambient Cubemap 环境立方体贴图
- QTP录制
- eclipse 闪退
- 第十六周实践项目3————电子词典
- 章文嵩博士和他背后的负载均衡帝国
- @RequestParam @RequestBody @PathVariable 等参数绑定注解详解(转载)
- 脚本查询数据表结构返回,可扩展
- 产品经理进阶篇幅(1)
- 配图快速入门及地图性能优化(2)