UE5和Unity中-方向蒙版创建与使用【Ben图形/27】
UE教程蒙版Game艺视界原创 14264 0
实名

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

发布于 2022-3-23 15:11:55

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

x
本期内容
今天我将向您展示如何在unity和uneral中制作定向蒙版,上周我们讨论了位置数据,我向您展示了如何使用世界位置节点将纹理投影到网格上,但是这个投影有问题

e29d9071157acab4b6764c3ce87917db.png


因为它只是来自一个方向,所以它会被拉伸涂抹在两侧,所以今天我将向您展示如何创建一个定向蒙版,这样我们就可以隐藏拉伸的区域和只需在看起来不错的区域应用此纹理

所以让我们在这里切换到一个新的着色器创建一个定向遮罩,我们需要做的第一件事是调出法线向量在我们的例子中,我们将使用顶点法线,但这也是可能的使用像素法线来制作每个像素的蒙版而不是每个顶点的蒙版

266b80ff736c131f03de121adc1041c8.png


好的,这是我们的正常数据,这是指向我们的模型面向的方向,所以如果我们的模型朝上,如果我们的模型面向侧面,您可以看到它在顶部是绿色的。你可以看到这里是红色的所以我们的法线指示了方向我们的模型面临的问题,但这些数据存在问题,并且它既是正面的又是负面的,所以如果我面向右侧,您可以看到它是阳性的,但如果是面向左边这里是黑色的,这意味着它是负数据,我不想在我的面具中出现负面数据

所以为了解决这个问题,我要添加一个绝对节点,我认为我们拥有什么绝对节点之前谈过这个,但它把负数变成正数所以你可以看到这里在这边是红色阳性的地方,它也在去这边红色或正面

好吧,我们需要做的下一件事就是将其锐化一点因为现在非常模糊数据非常流畅从一侧到另一侧,但我们需要增加面具的对比度,所以我要添加一个力量节点,将此数据提升到幂默认情况下,在 unity 中,我们的幂在这里被提升到2 的幂,你可以看到它已经开始变成多一点专注或敏锐你可以看到我有明确的绿蓝红区域

嗯,但我要提高一点,我要提高到取而代之的是 8 的幂,现在你可以看到我已经很专注了,让我们继续吧

链接到颜色和自发光我们可以在预览中查看它,现在如果我们很好地旋转它,实际上如果我围绕它旋转它什么都不做,因为我把它投射进去在世界空间中,让我们暂时将法线切换到对象空间相反,这样法线将更多地粘在表面而不是相对于世界,所以你可以看到我现在可以旋转面具跟随

所以我有一个红色的面具从左到右,我有蓝色面具从正面和背面来,我有一个绿色面具来自顶部和底部,所以如果我想我可以停在这里

我可以使用这个电源节点来制作这些面具更清晰,只是来自他们所指的一个方向

如果我最后在这里添加一个拆分split现在我可以只隔离红色面具,现在我可以从侧面投射




或者我可以只隔离绿色面具,这个可以让我投射

或者如果我只隔离蓝色面具,它会允许我只从正面和背面投射太酷了,我有一个面具来自一个特定的方向,我可以用我的投影纹理但是我今天想做的是去比这更进一步。我想向您展示如何制作填充您可以在这里看到的空间的面具在权力的预览笔记上,我这有空白的黑色空间不使用,接下来我想向您展示的是如何使用将这些蒙版移入,以便它们填充所有这些空的空间

所以让我们继续这样做我要把我的电源节点带到这里,我要做一个点积与电源节点,我只是要给它一个点积的结果,结果是无论我的面具是纯色的,无论是红绿色还是蓝色,它都是会是白色的,它会变成黑色是黑色的,所以现在你可以看到我有一种黑色和白色

现在如果我想让面具一直走到边缘,我能做的就是接受这种力量的结果。并将其除以点积的结果所以我要在这里连接这个点积的结果。进入我的 b 插座这让我可以做的是得到一个面具,每个面具的每个方向来右到其他两个蒙版方向的边缘。所以我已经填补了空白我能够创造一个面具右到边缘,我可以在这里使用这个电源节点控制这些边缘的锐度

所以如果我想要一个可能有点我的电源节点到五,现在我有更多的混合所以让我们让我们将其连接到基色和自发光中,以便我们可以在我们的主要预览中看到它,所以现在你可以看到我有这些

这些更方形的面具他们来到彼此的边缘,并在那里相遇然后他们有这些混合区域,我能够使用这个电源节点控制面具有多模糊或清晰,如果我希望它们非常锋利则将其提升到力量

