置换深度解析!
14145 1
实名

通过了实名认证的内容创造者

发布于 2024-8-15 12:00:53

您需要 登录 才可以下载或查看,没有账号?注册

x

凹凸贴图、法线贴图、置换贴图以及矢量置换贴图,这些大家肯定在制作项目的时候遇到了,虽然在网上关于这些技术的信息有很多,但是对于它们之间的区别会有些混淆,这也是很正常哒~小编近期发现了一位VFX艺术家所分享关于贴图时注意问题的干货!哝,就是下面这一位!


2d5c9157e52a38b9fcf6335e321a0e37.png

Andreas Mischok德国斯图加特艺术家&技术总监Pixomondo的纹理艺术家今天呢,咱们就讲一讲他所分享的内容,各位,赶紧收藏好哈~

凹凸贴图、法线贴图、置换贴图以及矢量置换贴图,这些都是用来增加3D模型表面细节的技术,分为两大类称为“真置换”和“假置换”。这也是这两类方法的核心区别所在。“真置换”会移动顶点,所以模型的几何结构也会跟着改变,细节更加清晰写实,但是,这种改变顶点的方法会增加渲染时间;“假置换”不会移动模型表面的顶点,不改变模型的几何结构,所以相对于“真置换”,这种方法渲染速度更快。当然了效果不会很真实。总的来说呢,这两种方法都是为了让3D模型看起来更真实,但“真置换”是通过真正改变模型的几何结构来达到目的,而“假置换”是通过模拟视觉效果来达到类似的结果。
9729312db86f42a363a871abb6bf8722.png
注意:高度贴图(Height-maps)在这里没有提及到,是因为“高度贴图”描述的是信息如何存储的,而不是如何应用于网格的。它可以被用作凹凸贴图或是位移贴图。正式进入文章之前,我们需要先了解一下“假置换”是如何工作的?首先快速了解一下路径追踪(Path-tracing),路径追踪是一种渲染技术,它模拟光线在场景中的传播方式,简单来说,光线从光源出发,经过物体表面反射,最终到达相机,或者光线可以从相机发出,反射直达光源。这两种呢,无论采用哪种方法,都不会影响接下来我们要讲的效果。反射光线(reflected ray)的角度,是根据入射光线(incoming/incident ray)和表面法线的角度来计算得出的。这个计算基于向量数学,是渲染的核心。法线则是一个与平面垂直的向量,直白一点来说,模型上的每个面都是平面的,因此每个面上有一个法线。

注:实际上,多边形并不总是平面的。为了解决这个问题,渲染引擎会将所有的多边形,包括四边形,都分割成三角形,然后计算所有构成面的三角形的平均法线。这样就可以更准确地模拟光线的反射效果了。法线贴图(Normal-maps)之所以这样叫它,是因为它们能够在每个像素级别上存储自定义的表面法线(Surface-Normal)。这样一来,即使不改变模型本身的形状,也能自由地控制光线的反射方向。凹凸贴图(Bump-maps)会在渲染时将高度信息转换为表面法线。这就意味着从光线的角度来看,法线贴图和凹凸贴图产生的效果是一样的!

通过调整表面法线的角度,可以模拟出真置换效果,虽然这样做看起来不错,但实际上并没有改变模型的形状,所以还是会有不足之处。不论是使用凹凸贴图还是法线贴图,还是其他的置换贴图,或者说,这些贴图是通过烘焙生成的还是提前做好的,它们的效果都差不多。这是为什么呢?因为这些贴图都源于假置换,只是让它们表面看起来有所不同,并没有真正改变模型的形状。而真置换则是直接改变了模型的实际形状。对照明的影响当观察示例时,首先注意到的一点可能是缺少阴影(shadows)。真置换不仅会影响基础网格所投射出的阴影形状,还能创造出全新的形状,从而产生完全新的阴影。这种情况通常在自阴影(self-shadowing)中最明显,同样也可能投射到别的物体身上。真置换会让物体像现实世界那样产生自然的阴影,而假置换没有这种效果。

