您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 Game艺视界 于 2022-3-21 21:55 编辑
本期内容
今天我们将讨论高级细节贴图,让我们开始吧上周我们讨论了细节法线贴图,我向你展示了这个岩石的例子,我们在岩石中添加了这个非常好的细节你可以在这里看到我们放大,即使主要纹理失去了它们的分辨率,我们仍然有细节,因为我们正在平铺这个额外的法线贴图。纹理在表面上获得额外的细节
在上一个视频结束时我们讨论如果我们正在制作类似角色的东西,而不是只有一种材质构成的岩石网格。那么如果我们的角色穿着牛仔布、亚麻布、 皮革和多种材料的服装 上周我们所研究只有一张岩石细节贴图,但是如果我们需要添加额外的细节贴图,则无法在一个地方使用一张细节贴图和另一个地方的另一个细节贴图
这就是我们今天要看的内容我想要做的就是向你展示错误的方法,然后我会进入正确的方法,所以我做的第一件事就是我继续我创建了,四个不同的细节法线贴图,让我们在photoshop中快速看看这里我们在photoshop中可以看到详细的牛仔布法线贴图。我有一个用于皮革的毛毡和一个用于亚麻的,这些细节贴图的目的是只是为了创造一些非常紧密的表面细节,在牛仔布中这些不同材料上发生的事情真的很接近。你可以看到法线贴图中有所有这些不同的小线环有这个好皮肤纹理继续然后在亚麻布上这些线的意思是当你接近你的角色的时候你想看看他们的衣服或者他们的各种材料是由什么组成的这些纹理不会被破坏
我们需要一种方法来混合这四种不同的纹理细节放在一起,然后将它们应用到基础纹理上。所以让我们切换到虚幻,我会像我说的那样向你展示,我将向你展示错误的方法,所以首先我已经创建了这个蒙版纹理,其中一种材料是红色,另一种是绿色,另一种是蓝色,然后另一个是在 alpha 通道中
所以这是我们的alpha通道,您可以看到我的蒙版在该区域的 alpha 通道中是白色的,所以我基本上只有四个不同的面具
你可以看到我已经将我的压缩设置设置为遮罩,因为它们就是这样,所以我在这里有我的红绿蓝和 alpha 遮罩 ,然后我带来了我的法线贴图我的牛仔布毡皮革亚麻布然后让我们看一下材料我创建的没问题
所以这是我的材料,这看起来有点疯狂,而且你绝对不应该这样做,这是如何不这样做的示例,所以我在这里有我的四个法线贴图每个都有自己不同的纹理样本, 所以我正在对所有样本进行采样,我在这里有一个乘数来表示它们应该平铺的频率,因此例如我可以将其设置为 8 并将它们平铺得非常紧密,如果我们查看预览在这里你可以看到这个细节在我们放大非常近的时候显示出来
让我们重新开始吧,因为我们不希望我们不想使用所有这些,所以我要在这里取样另一个纹理在这个样本中我要取样一个叫做纹理数组的东西
首先我需要解释什么是纹理数组,有点像一堆纹理而不是只有一个纹理贴图我已经制作了一个资产,其中我有多个纹理贴图在一个堆栈中,让我们继续创建其中一个我将在此处打开我的内容抽屉切换到纹理,我将右键单击此处并选择材料和纹理然后我将来到这里我要选择纹理二维数组 ,它给了我一个新数组,我只是将其称为我的布料阵列
然后我将打开它您会立即看到它是完全空白的,为什么是这样因为我还没有在堆栈中添加任何东西就在这里说源纹理零数组元素,这意味着我的堆栈是空的,我们知道我们使用了四种不同的纹理,我们使用的是牛仔毡皮革和亚麻布所以我要继续点击这里的添加按钮,然后添加四个插槽来放置我的法线贴图,然后我将继续将每个贴图添加到插槽中,所以首先我有牛仔然后是皮革然后是我的亚麻布,现在我有四个纹理
和我在这里的预览显示,有这些不同的切片垂直排列这并不是数组的真正外观,而是选择了unreal的方式来表示它实际上这里有四个纹理, 每一个都是正方形但我这只是显示了四个中每一个的一个小样本,这样我就可以看到 阵列中有不止一个纹理,如果我在生产中使用这种技术,我可能会考虑所有不同类型的字符和他们将拥有的服装类型以及这些服装可能具有的材料,我会为自己构建一个阵列, 其中包含我的角色可能拥有的所有不同类型材料的所有不同类型的细节,我可能最终会得到一个在这种情况下,一堆类似16 种不同材料的东西然后我可以将这个数组用于我游戏中的所有角色,你也可以为环境中的道具制作另一个数组。我会把东西分成不同的类别
回我的材质,继续并保存在这里我有我的纹理样本,我要输入我的布料阵列
到目前为止似乎什么也没做让我们继续将它连接到我们的普通你可以看到我在这里得到一个错误,它说纹理样本uvw输入需要纹理数组
所以我们需要一些 uv,所以我会继续添加一个纹理坐标节点并插入它我仍然遇到同样的错误, 它说纹理样本uvw 输入纹理数组样本需要什么我们知道这个节点给了我们uv但是 w 是什么 w 是它用来告诉我要采样的数组堆栈中的哪些项目的值,所以我需要做的是在此处添加一个附加项以便我可以附加一个值,以便我将保留按下一个键并单击 ,这只会给我一个浮点值这里我的值为零,所以我要附加它所以现在我的uv进入这里 ,然后这成为我的 w 值所以现在如果我将它传递到我的 uv 插座现在我得到一些显示牛仔布贴图
没问题如果我现在将此值更改为1 现在我可以看到我的法线贴图,如果我把这个值改为2现在我可以看到我的皮革 ,如果我现在将其更改为3, 我可以看到我的亚麻布,因此通过更改此值, 我可以继续查看我之前阵列中的所有不同纹理
我想切换到 unity 并看看如何在该游戏引擎中设置数组纹理你可以看到我在这里做了一些不同的事情,我把我的四个法线贴图组合成一个单一的纹理在photoshop中只需将它们每个都放在这样的网格中。这有时被称为图集纹理,所以我有牛仔布、毛毡、皮革 和亚麻布,现在我已经将它们组合成一个
接下来我要做的就是将它们组合成一个阵列,这样我就可以走到这里的顶部属性 ,首先它说纹理类型的地方我要选择法线贴图
然后纹理形状我要选择二维数组,然后它给我这些列和行的值以及它想要什么需要知道的是我在垂直维度有多少纹理这是2 ,然后我在水平维度有多少纹理这也是2
所以如果我来到这里的底部并点击应用
然后你可以看到它说1024x1024有四个切片, 所以我把它变成了一个数组纹理,就像我在虚幻中所做的那样,我现在可以使用这个纹理要在不同位置对四个不同的贴图进行采样, 但在unity中,我必须将这些纹理组合在一起形成一个图集纹理,以便将其转换为一个数组,我们先切换回unreal完成我们阵列材质 w 在这里很有价值, 但我真正想做的是我可以告诉它我想要什么,牛仔布在这里,毡子在这里,皮革在这里我想要能够定义我角色的哪些部分,不同的材料如何识别那我需要在 photoshop 中创建一个纹理一个地图或一个蒙版定义了我角色上不同材料的位置,现在我们回到photoshop中,我有一些东西看起来和我们之前用过的颜色蒙版很相似,但这个只是黑白的让我解释一下这里发生了什么,这里的黑暗区域是一种材料这些不同的色调或值中的每一种都是我希望不同材料出现的地方
你可能会问你是怎么做的决定对这四个不同的值使用哪种颜色。让我们在这里看看这个渐变我知道我有四个法线贴图,我希望能够在它们之间进行混合 ,所以我希望这些值代表我的四个不同的贴图所以我所做的是我把从黑色到白色的渐变分成四个不同的象限,最暗的,中间的两个,然后是最亮的我所做的是我选择了一个正确的值在每个象限的中间,所以这里我的值大约是31或32。这里我的值大约是 96。这里我的值像160 一样,所以我可以采样这些值并将。它们绘制到我的蒙版中,然后我可以使用这个蒙版来确定四个法线贴图中的哪一个现在应用为详细纹理,如果我要使用某些东西, 如果我要使用具有更多元素的数组。我需要拆分将我的梯度现在分成四个以上的值。我已经把它分成四个但是如果我有 16 然后我需要把它分成 16 并找到沿着梯度的值所以基本上在我的面具中,我将绘制16种不同的色调值或亮度阴影,而不是像我我现在所做的四种不同
好了,我们切换回uneral模式,我在这里创建了一个新的纹理样本对于这个,我需要找到我的布蒙版,所以在这里你可以看到我在这里有四种不同的色调,四种不同的灰色阴影它们决定了不同值的位置
但我想要什么要做的是使用它来替换这里的这个值,我知道如果我传递介于 0 和 3 之间的值 我将获得不同的法线贴图 但是这里的纹理在 0 到 1 的范围内,因此我要做的第一件事乘以3的值, 以便它可以在 0 到 3 之间变化,以便它可以在 0 到 3 之间变化
因此我将设置我的掩码乘以 3,现在我想做的下一 件事是我想要它四舍五入,因为我希望这些阴影中的每一个都代表一个 整数,所以我要添加一个圆形,这样第一个阴影将 四舍五入为第三个阴影 将四舍五入为两个,然后第四个阴影将四舍五入为3,所以每一个值不再是0和1之间而是 0 1 2和3,所以如果我现在将此值传递到我的 w 坐标中
您可以 看到我已经能够在这里使用我的掩码定义我的角色区域,皮革应该地方,亚麻应该出现的地方 ,这很酷,亚麻应该出现的地方然后对于最后一点触摸,我只需要将它与我的基本法线结合起来 这是我一直用来表示我的角色的基本法线贴图的法线贴图,你可以看到我有一个角色, 我一直称它为一个角色它实际上只是预览立方体,但这应该代表我拥有多个材质的角色,但你可以看到我保留我的基本法线,然后它们还与我的细节法线细节法线相结合我在这里也要做的就是乘以这个值, 让我们说乘以4只是为了得到一点点更紧密的细节, 以便我现在可以平铺法线。 在这部分结束了,但是不管怎样,你们可以看到是怎么做的而不是抽样一大堆不同的材质,我能够结合这些纹理组合成, 一个单一的阵列纹理并使效果更便宜
就像我之前说的那样 ,如果你愿意,你可以使用这些材料,我想我过去已经使用了多达16 个,而你将无法做到使用这种技术(下图中技术),因为纹理样本太多了, 但是在这里(第二种方案上图)你可以将它们组合成一个数组,你可以获得便宜得多的效果如此出色的技术好吧
让我们切换到 unity,我将向您展示如何在那里完成好了
现在我们是unity你可以看到我已经创建了一个非常相似的着色器,我有一个基础纹理,它代表我的角色的基础法线贴图我的布面具代表面具在这种情况下它看起来是红色的,那是因为我将它保存为纹理压缩格式,它只是将其压缩到单个通道中,在这种情况下它正在压缩它 进入红色通道, 所以你可以在这里看到
我从红色通道采样 ,然后我乘以 3 的掩码,这样我的范围就可以在 0 和 3 之间,然后我舍入那些我可以获得 0 1 的值从我的面具中取出 2 或 3,然后我使用面具中的 0 1 2 或 3 值告诉我的 2d 数组
我想要采样的法线贴图堆栈的哪一部分,然后对于我的 uv 坐标,我只是带来那些用我的 swizzle节点隔离 x 和 y,然后在这种情况下将它们乘以 2 ,这是我想要平铺细节法线的次数 然后我在这里采样我的法线贴图阵列我的布料 我使用这个节点来解包法线贴图
然后我使用法线混合节点将它与我的基础法线结合,
然后将它传递到我的主堆栈上的法线端口,让我们看看我们的预览在那里所以就像我在虚幻中所做的那样,我使用这个数组纹理只制作一个纹理样本,并且仍然能够获得所有这些不同的材料,所以再有时间来看看我是否在生产中使用它,并且仍然能够获得所有这些不同的材料,所以再有时间来看看我是否 在生产中使用它,我会自己创建一个一组法线贴图,并制作一个堆栈或一组法线贴图,这些法线贴图代表所有不同种类的布料、橡胶、金属和织物我的角色将使用这些贴图我的角色将使用这些贴图,然后我会制作一个数组并进行采样该数组在我所有不同的角色纹理中 ,对于每个角色,我会绘制一个定义不同材质的蒙版 , 来定义角色的哪个部分,由每种不同的材质组成,然后我可以使用该数组来制作每种材质类型
关于制作这个数组的一件重要事情是所有法线贴图都需要具有相同的分辨率,并且它们还需要具有相同的纹理格式,所以我不能做一个dxt1压缩另一个bc7压缩它们都需要匹配,因此它们的大小需要匹配,并且它们的压缩类型需要匹配,但是一旦我拥有该数组,那么我就可以在所有不同的字符进行采样我需要做的就是为每个字符绘制不同的蒙版以确定这些材料在角色上的位置, 当我靠近时我可以获得很好的紧密细节 学习了如何在unity中使用纹理二维数组节点,并学习了如何在虚幻中创建纹理数组并且您现在可以使用此技术使您的角色或道具近距离看起来更逼真感谢大家下周观看
|