我可以把它提高到 64 左右。现在我的我的每一个面具都立刻出现并对接另外两个面具,所以我有这些非常明确的和投影的特定区域所以现在我能做的就是带上这些面具

所以在这里我的结果来自我的除法节点,我将把它连接起来进入我的分裂,现在我可以像我之前说的那样使用绿色从顶部,蓝色用于从正面和背面突出,红色用于左右侧

回到这个例子,我们从上周开始使用,我正在投影这个纹理
如果我从顶部投影纹理,因为我正在使用我的位置的 x 和 z 分量,所以我只是将复制这些节点并将它们粘贴到我的我的投影着色器在这里所以我会打开它,让我们连接我们的纹理结果进入颜色和自发光。现在我再次投影了纹理,但它正在涂抹就像我说的那样因为我在投射从 x 和 z 我使用顶部投影,所以如果我想要为了掩盖顶部投影,我需要使用绿色所以在这里我将采用投影纹理的结果


我要添加一个乘法节点,然后我要乘法我通过绿色通道投影的纹理我的面具,所以,无论是顶部还是底部你会从这个面具上看到白色,而在其他地方我们会看到黑色,所以如果我连接这个结果现在进入我的主堆栈,我们将看到的是我仅从顶部和底部投影纹理

在其他地方我都把它遮住了,所以它是黑色的,所以我有我的投影纹理显示在未拉伸的位置,但是它被拉伸的地方我已经能够掩盖那些区域所以拉伸并没有显示这些边缘,对我来说有点锋利需要我要把它降低到现在你可以看到它更像是八的幂,有一个很好的淡出边缘没问题,所以这就是你制作的方式unity方向蒙版

让我们切换到虚幻,我会告诉你如何在那里做就对了,所以我们在这里是虚幻的
你可以看到我在 unreal做一些和unity非常相似操作,所以这里是我的顶点法线进来,你可以看到它是世界空间中的顶点法线

我再一次取世界法线的绝对值,这样我就摆脱了我的法线的负值然后我有一个电源节点,在这个如果我一次又一次地将它提高到 8 的幂这是在控制我面具的清晰度

然后就像我在 unity 中所做的那样,我正在使用点积这个电源节点在这里并用一个点值1.1.1,所以如果我们把它连接成基色,你可以再次看到我在我的面具是顶部的地方变白。然后我除以我原来的掩码值通过它的点积,这样我就可以制作那些定向蒙版来到每个人的边缘其他好吧

那么我可以在这里使用拆分组件节点将面具分解成各自的方向在虚幻中有点不同

因为虚幻是z向上,所以你可以看到上下方向掩码在这种情况下是蓝色的,然后y 方向为绿色,x 方向为红色所以这是我正在用我的纹理做的投影

让我们来看看这样你就可以看到我正在投影我的纹理自上而下,就像我在unity中所做的那样,我这样做是因为我使用我们上周讨论的绝对世界位置的 x 和 y 值但正如我在我们得到这个之前展示的那样伸展

所以我们需要采取这里的蓝色通道,在虚幻的情况下顶部和底部并乘以我们的蒙版,乘以我们的顶部和我们的纹理底部定向遮罩,这就是我在这里做的所以我要把这个乘法的结果连线你可以看到我已经把它屏蔽了,我现在只投影纹理在顶部和底部以及侧面。拉伸发生的地方我们将它掩盖起来所以我们不是马上开始拉伸。可能会问如果我也想从侧面投影,而且我还想从称为三平面的前进行投影。从顶部和侧面前面投影纹理,这是我们做的一个相当普遍的技术当我们不想使用模型上的 uv 坐标来应用纹理,我们可以只使用模型的法线和位置数据来投影一个将纹理贴到模型上,这是一个非常酷的技术

我们今天不谈论它,我要保存三平面投影下周我们可以多花一点时间的解释。
我们已经讨论了如何投影我们的纹理以及如何根据投影方向屏蔽纹理,我们已经准备好这两个元素,我们现在准备好讨论如何同时向三个方向投射,这样你就可以看到我们正在建立我们的复杂性。
我们从位置开始然后我们讨论了基于正常的掩蔽,然后下周我们将讨论如何在所有三个方向上进行投影并创建三平面投影,并且还要解释什么样的可以使用三平面投影的东西


         

本帖被以下画板推荐:

微信公众号:Game艺视界
使用道具 <
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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