Mip Mapping(Mip贴图)是什么如何工作?以及与纹理填充的关系!如何掌握它...
Game艺视界原创 15360 0
实名

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

发布于 2022-4-27 00:01:44

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

x
88d8c8d9562edb6be3171b7c67a31040.png
         
本期内容
我们将了解映射的工作原理以及在 UV 编辑器中用于纹理填充的最佳设置,正确的填充是任何好的 UV 都必须做的所以让我们开始吧!

首先我们了解下什么是Mip Maps贴图及其纹理填充的关系!
在UV编辑器中mip贴图是包含在纹理中的一系列图像,每个图像都是同一图像的分辨率逐渐降低的表示,这就是mip贴图的外观mip贴图中每个图像的高度和宽度都是二的幂并且比序列中的前一个图像小



因为多个图像被打包到一个纹理中,然后被压缩以节省磁盘空间是的这是非常有意义的,所以使用了精美的Mip贴图用来来提高渲染速度,减少远离相机或倾斜角度纹理上的锯齿伪影

远离相机或倾斜角度的纹理非常令人困惑所以让我们看看这一点在八猴里,基本上我在这里应用了我的纹理为纹理生成的 MIp 贴图将会发生什么。它将以倾斜角度切换到较低分辨率的纹理

随着相机离物体越来越远如你所见我缩小了一切一切都很好没有发生混叠纹理,看起来很正常实际上它变得模糊随着它离眼睛越来越远,这是为了模拟现实世界的工作方式

所以当你看很远的东西时,基本上是在现实世界中它不清晰和混叠。就像跳舞和闪闪发光一样随着事物离您的眼睛越来越远它会变得模糊,因此为了在视频游戏中模拟这一点,我们使用了这种称为MIP mapping的技术现在看看当我关闭 MIP 映射时会发生什么在八猴在贴图齿轮中设置

你会开始看到更多的图案一切都开始闪烁看起来,真的很糟糕然后看看这有多糟糕,如此遥远的物体显然是最糟糕的闪烁、条带和锯齿等等

显然这不是你想要看到的,所以解决方案就是想出这个想法加载更小的纹理,作为对象随着对象远离相机而在更小的纹理之间混合,在这里看到所有闪亮的东西我只是要让他们使用Mips你可以看到它已经很流畅了(开启与关闭效)一切看起来都很神奇现代游戏技术是最好的

你可能不知道但可能你做过的每个纹理都有MIp,大多数渲染引擎会自动生成 MIp maps当您将纹理导入到诸如 unreal 或 marmoset toolbag或unity或 Maya 之类的程序中时,这在大多数情况下都发生在幕后,因此在现代游戏时代您真的不需要担心这一点,但你确实需要了解它们才能在 UV 编辑器中正确设置纹理填充设置,如果你想用 MIPS 查看你的纹理是什么样的你可以下载ps的dds插件

让我们去做一个文件另存为在你安装插件后,我们把它放在你想选择的任何地方DDS格式在这里它会调用这个测试,所以我可以找到它然后它会弹出

你想说生成 MIPS 显然没问题,然后保存好关闭它

然后我只需要去打开那个文件就可以了这里的粗糙纹理,所以我只是要把它拖进去它会在这里弹出这个选项框,你想默认情况下可能会关闭

你想打开它然后这就是你的实际纹理在游戏引擎中的样子或在诸如marmoset工具包之类的渲染引擎之类的东西中,您基本上已经在这里获得了2 K x 2 K图像的源图像,然后它会自动进入并为您缩小这些家伙中的每一个,因此具有以下功能所以基本上我每次都是一半所以你得到 2K 1K 512k  256K 128k等等。到1个像素这就是整个系统的方式

当你离它越来越远时实际上会模糊你的纹理以修复,当您将纹理导入虚幻引擎时您的纹理会被压缩并添加MIP,现在我们了解了mip mapping让我们看看它与纹理填充的关系,纹理填充的含义是UV 壳之间的空间以及多少,例如在一个 2048 x 2048 的纹理如果我布置v并将纹理填充设置为 4 个像素每个UV壳将与它旁边的壳相距 4 个像素,纹理填充的目标是尽可能在 UV 壳之间有这个最小的空间

原因也就是说如果您将外壳添加得太远,您会失去纹理的分辨率我看到一些艺术家的填充很糟糕我见过人们使用 32 像素的填充来打开 2k 纹理上的道具这太疯狂了,在进行适当的 UV 布局之前就在填充中丢弃如此多的分辨率

我们看下maya中uv编辑器进入选项框在这里

让我们在这里进行重置我只是将纹理贴图大小设置为2k

然后在这里您可以控制外壳之间的距离:Shell Padding


控制uv外壳到象限之间的间隙:Tile Padding



所以当你在游戏行业工作时纹理分辨率是黄金,就像你总是试图获得可能的最高分辨率。我们进入视图设置

