三维软件是数字化、虚拟化、智能化设计平台的基础。也是目前开设了动画、建筑、设计等专业院校培育创新型人才的一个重要的教学内容,在三维制作中,为了使最终渲染出的效果达到极致,贴图就显得尤为重要,那么,与贴图相对应的uv映射的学习环节就非常重要。uv映射提供了曲面网格与如何将图像纹理贴图到曲面网格之间的连接。即,uv 作为标记点,用于控制纹理贴图上的哪些点与网格上的哪些点相对应。
一、关于uv映射
uv(u-veez),也称为“uv 纹理空间”,就是带有多边形和细分曲面网格的顶点组件信息的二维纹理坐标,使用字母 u 和 v 来指示二维空间中的x轴及y轴。uv 纹理空间有助于将图像纹理贴图放置在 3d 曲面上。简而言之就是把三维物体表面的以平面投影的方式平铺、延展到二维平面上,形成贴图纹理和物体表面的“对位”,也就是建立一种三维空间坐标和二维“纹理坐标”的对应关联,其目的就是方便贴图绘制。而“uv”则作为假想的纹理坐标体系的水平与垂直轴分别与三维空间坐标体系的x轴和y轴对应。在运用三维软件制作相关项目中一个重要的环节就是uv的合理映射,
二、关于uv的预映射方式
maya有平面(planar)、圆柱(cylindrical)、圆球(spherical)、自动(automatic)等uv预映射类形;max还增加包裹(shrink
wrap)、方盒(box)等等不同uv预映射类形。因其在复杂多边形uv映射中可操作性受到极大限制而不具备实用性,故并非必须的操作步骤,甚至可理解为对简单几何体uv定义的理想化演示。不进行uv的预映射不影响uv映射,笔者忽略对其作进一步探讨。
三、关于合理的uv映射
什么是“合理”的uv映射?笔者认为包括以下五点:避免纹理的扭曲;规划uv的投影信息在所界定二维平面内的布局(映射资源在二维平面的较大化延展、映射资源在贴图绘制过程时的主次区分);拆分uv边界时尽可能维持纹理主要部分的完整性;尽量减少uv映射块的数目及合理定位uv拆分线。
那么,不同uv映射的分析又存在哪些情况?如下图例为同一人头模型的不同uv映射,注意其分析数据和说明。
图1为bodypaint 3d软件的recalculate uv缺省运算结果,其投影信息占uv平面的56%。这符合映射资源在二维平面的较大化延展,但注意图2圈内发挥预示作用的棋盘格纹理的变形扭曲,这实质反映着纹理绘制过程的变形扭曲,而其uv映射块数目的众多也破坏了投影信息的连续性,同时还增加运算量,所以,这不是合格的uv映射。
图3和图4系列为zbrush软件的 guvtiles(group uvtiles)缺省运算结果,其投影信息占uv平面的42%。和bodypaint 3d比较,意味着在同样的内存使用条件下,纹理细节的表现精度部分缺失。同时,其棋盘格纹理也呈现不同程度的大小不均。所以,这也不是合格的uv映射。
图5、图6为uvlayout软件的半人工运算结果。 “半人工”是指具体拆分边界是由软件使用者定义,网格物体的映射计算则由电脑实施,注意别把一切都抛给电脑,否则会有不堪设想的后果。其投影信息占uv平面的45%,这是较好解决纹理扭曲的uv映射,棋盘格分布均匀,没有前面两例的变形出现。不足处是投影信息的占有率偏低,但这是调整的时间问题,如果有足够的耐性,uvlayout会让你的uv映射工作变得非常有趣且充满惊喜。
图7、图8为unfold 3d软件的半人工运算结果,其投影信息占uv平面的57%。和前三图的比较这是较满意的结果,投影信息的比率和纹理扭曲都得到较好的解决,但鼻子因多边形数目众多,为避免发生扭曲现象而不得已单独分离,缺失了完整性。
通过以上分析,我们比较明确的是投影信息的百分比和uv映射块的数目对于贴图绘制的影响。但对于扭曲地产生和避免是陌生的,这也是贴图绘制的重点与难点,接下的内容,我们就谈谈“扭曲”。除此之外,还有纹理扭曲值得关注。如下图例为圆锥模型的不同uv映射,注意红色圆点的位移变化带来的纹理映射范围及其物体表面纹理的变化。(使用软件为uvlayout)
图9是制作完成供本例使用的纹理贴图。图10类图为uv映射图,图11类图为映射使用的纹理范围图,图12类图为纹理显示图。图11系列是没有产生纹理扭曲的uv映射和纹理显示图,为什么?其实道理非常简单,在二维平面的uv映射的圆形和扇形的点距与三维空间的圆锥表面的点距处于“相互对应”状态,只要映射于二维平面的点距不发生位移,也就维持了彼此的“距离一致”,同时也就保证了贴图纹理的正常显示,避免了扭曲现象的发生。而其余各图则都因为其uv映射点产生不同程度的位移而导致了纹理扭曲。
以图10系列为例:注意图10-2中a点的水平左移,这意味着原图10-1中ab线段对应的1个方格纹理延伸为现在的约等于3.5个方格纹理(参考图10-1和图10-2),三角形oab所包含的方格纹理的面积也随之扩大。在三维物体不发生形变的前提下,映射纹理只能产生如图10-3呈现的局部收缩现象,纹理扭曲由此产生。以此类推,图11系列、图12系列也同样因为映射点的不同位移而导致不同程度的纹理扭曲。据此而论,避免纹理扭曲的理论意义就在于维持三维空间的物体表面各点与二维平面的uv映射点的“相对一致”。而具体地操作则视不同的软件而异,虽“异”但又“殊途同归”,最终都落实于如图11这类的图像映射文件。
纹理绘制的走向是在制作过程中要注意的问题。如下为同一uv映射的圆锥模型,因其纹理绘制的走向不同而各异其“曲”的图例,注意其变化。(使用软件为uvlayout、3dsmax)
中间的方图为映射信息,左右两边则为不同绘图纹理,右边纹理不考虑映射信息的扇形走向,以满铺方式进行贴图。我们观察到棋盘格纹理的弯曲现象;值得一提的是此“弯曲”非彼“扭曲”,棋盘格纹理的每个独立方格自身不发生变形,因为其映射信息是正确的。弯曲现象的产生是由圆锥弧形表面导致。而左边纹理则充分考虑映射信息的扇形走向,绘制的棋盘格纹理完全顺应扇形结构,这样的贴图是符合视觉规律的。同时,纹理主要部分的uv边界完整性。如下图例为同一人头模型的不同uv映射,注意其分析数据和说明。(使用软件为uvlayout)
注意图13-1和图13-2展示的映射边界为人脸正面延中缝切分(绿线为拼缝),如果没有zbrush、bodypaint 3d类能直接绘制模型的软件而只借助painter、photoshop等二维绘图软件,中缝的笔触、纹理拼接不是遇上大麻烦的问题,而是几乎“不可能完成的任务”。而图13-3和图13-4展示的映射边界则是注重了对脸部正面完整性的“保护”,拼缝定位于脑后或次要不显眼处,如是,即便有小瑕疵也会于不经意间而被忽略。当然,另外的一类情况是在使用zbrush、bodypaint 3d类能直接绘制模型的软件时,我们可以相对削弱对拼缝位置的关注,而集中精力考虑软件对于纹理扭曲的提示。如下图例分别为unfold3d和uvlayout对同一人头模型的不同uv映射,注意其分析说明。
图14是unfold3d的uv映射和棋盘格纹理效果图。注意其桔红色显示部分与大面积灰色部分的纹理异样,这是软件通过警告色提示该部分的贴图纹理有拉伸变形,操作者可进行针对性调整。图15是uvlayout的uv映射和棋盘格纹理效果图。红色警告色提示该部分的uv网格较对应的三维模型而言过于密集,而蓝色警告色提示该部分的uv网格较对应的三维模型而言过于疏散,两部分的棋盘格纹理均产生扭曲变形,需要操作者进行针对性调整。需要强调的是:我们一定不要忽略软件的提示。
在uv拆分线时,我们可以用这样通俗的方式来理解uv映射:把三维物体“按平”,并梳理所有的重叠、变形部分。而三维物体的构成从某种意义来说就是二维平面以不同的相交角度组织的复合体,面与面的相交线担当连接、组织的重要作用。合理的uv映射在具体操作过程的关键就是找寻适当的相交线作为合理的uv拆分线切开映射物体(相似的经历可从立体构成叠合多面体中体会),需要说明的是:uv拆分线是假uv纹理9.indd 4 2008-5-8 22:00:30想线,模型本身不受任何影响。如下图例为uvlayout对圆球模型的不同uv映射,观察其拆分线的不同定位对贴图纹理地影响。
-1类图为uv拆分示意图;-2类图为uv映射图;-3、-4类图为棋盘格纹理效果图。
图16-2的圆球uv映射图类似常见的地图。注意“赤道”和“高纬度”地区的红、蓝色显示;再观察图16-3的对应区域产生的棋盘格纹理的轻微扭曲,说明该示范的uv拆分线并不合理。至少在警告色区域uv映射发生了强制性收缩和拉伸,没有和模型“相互对应”。
图17-2的圆球uv映射图是图16-2的改进。在重新定位uv拆分线时增加了“极地”区域的面积,从而有效避免了图16-2的纹理收缩与拉伸。警告色的纯度也随之降低而趋于不发生扭曲的中性色。观察图17-3的棋盘格纹理,没有扭曲产生。
图18、图19原理与图16、图17同。
结语
对于三维软件uv映射,首先必须定位合理的uv拆分线作为合理映射的开端,并利用软件对拆分部分进行映射,显示棋盘格纹理,修正纹理扭曲。在所界定区域内合理规划映射信息,才能最终制作出优秀的贴图。