看下面这个简单的渲染图,图里用两种方法展示了捕捉光照的大致位置。当用假置换后,物体本应该有的影子却没有显示出来。虽然能看出光的方向,但物体的真实阴影不见了。

再看看这个例子,用一个简单的平面来做出一面砖墙的样子。当使用真置换时,砖块之间的缝隙会产生自然的阴影,让墙面看起来有层次和深度。但是当使用假置换时,这些砖缝里的阴影就没有了,所以整个墙面看起来就很平,没有立体感。

缺少阴影并不是真置换和假置换之间唯一的区别。还有其他的区别,我们一块说说。当使用真置换时,物体表面变得更加复杂,有更多的地方可以让光线反弹。而在使用假置换时,由于没有增加实际的表面积,一些本应较暗的地方看起来会异常地黑,这在视觉上看起来就不自然了。

在展示金字塔投射阴影的渲染图中,增加了一下图像的对比度,和没有经过这种处理的原始渲染图进行参照比对,这可以更清楚地看到缺少光线反弹的效果,本应有更多细节和层次的地方显得过于平坦。

另外,还有一个与光照有关的效果,那就是物体如何接收阴影。
如图所示,红色的部分代表阴影。通过比较球体在不同表面上投下的阴影高度,可以看出阴影的形状只受真置换(True Displacement)的影响。

在平面上,无论是使用真置换还是假置换,都会让表面呈现出一种简单的波浪形状,真置换不仅让表面起伏,还会让阴影随着起伏变化,从而让整体看起来更立体。

到现在为止提到的所有视觉效果,比如阴影的深浅和光线的反弹等,都会受到光线入射角度以及相机观看角度的影响。当光线和相机的角度一致时,一些视觉效果比如阴影变化就会变得不太明显或者消失了。

此外,随着光线和阴影的变化,物体自身的遮挡会让阴影逐渐消失不见。

为了让整个场景看起来特别有趣和生动,阴影及其产生的形状是非常重要的。现在来看最后一张渲染图,有没有发现其他的问题?即使使用法线贴图能够重现相同的亮度值,但金字塔看起来还是很扁平。这是由于接下来要讲的另一个效应造成的,请大家继续往下看!视差透视里有一个重要的概念叫做“视差”,就像是当移动头部或者相机的时候,近处和远处的物体好像在相对移动。就像观看一幅立体画一样。这种现象不只发生在单独的物体上,在三维空间中的任何两个点都会发生这样的相对移动。所以当使用真置换来改变网格形状时,也会影响到这种视差的效果。

为了更容易理解,在三个物体上用红线标出相同深度的地方作为参考点。蓝线表示被置换效果推下去的部分。当从正上面看的时候,真置换和假置换看起来差不多,but,如果换个角度,情况就不同了。从侧面看时,低模/假置换上的蓝线会保持均匀的间隔,真置换的网格上的蓝线看起来就会有移动的感觉。如果再稍微倾斜一下相机,后面的蓝线可能会完全被中间物体上的红线挡住,看不见了。如果把蓝线往上推,这个效果就会反过来,前面的蓝线几乎会完全遮挡中间的红线。

那视差映射是什么呢?视差映射(Parallax-mapping)是一种让游戏画面看起来更加立体和真实的技术,它是通过对渲染像素进行二维扭曲应用到渲染像素上,而不是改变实际的模型形状来实现的。虽然说可以让画面更加真实,体验感更好。但是也会增加计算机处理图形时的工作量,对性能产生影响。

说个题外话,让大家在干货中轻松点,有些艺术家像Patrick Hughes就会利用这种视差,创建非常有趣,并且视觉效果超惊人的作品!给大家一块瞅瞅~





90°角虽然使用真置换(True Displacement)可以创建90度的垂直偏移,但对于假置换(Fake Displacement)就不行了。理论上,垂直角度可以储存在法线贴图(Normal-maps)中,但这样做其实没有意义,因为在低多边形模型上这些垂直角度并没有对应的区域。下面图中的绿线代表基础网格表面,红线代表要烘焙到网格上的高模。从低模中出现的渐变显示了最终法线贴图应有的值。除了1区和2区之间垂直角度在基础网格上没有宽度,无法对应以外,高模的每个表面角度都可以对应到低模的一个区域。凹凸贴图(Bump-maps)也有同样的问题,因为它们在渲染时会被转换成表面法线。

