UV 映射技巧和窍门
在线工具推荐:3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎
有一个鲜为人知的主题是纹理映射。这始终是 3D 建模师想要处理的最后一部分,但它会让纹理艺术家发疯。
想象一下,你刚刚完成了你的最新作品:一个奇妙的、多肢的生物,里面有层层的网状细节。现在是时候创建 UV 了。但是,尽管它很漂亮,但你却创造了一个噩梦:没有一个基本的修饰符是有效的。完成纹理映射是一项全面的自定义工作。您必须为每个表面提供自己独特的映射,以消除任何扭曲。这意味着没有拉伸或剪切,并在整个角色上保持一致的像素密度。在执行此操作时,您还必须想出一个纹理艺术家可以理解的纹理贴图。当然,您需要及时完成所有这些工作才能赶上最后期限。欢迎来到纹理贴图的世界。
这篇论文的主要目标是为您提供书中关于 UV 映射的所有技巧,并提供在每种情况下使用的技巧和方法。此外,除了方法和技巧,我们还可以借助一些简便工具来帮助我们快速的实现 UV 贴图,如:GLTF 编辑器 -NSDT
基础知识
映射类型及其用途
平面的
平面映射是应用于对象的最基本的映射修饰符。它的工作原理是将纹理从一个方向投影到模型上。因此,它对墙壁和基本地形等物体很有用。但它不能有效地用于具有许多重叠表面的复杂对象,因为它通常会拉伸不直接面向投影地图的多边形。有几种方法可以解决这些问题,我们稍后将介绍这些方法。
箱
盒子映射的工作原理是从六个侧面将所需的纹理投影到模型上。这在处理技术或建筑对象时非常方便,当您只需要快速映射对象中不太重要的部分时。不幸的是,它对于需要精确映射的有机对象不是很有用。箱子映射有用的情况的一个例子是货物集装箱上的小螺丝,或者工厂中的某些金属棒或格栅。当您开始处理需要特定映射的更复杂的对象时,它变得不那么有用。
球形
球面映射将球形图案中的纹理投影到对象上。太空迷喜欢使用这种技术来绘制小行星和行星,但它引起的一个副作用是球体映射的两极处的像素密度非常高。这会导致在绘制纹理时难以抵消的捏合效果。它有助于阻挡人头上的映射,但之后仍然需要进行重大调整。它开始在具有许多重叠部件的模型上失去用处。
圆柱
圆柱形映射比任何其他类型的映射使用更广泛。将纹理以径向图案向内投影,使其对于映射树干、手臂、躯干和腿部等对象非常有用。它对于阻止各种类型网格上的映射非常方便。但是之后仍然需要在 UV 编辑器中进行大量调整。与其他映射选项一样,它并非在所有情况下都有效。
收缩包装
我还没有看到有人使用此修饰符来映射对象。我还没有弄清楚它的目的或它到底是如何工作的,因为它似乎创造了一些任何技术中最无用的映射解决方案。我不建议将这种技术用于任何对象,如果有人确实发现了它的用途,请告诉我。我很好奇它如何才能付诸实践。
像素密度和拉伸
请务必确保贴图中像素大小的纵横比保持一致 - 没有什么比扭曲贴图更让纹理艺术家烦恼的了。留意纹理被拉伸或歪斜的区域。纹理艺术家需要担心的最后一件事是校正他的纹理以对抗任何扭曲的映射。当您使用的像素面积超过要求时,这也被认为是浪费。
映射接缝
接缝是由于网格形状而在映射中切割产生的伪影。你无法避免接缝,但你可以尽量减少它们的影响以及纹理艺术家修复它们所花费的精力。只需将接缝的顶点与纹理坐标的水平面或垂直平面上的映射中的相应连接对齐即可。这样,当纹理艺术家修复和隐藏接缝时,像素会在其中一个轴上对齐。对于技术对象,更容易摆脱接缝,因为它们往往非常零散,而且对象的性质允许这样做。但是对于有机网格,您应该通过使用准确、连续的映射来尽可能减少接缝的数量(我将在本文后面介绍)。另一种解决方案是使用一个好的 3D 绘画程序,例如 DeepPaint 3D。
对称映射和重叠
有时你会遇到模型 - 通常的角色模型 - 两边都相同(也称为双边对称)。在这种情况下,您可以通过映射模型的一侧,然后将其镜像到另一半,将映射时间缩短一半。
您可以使用的另一项优化是重叠映射坐标。例如,假设你有一个角色,他的背部有很多尖刺突出。您可以使用相同的纹理将所有这些尖峰全部重叠到同一区域,从而将它们映射到同一区域。对于实时角色,这为您节省了大量不必要的纹理分辨率,这些分辨率可以更好地用于其他地方,而不是单独映射每个尖峰。
平铺纹理
长期以来,平铺图形一直是节省内存和映射空间的最快方法之一。例如,可以在橡胶软管或油箱的胎面上使用重复图案。平铺纹理允许您使用较小的纹理区域并重复它,从而在实现逼真效果的同时保持像素密度。地形艺术家广泛使用平铺纹理,但他们使用混合贴图通过将其他平铺纹理相互混合来隐藏平铺图案。我们稍后将对此进行更深入的介绍。
高深
优化的 UV 布局
优化的 UV 布局与实时角色特别相关。简而言之,不要在纹理映射中浪费任何空间。由于整个纹理被加载到内存中,因此应尽可能多地使用纹理区域。为此,您应该缩放、旋转和移动那些 UV 映射的顶点位,直到您无法再节省一盎司的空间。把它想象成一个巨大的拼图,没有图片可以使用。您的工作是最大限度地提高像素分辨率,并尽可能少地留下未使用的空间。一个好的 UV 贴图模型可以使用高达 90%的最终图片。如果模型的某些部分很少被看到,请将 UV 映射空间缩小到其原始大小的 50%,并将其塞入某个位置。
连续映射
连续纹理映射通常仅用于有机生物。使用这种方法,您可以尝试链接所有相关身体部位的映射,以减少接缝的数量。这通常涉及巧妙地变形和排列您尝试映射的网格的 UV 映射位。在下图中,您可以看到身体、腿和头部由一个映射区域组成。我还使用了对称性来节省纹理空间。这为纹理艺术家提供了更少的接缝,使他的生活更轻松。简而言之,您可以链接在一起的部件越多越好。然而,尝试用机械部件做到这一点几乎是不可能的:它通常会扭曲纹理。
______________________________________________________
在某些方面,为有机模型创建纹理贴图很容易,但它确实有其自身的缺陷。首先,在绘制有机生物地图时,您一定会遇到一些疯狂的形状。但幸运的是,由于模型的弯曲性质,您可以在映射中避免更多的翘曲。连续映射绝对是映射有机形状时应该使用的关键技术。密切关注你的接缝数量,并寻找将所有内容统一到一个连续的贴图中的方法,同时尽可能多地利用纹理空间——这本身就是一门艺术。
技术模型映射
技术对象实际上很容易绘制。困难的部分是为糟糕的纹理艺术家组织和优化布局。纹理艺术家得到的只是一个巨大的彩色拼图,他会花几个小时试图弄清楚每个部分的去向。
在映射技术形状时,需要遵循一些简单的规则:
映射不应失真。这是一个技术形状,因此请尽可能保持映射与原始多边形的真实性。
像素长宽比非常重要。没有人愿意涂上大量的小铆钉和螺栓,然后注意到它们在最终的网格上被压扁或拉伸。
方向至关重要。如果纹理艺术家需要将徽标放置在对象上某个位置的多个多边形上,请确保使这些多边形彼此成 90 度角。艺术家最不想做的就是将徽标旋转成奇怪的角度,使它们垂直或水平显示在最终网格上。
让它很容易弄清楚。它必须是一个功能图。因此,它必须有效地利用其空间,同时对于纹理艺术家来说仍然是可理解的。这确实是一种平衡行为。
考虑着色器效果的 UV 贴图
着色器是游戏世界中一个受欢迎的变化。约翰·卡马克(John Carmack)真正引入了这个概念,他的艺术家充分利用了它。《雷神之锤 3》的角色和环境从着色器的使用中受益匪浅。从层叠的瀑布等作弊效果,到《末影地带》中贯穿机甲装甲外层的能量模式,着色器为世界各地的艺术家开辟了一系列新的视觉可能性。要实现这些效果,您所要做的就是遵循一些基本的映射规则。
例如,你想创建一条流动的河流,包裹着挡路的物体。您所要做的就是确定水流向哪个方向,然后定向和扭曲您的地图以帮助实现这一目标。下图说明了效果的映射和最终外观。我所做的只是拉直了更弯曲的区域,这样当应用着色器时,它看起来就像是在障碍物周围流动。
同样的规则也适用于坦克履带和滚滚浓烟等东西,这些东西是在《自由战士》中用多边形而不是粒子创建的。游戏只是使用了一个简单的滚动纹理,模型的映射是以利用它。
将细节纹理与分层材料混合在一起
细节纹理是混合在另一个纹理上的纹理,其程度取决于您与对象的距离。这样做的好处是,你可以欺骗很多微观细节,而实际上不必使用大量图像。例如,假设您有一面大小为 256x256 像素的砖墙,另一面大小为 128x128 的砖墙。较小的一个将用于细节纹理。通常,当你开始真正靠近墙壁时,它开始看起来模糊不清,但是当较大的纹理与较小的细节纹理结合使用时,当你靠近时会逐渐淡出,它会给人一种更详细的错觉。
细节纹理还有另一个用途,它需要一些编程来为游戏引擎创建像素着色器。使用着色器,您可以在模型上同时使用最多三个不同的细节纹理,使用顶点颜色或额外的纹理来定义混合。您可以使用图片中的 RGB 颜色值来定义混合,并且每个颜色值都与您在游戏材质系统中定义的一个细节纹理一致。这允许从一个细节纹理平滑混合到另一个细节纹理,因为它检查了 RGB 级别。(当然,黑色根本不会出现。下图显示了将细节纹理与颜色映射表结合使用时的颜色示例和最终结果。
而脸部本身的最后弯曲:
Renier 的纹理映射过程
不,我将解释我在 3ds max 中为 UV 映射对象开发的方法。习惯它需要一些工作,但一旦你习惯了它,你可能再也不会以同样的方式映射对象了。
把它想象成给动物剥皮,然后剥皮,把它放在地上,然后涂漆。为了开始这个过程,我克隆了对象,然后在 3ds max 中手动将其拆开。然后我组织它并对其应用映射,将其保存到一个单独的文件中。最后,我选择原始对象并从克隆版本加载映射数据。这是对该过程的概述,现在让我更详细地解释一下。
要跟踪的事情
保持相同的多边形计数。 对象的多边形计数需要与克隆对象的原始对象相同。进行最终焊接时,请确保不会意外删除或合并任何多边形。否则,您的映射将无法加载,您需要重新执行。定期保存,并在每次保存之前密切关注该多边形计数。
分离到同一对象。 将模型分解为要映射的所需部分时,请确保将其分离到同一对象。否则,您将删除多边形,并且对象的映射将变得无效,并且您将无法将其加载回原始网格。
克隆对象
克隆对象。 第一步是从原始对象创建克隆。记下其多边形计数并将其放在一边以备后用。接下来,隐藏原始网格,因为你不想编辑它 - 你将把克隆的网格拆开,你不想改变原始网格。
对对象进行碎片化。 由于这是一个对称网格,因此没有理由同时映射两侧。因此,在克隆网格之前,请删除头部的右侧。只需映射一侧并将其映射镜像到另一侧即可。
现在,网格已准备好进行映射。隐藏原始网格,开始拆解克隆。在下面的图片中,你可以看到我已经隔离了耳朵、嘴巴内侧和帽子的前部区域,这是第一个要切割的区域。
这个过程的美妙之处在于,在拆解模型时,您可以使用所有建模工具。只需选择一个您希望多边形面对的视口,然后开始拆开网格,将多边形排列成所需方向,如下图所示。
正如你所看到的,我开始分离多边形,并使它们尽可能地面向视口。这确保了我绘制的所有对象的准确像素密度。确保您在此过程中没有删除任何多边形。
接下来我们转到脸部。在下图中,我突出显示了我计划拆分的部分:
我开始将它们彼此分离,以最佳角度将它们朝向视口。我只是密切关注我的多边形计数,以确保我没有删除任何内容,然后保存场景以防我的电脑崩溃。
如下图所示,网格非常碎片化。不过,这不是问题——我最终会处理好这件事。
现在一切都已分离并布局良好,我们可以开始组织它了。我保持 1x1 的布局纵横比,因为该模型将用于实时游戏图形。在移动一些多边形后,最终结果是:
重新组装拼图。 现在它已经组织好了,是时候再次将多边形焊接在一起了。这个过程很简单,不需要太多时间。只需在合并顶点时注意多边形计数即可。经过一些焊接后,这是最终结果。现在是时候将映射转移到最终对象了。
传输映射。 选择网格并将平面贴图应用于模型。现在它已具有映射,请应用 UNWRAP 修饰符。这是我用来加载和保存模型映射的修改器。单击并保存网格的映射。
保存和加载映射。 接下来,取消隐藏原始模型并对其应用另一个 UNWRAP 修改器。单击“加载”,然后将克隆模型中的映射应用到最终网格上。单击“编辑映射”以检查映射是否正确加载。
如果一切顺利,您就拥有了一个具有精确映射的模型。
享受您新映射的模型!
版权声明: 本文为 InfoQ 作者【3D建模设计】的原创文章。
原文链接:【http://xie.infoq.cn/article/99ed277388f96f4772f200b49】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论