UE5和Unity中-三平面投影创建与使用【Ben图形/28】
UE教程投影Game艺视界原创 15435 0
实名

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

发布于 2022-3-23 15:21:04

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

x
b64e78dc188da7f93a16111abbb1eb9.png

本期内容
在今天的视频中,我将向您展示如何在虚幻和unity中进行纹理的三平面投影,让我们开始吧
首先两周前我向您展示了如何使用对象作为纹理坐标来查看您的纹理,然后上周我向您展示了如何使用顶点法线创建蒙版以仅屏蔽您想要的投影部分,这两个视频是理解我们的真正关键

524bfaaa24f0685bdefd9b878140c4e6.png


好的,让我们首先深入讨论三平面投影通常当我们应用纹理坐标时,或者通常当我们将纹理应用到模型时我们使用纹理坐标,但我们今天要做的不是这样做,而是将纹理投影到 x 和 y 的模型上和 z 方向
现在我们正在查看示例这就是我们上周所做的我们正在查看一个投影示例从 y 方向或从顶部和底部的纹理

我们今天要做的是扩展它并从正面和侧面投影纹理为了做到这一点,实际上有两个,我们可以用不同的方式来做到这一点有一种非常便宜的方式,它有一点人工制品还有一种更昂贵的方式,看起来非常漂亮,但成本更明显

我们将首先看一下廉价的方法,然后我将向您展示如何使用更昂贵的方法,因此为了使用更便宜的方法,我们要做的是为顶部投影、侧投影和正投影创建纹理坐标然后我们将使用这些坐标来查找我们的纹理

让我们开始吧,这里我们有我们的位置我们的顶点位置 我们有一个顶部投影我们只通过取 x 和 z,来获得我们的顶部投影 顶部投影是y 轴上的投影,

接下来需要的是 x 轴上的投影,我将在此处添加另一个swizzle节点,任何人只要您想在轴上投影就可以隔离其他两个轴,我想在 x 上投影,这意味着我需要隔离 y 和 z,使用 y 和 z 位置会给我一个在 x 轴上的投影,类似地用于投影 y 轴我需要x 和 z 轴的投影,然后在 z 轴上投影,我需要 x 和 y,这些将成为我的纹理坐标我需要
我要在 x 中y和z投影,现在我需要做的是将它们混合在一起,我要添加一个lerp节点,首先我们要在 x和 y 之间混合

这里是我们在上周的视频中创建的蒙版如果我们看一下这个,你会看到我们有一个用于 y 的掩码它是绿色的,一个掩码 x 是红色的,一个蓝色的 z 掩码将掩码不同的通道连入lerp的T中,然后我们将采用它的结果并进行另一个混合




我将添加另一个 lerp 节点,我们将在它和我们的 z 投影坐标在这里,因为我们要抓取我们的蓝色面具,这将给我们的是坐标,从侧面和正面的顶部投影,让我们将刚刚创建的这些新纹理坐标插入到我们的纹理样本中,插入到我的主堆栈中,这将给我们的是从顶部和正面。但你可以看到这里的边界周围有一些失真

让我们修复一下,你从我们的面具中可以看到的是我们的投影之间有混合区域。我们有这个有点紫色的区域,我不知道浅蓝绿色,我们在绿色和蓝色之间混合以及我们正在使用的方法,我们通过混合纹理坐标来做我们的投影纹理坐标,并没有真正混合它们并不是真正的lerp。我们需要做的是在我们的蒙版之间创建一个硬截断。我们要这样做添加一个圆形节点,这样我们的面具就可以有一个锋利的边缘,我们要在红色、蓝色和绿色之间圆形,使我们的面具有一个锋利的边缘

然后还有一个这里有更多的人工制品这就是三个面具聚集在一起的区域,有一个区域面具的形状不正确

我要解决的方法是提高到64 的幂,然后将使我们的投影达到一个很好的紧凑点,而不是那个奇怪的三角形工件好吧,现在我们有了我们的三平面投影,我们从侧面和正面的顶部进行投影,嗯,这效果很好,除了我们这里有这些接缝和你可以看到。有什么办法处理接缝?有一种办法但是比较昂贵。这是一种廉价的方法,但它也给了我们这些接缝

为了修复接缝,我们需要做的是对我们的纹理采样三次,然后我们需要在我们的纹理样本之间混合而不是在我们的坐标之间混合,我们在三个投影纹理之间平滑混合这非常酷

我们在蒙版之间有这些漂亮的平滑混合区域,就像我说的这种方法有点贵,因为我们正在做三个纹理样本而不是一个。如果我们使用所有三个材质纹理并且我们对它们中的每一个采样三次这突然变成了九个纹理样本

因此这种方法可能很昂贵,如果您可以使用另一种方法。即您只是在坐标之间进行混合,您应该尝试这样做如果可以,但如果这些接缝在你的应用程序中太明显,您可能想改用这种不错的混合方法,还有一件事我忘了展示,那就是通过添加纹理,可以控制纹理在每个维度中平铺的次数在这里,我将添加一个乘法以增加我的位置数据的大小,如果我将乘法插入这里的三个 swizzle 节点,现在您可以看到它会平铺两次。然后在此处进行乘法运算我输入的任何值都是我的纹理在一米投影的一米空间中重复的次数

还有一件事我想告诉你 unity 有一个非常酷的节点,叫做triplaner它和所有这些东西做的事情完全一样,除了我们只是在一个单一的地方做它节点,如果我在这里选择我的鹅卵石纹理等一下我们把它平铺了

几乎完全相同的东西,因为这里面有个内置三面投射节点,我不必精力这些节点,如果你想做这个版本。你只是混合纹理坐标你可以通过自己创建图形来实现就像我刚才做的那样

让我们切换到虚幻,我将向你展示如何在虚幻中进行三平面。我们在虚幻中,我们将在上周停止的地方,继续我们正在谈论为定向投影蒙版创建蒙版。这就是我们在这里得到的,然后在这里我们得到了我们的纹理投影他顶上,我们用我们的投影乘以我们的遮罩,以摆脱从侧面涂抹的投影部分,让我们继续将其变成我们的三平面投影,以便像我们在unity中所做的那样做到这一点我们需要在这里占据我们的位置

我们需要一个 x 位置y 投影位置和z投影,为了做 x 我们将采取 y 和 z ,好吧,这些是我们的三组纹理坐标

我们要添加一个 lerp 节点让我们在 x 投影和 y 投影之间混合,我们将把 y 在它们之间混合我们将采用我们的蒙版的 z 组件在它们之间混合,然后我们将使用它作为我们的纹理坐标 dinates我们最终在这里有一点失真

开始时我们仍然有我们的蒙版,它们之间有混合区域我们需要加强这些而不是将它们提高到 8 的幂,我们将把它们提高到64 的幂以收紧它们

然后我们可以通过在此处添加圆形节点来消除这些边界伪影,但我们最终会在我们的模型上出现这些接缝,如果我们不想要这些接缝我们可以用稍微慢一点的方式来完成

首先采样纹理,然后在纹理纹理之间混合我将在这里获取我的纹理样本并复制它几次分别指定不同的通道

现在我混合了所有三个纹理但我仍然有接缝,我需要调整我的方向蒙版,不是提高64幂

我们只是要把它提高到 八的幂,而不是四舍五入,我们只是要摆脱round这一节点,将使我们能够拥有一个带有这些漂亮平滑混合区域的面具,完全摆脱了我们的接缝

我们已经完成了我们的三平面投影,我们分别在x、y、z、中投射了纹理根据我们的方向蒙版将它们混合在一起




本帖被以下画板推荐:

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

本版积分规则

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