一个专注音视频领域问答的小圈子

UE 中提供了 凹凸贴图偏移 的贴图来实现修改 UV 坐标达到提升表面细节,使材质产生深度错觉。凹凸贴图偏移是 UE4 中的术语,其实就对应于 LearnOpenGL 网站上的 视差贴图

视差贴图原理

理解了视差贴图的含义就很容易明白凹凸贴图偏移的作用了,它的原理如下图所示:

首先需要提供一张代表高度图的纹理,这样每个像素点都对应一个高度值,上图中的红线可以理解成高度值分布,点 A 对应的高度值就是 H(A)。

以视线方向看向点 A 时,由于高度的遮挡实际看见的是点 B,所以在纹理采样时只要在点 A 的坐标基础上加上点 B 的坐标偏移就行了,但是实际上很难准确预测点 B 的存在,它只是粗略估算得到的。

所以在实际操作时,一般采样点 A 对应的高度值,然后在视线方向以高度值大小进行缩放,向量 P 就是缩放后的结果,这个时候再用点 A 的坐标加上向量 P 在坐标轴上的偏移就行了。

视差贴图存在一定的局限性,主要在于点 B 和向量 P 之间有时候变化很块导致预测误差较大,所以才有了后面的陡峭视差映射和视差遮蔽映射,在 UE 中也提供了视差遮蔽映射的计算,不过本篇先使用简单的视差映射。

理解了视差映射的基础概念后,就很容易明白 UE 中凹凸贴图偏移的对外参数含义了。

BumpOffset 使用

首先针对每个像素都要有个高度值,这一般用个高度图来表示就行了,对应 BumpOffset 中的 Height 节点,其实也可以用一个常量来表示高度值。

一般都是用一张高度度来表示每个像素的高度信息,不过 BumpOffset 并不接受 RGB 通道作为连接节点,因为高度信息使用 R、G、B 单个通道来表示就行了。

同时由于高度图要进行纹理采样,那么务必涉及到对纹理坐标 UV 的操作了,BumpOffset 中的 Coordinate 节点就是对应 UV 的调整。

最后的输入节点 HeightRationInput 就是对采样的高度值进行比例系数的缩放,可让外部调整放大的倍数。不光是 BumpOffset 有这系数操作,在涉及到纹理采样的操作中都会有对采样后的 RGB 数据进行相应的调节操作,比如对采样后的 RGB 数据乘以 1 保持原始状态,也可以把要乘的数作为参数暴露给外界进行调整。

根据视差贴图的原理可知,BumpOffset 的输出结果就是对纹理采样坐标的偏移,通过这个偏移实现深度错觉,所以要把输出节点连接到 Diffuse、Roughness、Normal 节点的 UV 上。

视差遮蔽映射

UE 还提供了视差遮蔽映射的方法,如下图所示:

它同样也是用来实现高度效果的,原理就是 LearnOpenGL 网站上的 视差遮蔽映射

其中输入参数 Heightmap Texture 对应高度图纹理对象,不再是纹理采样,而 Heightmap Channel 表示选择纹理对象的哪个通道作为高度值,UVs 表示对高度图纹理坐标进行相关操作

输入参数 Min Steps 和 Max Steps 表示分层最小和最大数目,输出参数 Parallax UVs 和 BumpOffset 的输出参数一致,表示对纹理采样的偏移值。

视差遮蔽映射会比简单的视差贴图实现更好的效果,但是性能上也会损耗多一些。

知识星球

一个专注音视频领域问答的小圈子

公众号音视频开发进阶对应的知识星球,一个编程开发领域的专业圈子,贩卖知识和技巧!

※ 入群须知:了解该星球能提供的价值和帮助,在提问时务必阐述好背景,附带相关的信息。

iOS 用户可以加我微信 ezglumes 邀请你进星球,有疑问也可以加我微信咨询。

※ 星球内容:

基础教程:

在知识星球连载的干货教程,可以在专栏中找到,随着时间的推移,教程也会越来越多:

- 音视频基础概念
- WebRTC 入门教程及源码实践
- 播放器教程及源码实践
- OpenGL 和特效开发教程
- Vulkan 入门教程

部分内容可以在博客 https://glumes.com 中检索到,后面会在星球里持续更新.

干货分享:

涵盖了移动开发和音视频工程领域的绝大部分,从项目实战角度出发,提升能力,包括但不限于以下领域:

- Android/iOS 移动开发
- Camera 开发
- 短视频编辑 SDK 项目实践
- 在线直播和推流
- WebRTC 开发
- 播放器基础和提高
- OpenGL 图像渲染及特效开发
- C++ 基础和提高
- FFmpeg 使用和分析
- 干货资源和书籍分享

不止于技术方面的,各种 IT 新闻、茶余饭后、生活趣事也欢迎大家分享!!!

技术答疑解惑:

针对上述基础教程和干货分享的答疑,另外还有音视频和 IT 开发中的各种交流讨论。

- 基础知识点答疑
- 工业项目实践答疑
- 问题排查思路分析

一个 BUG 排查很久,不如来星球里提个问题,效率提升百倍。

求职和面试辅导:

一站式职场服务,每份工作都值得用心对待!!!

- 面试题和面试经验分享
- 简历修改和模拟面试
- 大厂内推和信息同步
- 职场经验分享
- 职业规划和发展分析

※ 星主和合伙人介绍

星主是公众号音视频开发进阶的作者,也是网站 https://glumes.com 的作者,曾参与过抖音、剪映等头部音视频 APP 底层 SDK 的开发。

合伙人也是在头条、快手从事音视频架构师的职位,具有多年的音视频开发经验,能力圈覆盖了音视频的绝大多数领域,资深音视频从业人员为你保驾护航。

微信公众号

扫描下面的二维码关注我的微信公众号《音视频开发进阶》,推送更多精彩内容!

添加我的微信 ezglumes 拉你入音视频与图形图像技术群一起交流学习~

wechat-account-qrcode

原创文章,转载请注明来源:    UE4 材质练习 之 凹凸贴图偏移的使用