下面的图展示了用于烘焙法线和置换的高模的侧视图,


这个图是使用烘焙好的纹理进行渲染的结果。

就像上面所看到的那样,当使用法线贴图来给低模添加细节时,大多数角度都可以正确地表示出来,即使这些角度在低模上只占很小的区域。但是,对于90度这样的垂直角度,由于低模上没有足够的空间来表示这个角度,所以在法线贴图中这个角度就消失了。另外,即使使用真置换贴图(True Displacement)来增加模型的立体感,通常也不建议用它来创建大的角度,因为这样做会导致其他纹理上的像素发生拉伸变形,对后期的工作很不友好。轮廓当只看模型的轮廓(silhouette)时,假置换(Fake Displacement)不改变模型实际形状的特点就非常明显了。即使是在模型的一些部分重叠的地方,比如鼻子遮挡了脸颊的一部分,这种重叠也不会像真置换那样在轮廓上产生变化。通常,这种效果会在两种情况下表现出来:1.本应平滑的轮廓变得生硬、块状。2.有很多细节的部分,比如头发或衣服的边缘,突然失去了这些细节。
简而言之,假置换不会真正改变模型的形状,所以在某些情况下,模型的轮廓会显得不自然或失去细节。



次表面散射使用次表面散射(SSS),很有可能发现假置换的另一个缺点。次表面散射(SSS)计算会随机化光线穿过物体时的角度。这意味着这种效果更多地依赖物体的厚度和实际形状,而不是表面的角度。在使用假置换的例子中,之所以能看到某种效果,原因是从暗区到达相机的光是散射光线,亮区则是所有光线的混合。这给暗区了一个红色调,但这并不是真实的效果。简单来说,次表面散射会让光线在物体内部随机反弹,因此它更看重物体的真实厚度和形状。虚拟置换不能改变物体的真实厚度,所以在使用次表面散射时,它不能产生真实的效果。

黑色区域或拉伸的反射不知道大家有没有遇到这样一个问题,当使用假置换时,在某些特定的角度下,光线看起来像是从物体内部反射出来,这看起来不自然。

这是因为不是在渲染一个透明的表面,所以这种效果是没有意义的。为了处理这种情况,不同的渲染器会有不同的解决方法。这些方法包括:消除光线用不同方式重新引导光线忽略有问题区域的法线贴图
Arnold是这类渲染引擎之一,它会直接“消除”那些有问题的光线,这会导致部分反射呈现黑色。相比之下,真置换会使光线在物体表面多反弹几次,从而避免这种不自然的现象。

其他渲染器,比如Blender的Cycles,会将那些看起来不自然的光线重新导向为平行于低模表面,这样做的目的是找到最接近真实情况的光线路径。这种方法可以防止光线错误,但会导致相邻的许多像素接收到相同的反射方向,结果就是我们看到的反射看起来像是被拉伸了。

当想让3D模型的表面看起来更平滑时,可以使用一种技术,通常被称为“软化边缘”(softedae)或“平滑法线”(smooth nomma)。这个名字可能会有所不同,但原理是一样的。具体来说,这项技术通过在模型表面的不同点之间进行插值处理,使表面法线变得更加平滑。这样处理后,即使模型本身的几何形状没有改变,它的外观也会显得更加光滑和自然。

渲染器处理平滑法线的方式就跟处理假置换差不多,当给一个立方体加上平滑法线,那些不平滑的角度会因为表面法线的变化而变得更平滑。有些人会很奇怪,不知道为什么,Arnold处理平滑法线的方法跟处理假置换不一样。Arnold它不是直接把那些问题光线“干掉”,而是在光线需要穿过物体的时候干脆假装没看见那些平滑法线,就像它们完全不存在一样。

