
简介面向UE5游戏开发、建筑可视化与CG影视制作人员这份视差材质资源包演示了基于高度图构建表面起伏与深度错觉的完整流程涵盖视差贴图坐标、映射向量、法线贴图与切线空间等核心概念并提供九宫格分区与单贴图两种实现方案。包内共478个文件以384个uasset材质资产为主体辅以umap场景、ush着色器、ini配置、dat数据及png预览图压缩包约918MB目录结构清晰便于按功能模块检索。资源已有1113人学习。通过材质节点连接与配套贴图资产可快速掌握高度图采样、视差偏移强度调节、法线混合及UV处理等关键技巧尤其适合需要提升场景真实感但希望减少调试成本的中高级虚幻引擎使用者。1. 墙面贴图怎么都不立体我从“假砖墙”到视差材质的真实经历前阵子做一个老城区改造的数字孪生项目甲方反复提一个问题建筑外立面太“平”了砖缝看得见但砖块就是没有凸出来的体积感。我当时用的是常规做法——BaseColor加一张法线贴图理论上光影方向对了凹凸感应该够用可放大一看就是不对劲。后来我才意识到问题出在哪法线贴图只能骗过光照骗不过视角。所谓骗不过视角指的是当你从侧面掠视一面砖墙时真实世界里砖块之间是有前后遮挡关系的——凸出来的砖会挡住凹进去的砖缝一部分。但法线贴图完全没有这个能力它只是修改了表面法线方向让光线计算出来像是有凹凸实际上模型还是同一个平面。一旦视角压得很低所有凹凸全部“趴”回平面上一眼假。UE5视差材质解决的就是这个问题。它不是改光影算法而是直接篡改UV采样坐标——根据视角方向和高度图把每一条贴图采样“推移”出看似真实的深度错位。效果上墙面会真的出现砖块边缘把砖缝遮挡住的现象且会随视角变化而变化立体感远超普通法线贴图方案。这篇文章适合两类人一类是场景美术和TA做写实环境时想让大面积墙体、地面、路面真正“立”起来另一类是技术向的开发者想在数字孪生、建筑可视化项目里用最少的面数换取最强的细节表现。接下来我按自己踩过的路径把这套材质从原理到搭法再到坑点完整过一遍。2. 视差材质到底改了什么从高度图到UV篡改的底层逻辑2.1 法线贴图的“光影谎言”缺陷要说清楚视差材质得先明确法线贴图的短板。法线贴图理论上可以让平面渲染出丰富的细节但它做的事情本质上是“重新计算光照方向”——像素点的几何位置没有发生任何改变改变的只是这个像素的“法线朝向”让光照结果类似于表面有凹凸而已。这带来两个天然问题轮廓不改变无论凹凸多强模型剪影永远是一个平的矩形或者一块平的墙面不会有任何锯齿状或起伏状的外形变化。视差无感知当你移动摄像机砖块和砖缝之间的相对位置关系不会变。真实砖墙在视角变化时会呈现出“前面的砖挡住后面的缝”这样的遮挡关系法线贴图完全做不到。这也就是你在很多项目里看到的所谓“贴图很清晰但就是假”的根源。场景变复杂以后美术往往会叠加高精度法线、粗糙度变化、环境光遮蔽贴图……但不管加多少它依然是平面。2.2 高度图驱动的UV偏移视差映射的核心机制视差材质的关键在于引入了一张额外的信息贴图高度图Heightmap。它是一张灰度图白色表示凸起最高的区域黑色表示最低的区域。UE5材质编辑器里给你开放的节点就是让这个高度图参与UV坐标的重新计算。核心思路可以这样理解摄像机看到一个像素点理论上这个像素是落在平面上的某一点。但假如这个位置有一个高出来的砖块那这个砖块的表面应该比平面更靠近摄像机。真实情况下摄像机视线延长到砖块表面就会提前相交而不是继续延伸到平面。视差材质做的事情就是在采样贴图之前根据视线方向和高度值把UV坐标沿着视线方向“拉扯”一下——看起来就像几何表面真的凸起来了一样。伪代码理解起来更直观// 简化版视差偏移示意 float height Texture2DSample(HeightmapTex, UV).r; float2 viewDir normalize(cameraDirInTangentSpace).xy; float2 offsetUV UV viewDir * height * ParallaxScale;这里有一个关键细节偏移量同时依赖高度值和视角方向。视角越接近掠射偏移越大高度越凸偏移也越大。这就是为什么视差材质在正面视角时感觉不明显但侧面掠视时立体感极强的根本原因。2.3 UE5里的POM比基础视差映射更“较真”的做法上面那个公式是最基础的视差映射效果粗糙在砖块边缘容易产生错误的重叠和扭曲。UE5材质面板里提供的现成节点Parallax Occlusion MappingPOM做了更复杂的事情它在偏移路径上做了多次步进采样在高度场中沿着视线方向逐段推进找到实际表面相交的位置。我自己的比喻是基础视差映射像眼睛往水里看时抬手摸鱼摸到哪算哪经常摸偏POM就是沿着视线方向一格一格“下楼梯”每走一段对比一下高度找最接近真实表面的落脚点。步数越多找得越准但GPU开销也越大。这一步是视差材质是否“真实感拉满”的分水岭。自制简易版的视差映射侧面看起来会有明显的贴图滑动断层现象用POM节点砖缝之间会呈现平滑的过渡遮挡效果逼近真正的置换几何体。3. UE5材质编辑器里的落地流程从纹理准备到节点搭建3.1 纹理准备不是随便找张法线贴图就能用在开始搭节点之前纹理源材料很重要。视差材质对三张贴图有要求基础色贴图BaseColor决定表面颜色。法线贴图Normal在视差偏移之后提供一个带有深度的光影细节。高度贴图Heightmap这张图是视差效果的灵魂通常可以从法线贴图的alpha通道提取也可以单独烘焙或用工具生成。很多人会在这一步踩坑直接从网上找一套“PBR贴图包”结果发现高度贴图和高光贴图搞混或者高度图范围压缩得太狠导致视差效果极其微弱。我做项目时的习惯是无论来源是Substance Painter还是Quixel Bridge都会把高度图单独导入并且用Photoshop或SD确认它的灰度分布是合理连续的尽量避免大面积的纯黑纯白跳变。3.2 节点网络的核心接线顺序打开UE5材质编辑器创建一个新的MaterialBlend Mode选择OpaqueShading Model选Default。以下是POM节点的标准接线逻辑从Texture Sample节点读出一张Heightmap把它的RGB输出接入POM节点的Heightmap输入。POM节点需要UV输入默认可以用TextureCoordinate节点也可以接自定义UV集这取决于模型UV布局。POM节点的其他参数Height Ratio控制整体视差高度我一般0.02到0.05之间Number of Steps是采样步数16到32常见性能紧张的移动端可以压到8到16Refinement Steps控制进一步细分查找的精度。把POM节点输出的UV坐标分别接到BaseColor、Normal、Roughness等所有贴图的UV输入上。这一步千万别漏——如果你只把BaseColor用了偏移后UV而法线贴图还在用原始UV出来的材质表面会出现颜色和光影分离的违和感。下面是一个简易的节点接线描述伪蓝图逻辑HeightmapTex - POM(UV, HeightRatio, NumSteps) POM.UVOffset - TexCoord(BaseColorTex) POM.UVOffset - TexCoord(NormalTex) POM.UVOffset - TexCoord(RoughnessTex)3.3 切线空间的视角方向计算POM节点内部其实需要视线方向来算偏移但UE5的POM节点已经封装好了这部分你直接连接UV和Heightmap就好不需要手动计算CameraVector与切线空间的转换。不过有一个坑如果材质用在World Position Offset或者自定义顶点动画的模型上可能会因为法线/切线不一致导致POM偏移乱掉。这种情况下要把材质设置为使用full tangent space或重新烘焙模型的切线。我印象很深刻的是第一次把视差材质用到门板上门板打开关闭时有旋转动画结果视差效果忽正常忽错乱。排查到最后发现是模型导入时没有勾选“Compute Tangents”选项导致切线空间不稳定。这个坑当时花了我一下午后面会单独提。4. 哪些场景“真香”哪些场景“勿碰”视差材质的适用边界4.1 最值得用的地方大面积平面与硬表面材质视差材质最适合的场景通常有这几个特征表面大、视角变化频繁、以平面或大曲率弧面为主、且不要求模型轮廓真正发生变化。我实际项目里常用到的有建筑外立面砖墙、石墙、真石漆喷涂面尤其是老建筑改造项目砖块凹凸感对真实感提升立竿见影。地面与路面石板路、人行道砖、马路沥青纹理配合井盖凸起效果比单纯法线贴图好太多。室内墙面乳胶漆纹理、墙砖、木饰面凹槽特别适合样板间类可视化。数字孪生场景大范围楼宇和地表重建时因为模型精度有限用视差材质补足细节成本极低。这类场景有一个共同特点它们都是“大面积平面”几何面数不会因为视差材质而增加一分钱但视觉细节却能往上拉一个档次。对数字孪生项目来说这几乎等于白赚的真实感。4.2 不该用的地方模型轮廓需要改变、曲面曲率过大视差材质不是万能的。我踩过最明显的一个坑是把它用在弧形柱子上柱子是圆柱表面法线方向变化很快POM的UV偏移在曲面边缘会出严重的拉伸和错误遮挡看起来像贴图在柱面上融化。另一个典型的误用场景是模型需要有真正的剪影轮廓变化——比如带浮雕花的装饰构件、带凸起边缘的门套线。视差材质不管怎么偏移模型的外轮廓永远是平的。这时候硬用视差材质只会适得其反应该老老实实建模或者用曲面细分Tessellation加置换贴图。4.3 移动端和低配硬件的性能考量移动端项目需谨慎。POM的多次步进采样在GPU上是实打实的性能开销——步数越高采样次数越多发热和功耗越明显。如果项目Target是低端手机建议Number of Steps压到8Height Ratio控制在0.02以内或者干脆只在固定视角的特写物件上用。用一句话总结我的选型标准**大平面 中远景 强调材质细节上视差近景特写 轮廓要求高 曲面建模或置换。**这个原则可以避免大部分“视觉事故”。5. 踩坑实录接缝、切线、半透明、LOD与混合距离5.1 接缝处“悬空”和“凹陷”的成因视差材质在模型UV接缝处容易出现两种违和现象一是砖块像悬浮在缝上面二是缝边缘出现夸张的凹陷拉伸。核心原因通常是高度图数值范围太大或者Height Ratio设置过高。当视角掠射时大偏移UV会直接越过UV接缝采样到另一张完全无关的贴图区域自然就花掉了。解决思路有几种把贴图的Texture Address Mode设为Clamp而不是Wrap或者给高度图制作一张带边缘衰减的版本再或者在模型UV布局时就规划好——避免把关键凹凸细节跨在UV接缝上接缝尽量藏在平面区域或转角处。我在老建筑外立面的模型里通常会把一整面墙的砖缝接缝放在窗户或门框边缘这样即便有偏移也看不太出来。5.2 切线空间问题导致视差方向错乱前面提过一个案例门板旋转动画导致视差错乱。这个问题的根源是POM输出依赖切线空间里视线方向的正确转换而模型本身的切线Tangent如果没有在导入时正确计算视差偏移就会“跑偏”。如果你发现视差材质从某个角度看是正常的换个角度就歪掉大概率是切线问题。解决办法在模型导入设置中勾选“Use High Precision Tangent Basis”并确保“Compute Tangents”选项正确勾选。如果模型是在建模软件里手动指定了软硬边导入UE5后还要检查Smoothing Groups是否兼容。5.3 半透明材质与视差材质不兼容半透明材质Blend Mode Translucent基本无法使用标准的POM效果。因为半透明的渲染顺序和深度写入规则与不透明材质不同视差偏移造成的深度错位在半透明物体上会呈现出错误的遮挡排序——前后穿插看起来很脏。如果确实需要半透明又想要凹凸细节比较靠谱的方案是用法线贴图维持光影暗示不要上视差。或者用带Fresnel的边缘光模拟凸起轮廓虽然物理上不准确但视觉上能骗过肉眼。5.4 LOD切换带来的视差“跳变”问题静态网格体有LOD时视差材质会遇到一个尴尬问题高LOD模型用了视差低LOD模型因为UV密度、切线精度不同视差效果在切换点会突然跳变——棱角分明的砖墙突然“塌”成平面。这个问题我是在一个景观项目里发现的远处看不出来但摄像机靠近到一定距离后墙面会像变脸一样瞬间变立体。处理手法一般有两种一是在材质里利用距离信息动态调整Height Ratio比如离远了调大一些、离近了调小一些缓解跳变二是直接配合World Position Offset做模型层面的平滑过渡。如果场景能接受我更推荐前者改动成本低且整体视觉统一。5.5 与Nanite的兼容性经验UE5里用了Nanite的模型可以使用视差材质吗我在实际测试里的体会是静态网格体层面试过几种组合视差材质在Nanite模型上大体可用尤其是不需要WPO的POM但Nanite不支持World Position Offset如果你未来有把视差替换成真实位移的打算就要提前留好替换路径。另外Nanite在极端距离和极高密度下POM的表现会受到虚拟纹理采样和mip切换的影响容易出现个别像素的闪烁。我的建议是大场景远景墙面直接用Nanite加普通法线贴图即可真正需要近看特写、且是平面硬表面的地方关掉Nanite用传统几何体加视差材质效果更可控。6. 参数调整经验我踩出来的“手感值”很多人拿到视差材质模板以后第一个问题是Height Ratio该填多少。这个东西没有固定标准和纹理分辨率、模型尺寸、UV密度都有关。但我可以给一组起始参考值你在这个基础上微调参数推荐起步值说明Height Ratio0.02 - 0.03过大容易接缝分裂过小看不出效果Number of Steps24画面质量优先时用32性能紧张用16Refinement Steps4一般4到8即可过高收益不明显Texture Address ModeWrap大面积/ Clamp接缝敏感按实际场景选择调参时我习惯先固定相机视角在一个明显的掠射角度然后慢慢拉Height Ratio观察砖块边缘是否出现遮挡关系的突变或贴图抖动。找到临界点之后回调20%左右作为安全值。另外建议开启材质编辑器的实时预览并配合“材质域表面”模式调起来效率会高很多。除了这组参数还有一个很容易忽略的点高度贴图的Gamma和采样模式。如果高度图被当成sRGB纹理采样它的数值线性度会偏移直接影响视差偏移量的精确度。我一般在导入贴图时把高度图的sRGB开关关掉确保它是线性数据。这一步很多人从没注意过但效果影响却很大——同样的Height Ratio值sRGB开和关呈现出来的立体度能差出肉眼可辨的级别。7. 最后再分享两个我常用的工作流小技巧视差材质真正好用的地方在于它可以和别的材质功能叠加使用产生一加一大于二的效果。比如配合Fresnel节点做边缘磨损在视差偏移后的UV基础上采样AO贴图或者配合Detail Texture在高频细节上再补一层微凹凸——这些组合不会增加额外的几何体但会让表面更耐看。另一个技巧是把视差材质的UV偏移结果输出到一个Customized UV通道供后续的贴图混合或顶点绘制使用。比如做场景地表时用Paint Layer Weight混合沙地和石板路沙地不用视差、石板路用视差混合权重图直接用偏移后的UV采样过渡区域不会出现两套UV错位。这个小改动能让地表混合材质和视差效果无缝衔接视觉上没有任何割裂感。我自己的经验总结下来视差材质是一个性价比极高的方案但也是需要花时间调校的材质类型——它的每一步参数变化都直接影响最终视觉。如果你之前只在教程里看过POM节点的接法建议拿一面砖墙的贴图自己从高度图导入到最终调参完整走一遍试过以后你就明白“太有用了”这三个字一点都不夸张。本文还有配套的精品资源点击获取