然后你想要进入选项在此处的框重置为默认值,然后您可以打开已用 UV 空间的百分比,这是超级强大的然后点击应用,在这里它会告诉您使用了多少 UV空间

51%

这个占有率为66%因为我们在边缘填充中浪费了一堆UV空间。这是一个非常好的方法,可以了解您在我的工作中是否有良好的 UV 布局,我们至少要有70%占有率,所以如果我们看到一个UV包并且它低于70%我们有权力要求艺术家重做它,因为通过糟糕的填充或只是糟糕的 UV 布局选择来浪费所有的 UV 空间是不可接受的,所以在 70% 到 85% 之间的任何地方这就像一种自然的良好UV布局良好的 UV包下图为66%因为右测有没有利用上的位置

现在你可能会问为什么?我放一个像素的填充或零像素的填充来节省一些空间并使一切变得超级高效,因为纹理渗出和中间贴图,因为我们使用 MIP 贴图,如果我们对 UV 边界边缘进行纹理处理并且在 UV 壳之间不留任何空间则会看到纹理益出

因为物体离相机更远,所以在这里您可以看到我有这些,这里有一种奇怪的红色边缘你会看到,当我缩小红色边缘时红色边缘问题会变得更糟边缘会开始变厚,所以如果你将模型贴图带入unity或狨猴工具包或虚幻或其他任何东西你会看到这种错误


我们需要一点额外的纹理实际上延伸到uv边界之外边缘,所以这里灰色是我们的纹理,红色是我们的背景色,白线是 UV 外壳

所以我们实际上需要将纹理向外扩展一点以补偿中间映射这通常被称为膨胀或纹理填充

所以我们进入Photoshop放大其中的一部分纹理边,

在我们uv线框外扩张一部分以获得一点边缘,以防止它在降低到较低分辨率时显示我们红色

我们在8猴查看解决了这个问题,然后你会看到当我缩小时问题总是会在某种程度上发生。因为我们正在谈论缩小到像1个像素,但你想尽可能地解决这个问题,因为你的UV壳之间有合理数量的像素损耗它给出合理数量的像素浪费。这在可接受的纹理渗色范围内很好,因为另一件事也是我们不会有红色,你实际上不想有红色或黑色或纯白色或任何高对比度颜色作为您的背景颜色,您希望将纹理完全扩展因此在此示例中如果它是我们正在制作的实际纹理则不会有红色因为我们会将100% 扩展为灰色(你实际纹理的边缘颜色)


回答原始问题为什么我们不能在这里有零空间或一个像素的 UV 空间,让我们看一下所以我将进入UV模式。把这些人缩小到零空间让我们在这里放大所以我们的架子之间的空间为零。所以你可以看到这些家伙现在都只是坐在彼此的顶部来解决我们想要将灰色像素,扩展到UV边界边缘之外的原始问题,但是如果我们已经没有空间了我无法扩展灰色并将扩展超过这些白线中的任何一条,因此当我缩小时我将没有任何空间让纹理缩小到较低的分辨率。因此现在总是会出现一种 UV 边界边缘接缝。(下图演示uv之间没有间隙)

最有效的 UV 间隙是8个像素,所以在 2048 x 2048 纹理上这两个UV壳之间的距离应该是大约 8 个像素,当你做你的 UV 布局时它有点不准确,然后一些壳会被堆叠一点会堆得更近一些,而有些会堆的远一些,但如果你最终得到十个像素,没关系如果它缩小了你最终得到六个像素的空间也没关系,所以你知道你想要在这里和这里之间平均有八个像素的空间实际上有一个工具可以

在 Maya 中测量出来,你只是为了在这里得到一个参考点,所以如果你打开 UV工具包来扩展那个然后你去安排和布局

选定两个 UV 之间的点-按:Recalculate
重新计算您将在2k地图中不同轴向之间像素间距,u水平方向是2.56,v方向42.6所以这就像太远了,在这里以 8 和 8 为目标。所以当您只是使用 UV 布局时这是个很好工具

关于这个工具的另一个非常有趣的事情是因为就像我们之前提到的那样UV有点像向量空间,就像无限空间一样它们是程序性的,但是您的这两个像素相距 50 像素这非常浪费,但在4k 地图中实际上相距一百像素因为有更多像素。但 UV 没有当你应用不同的纹理时更新,所以如果你这样想如果你正在使用 4k 地图即使相隔 8 像素实际上也会增加一倍,实际上在4k地图上会更多,但我发现 8 像素是uv壳之间空间浪费的一个很好的折衷数值,所以我总是以8为目标,主要是我使用2k贴图当我使用 4k 贴图时如果有意义的话。我仍然在贴图中使用8像素。
它将您的 UV 百分比使用率保持在最低70%,但始终以更高为目标并将纹理填充平均保持为 8 像素,但如果您最终得到一些填充 6像素和一些填充到 10 像素那也可以,根据实际测试效果决定吧!(下方小程序视频版)
B站
         

本帖被以下画板推荐:

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

本版积分规则

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