实际上这个问题并没有看起来那么严重,在这次渲染中使用的纹理非常夸张,通常情况下,纹理越大,问题就越明显,但在实际应用中,不太可能需要用到如此强烈的置换(无论是真实的还是假的)。实际的渲染比简单的镜面反射要复杂得多。如果在渲染非常闪亮的镀铬材质时,需要注意这个问题。但是一旦引入了一些镜面粗糙度或者是非金属材质(比如塑料或玻璃),这种效果就会开始减弱,并逐渐消失。所以这个问题不必过于担心。

表面越粗糙,反射光可能的偏移范围就越大。

反射角度的随机化模糊了反射,导致较少的光线/采样获得不合理的角度。这本身并不能完全解决问题,仍然会看到反射质量上的差异,但不像之前那么明显了。

介电材质会将大部分照射到它们表面的光以各种不同的角度散开,这就是漫反射,只有很小一部分光是以镜面反射的形式反射的。这意味着即使表面完全是光滑的,这个问题也几乎不会被注意到。看看下面这些图像是在Arnold中渲染的,单独看镜面反射的时候,仍然可以看到黑色区域,但在最终渲染中这些区域几乎看不出来。

曲面细分上面的问题讲述的都是关于假置换的,咱们接下来就讲一讲真置换的一个缺点。真置换只能根据模型表面的多边形来增加细节,为了获得更多细节,需要对模型表面进行细分,但这会增加模型的复杂度,使场景变得非常复杂。但现在的渲染引擎都带有一个功能,可以自动添加那些几何体无法支持的细节作为假置换。这个功能可以在不需要过多细分的情况下,也能让模型看起来具有更多的细节。(在某些渲染器中,这个功能默认是关闭的,所以一定要检查一下。令人烦恼的是,目前还没有统一的命名标准。例如,Arnold称之为Autobump,而Cycles则称之为Displacement + Bump。)为了理解这个功能,请看下面的对比图,这两个网格都被细分了三次:

但这个功能也有bug,例如, not freezing/applying的缩放,使用Autobump与矢量置换一起也可能有些困难。特别是在刚开始使用这个功能时,通过创建对比渲染来确保一切都按预期工作是一个很好的做法。可以创建两种渲染确保两种方法的结果是一致的。:1.使用Autobump结合细分数量。2.不使用Autobump,但使用非常高细分数量的模型。
有一个问题需要注意,在某些渲染器中,使用Autobump与次表面散射(SSS)着色器需要单独启用。使用Autobump添加的细节仍会出现假置换的问题,对于非常细小的细节,如毛孔,这些问题不会很明显。结论真置换和假置换都是提高模型真实度的好方法。纹理越细致,缺陷就越明显。所以,无论使用哪种方法,都要尽量用基础拓扑捕捉细节对于使用假置换是很有必要的,对于使用真置换也很重要。如果遵循这个点呢,那么就这两种方法其实可以达到相同的效果。不信?下面看看,能分辨出哪个使用了真置换,哪个使用了假置换吗?

具体情况还得具体分析,这是一个质量和性能之间的平衡。1.制作背景:如果正在制作背景资产,使用真置换可能会减慢渲染时间,但如果场景包含大量资产的话,这可能就不值得了。2.制作角色:如果制作主角资产,使用真置换是最佳选择,因为它能提供更真实清晰的结果。
当然了,也有例外。如果时间很紧,使用假置换代替真置换可以加快渲染速度。省点时间。总之还得看大家的需求,根据自己所创建的东西来选择使用真置换还是假置换。今天的学习时间就到这里结束了!希望今天的文章对大家的工作学习有所帮助,各位自由活动吧~原文地址:
https://www.artstation.com/blogs/andreasmischok/jzWz/fake-vs-true-displacement-part-12https://www.artstation.com/blogs ... lacement-part-22END

本帖被以下画板推荐:

内容主要涵盖影视特效,CG动国,前沿CG技术,作品欣賞
使用道具 <
游戏zx  发表于 2024-8-18 10:19:33  
2#
(⊙o⊙)…
回复 收起回复
使用道具
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表