APP下载

三维模型的UV拆分技术分析——以Headus UVLayout 为例

2015-12-20李曙光

绥化学院学报 2015年3期
关键词:展平视图鼠标

李曙光

(安徽电子信息职业技术学院 安徽蚌埠 233030)

UV三维模型的二维纹理坐标,带有多边形和细分曲面网格的顶点组件信息[1]。UV用于定义二维纹理坐标系称为“UV纹理空间”,UV纹理空间使用U方向和V方向来定义二维空间中的轴向,UV点是与多边形顶点相关联的点,可以提供为物体应用纹理时所需要的位置信息,UV作为标记定位点,把纹理贴图上的像素点与模型网格上的顶点相对应,有助于将纹理贴图精准的映射到三维模型的曲面。在为多边形曲面创建贴图的时候,首先需要在模型上创建UV。多边形和NURBS模型的UV不同,多边形的UV是可以编辑的,而NURBS的UV不可以编辑。

Maya默认情况下会为许多基本形体的模型创建UV,在创建参数面板上有一个CreateUVs选项,默认是勾选的,但在大多数情况下还是需要重新编辑UV,因为默认UV在模型被修改编辑后,排列方式通常不会与最终模型相匹配。此外编辑曲面网格时,UV坐标的位置也不会自动更新,大多数情况下在完成建模之后,在把纹理指定给模型之前,需要重新映射并编辑UV。理解UV的概念,映射到曲面的方法以及拆分展平技术,是三维动画、次时代游戏模型制作中必不可少的关键流程。比如你要做一个角色头部的贴图,首先要给头部模型设置球形映射,然后编辑UV,展好UV后把UV图导入到二维绘图软件里面进行贴图绘制,这样才能让贴图准确地映射在模型上。

HeadusUVLayout是一个独立的拆分展平UV的应用程序,也可以通过接口文件来作为Maya和3DMax等三维软件的插件,用于创建和编辑三维模型网格和细分曲面的UV,广泛应用于游戏和视觉特效领域,UVLayout可以在3D视图、UV视图和编辑视图中互相传递UV的独特的工作流程,可以快捷的完成UV的各项拆分任务,大量的命令可以使用快捷键实现,使纹理艺术家们轻松高效的得到高品质、低失真的UV[2],三维模型拆分UV如图1所示。

图1角色模型的UV拆分

一、UV在实际流程中的拆分原则

UV拆分必须根据模型本身的结构进行合理的划分和安排,UV的拆分也可以有很多的方法和效果,同时多边形的UV编辑也因制作人设定纹理不同而各异,但一些基本原则必须遵循。

(一)保持UV不失真。拆分UV的过程就是将三维模型的所有面片展开成一个平面的过程,模型各个面的比例可能会被改变,UV若有拉伸,贴图也会有拉伸,从而产生失真的贴图效果,这时就要对有拉伸的UV块进行调整,尽量减少UV块失真,通常的做法是把拉伸的UV块再拆分为几小块以减少拉伸,对于复杂的曲面模型的UV块完全没有拉伸也是不可能的,在UVLayout提供了优化的展平UV算法,展平后进入3D模式,可以使用不同的棋盘格纹理查看UV有无拉伸,在UV编辑视图中,正常的没有拉伸的UV是淡绿色的。而UV呈彩色显示,说明有拉伸需要重新展平。

(二)避免UV块不必要的重叠。当UV块重叠时模型的贴图就会重叠,重叠的模型部分纹理就会相同,重叠的UV在Maya中还会造成Bump凹凸纹理的不正确显示。当然遇到纹理图案重复的物体时,则可以故意利用UV重叠来节约纹理空间,在UVLayout中使用多UV块的定向堆叠来实现模型共用同一纹理贴图,例如瓷砖、天花板,四方连续图案的布等。

(三)合理的控制UV的接缝。对于结构复杂,曲率比较大的模型,如果UV不进行拆解,就会产生拉伸和重叠的问题,这时就要拆分成几个独立的UV块,但如果UV块较多时,又会造成过多的接缝,且造成后期绘制贴图时,不能直观的识别贴图的位置,所以合理的控制UV块数量可以避免较多的纹理接缝。UV可以理解为将模型沿选定边切开,然后展开成一个平面,这样就涉及到接缝的技巧,模型上被切开边的两侧纹理一般不能很好的过渡,会产生一条明显的接缝,在折分UV时接缝是不可避免的,在制作中一般UV的接缝摆放位置应遵循摄影机注意不到及不易觉察的部位,如头后侧部、臂与腿的内侧等。

(四)合理布局UV块。拆分UV的目的是为后期绘制模型贴图,动画游戏角色的贴图较为复杂,在拆分UV时可能需要折解为较多的UV块,如果UV块杂乱摆放,在后期的平面二维绘图软件中绘制贴图时,有可能不能直观的对应到模型上的某个局部,而UV块摆放符合模型物体结构的视觉习惯,可为后期绘制贴图提供便利。拆分的UV应当尽量充满0~1的纹理空间,因为输出的UV图就是0~1的纹理空间,如果2048×2048的贴图,只将UV占到0~1的纹理空间的一半,那就相当于只使用了一张1024×1024的贴图,造成不必要的浪费。

二、三维模型的UV映射方法

为曲面网格创建显式UV的过程称为“UV映射”。UV映射是指创建、编辑和整理UV的过程[3]。UV映射过程会在图像与将纹理映射到3D曲面网格时如何将其显示为纹理之间产生关联。UV映射是用于掌握多边形曲面上的精确和真实纹理所需的一项重要技能。

Maya中有很多映射的方法:如平面映射、圆柱体映射、球形映射、自动映射,如图2所示,这些映射方法都是使用一种预定的规则将UV纹理坐标投射到模型表面,自动创建纹理图像与表面的关联。通常对自动产生的UV还必须使用UV编辑器进一步编辑才能达到所需要的效果。因为每次对模型的修改(如挤压,缩放,增加、删除等等)都会造成UV错位,所以最好的工作流程是在建模完成之后,再开始创建UVs,要根据模型的大致形状,选择合适的UV映射方法,例如将角色模型的头部当作球体映射,把角色模型的四肢当作圆柱体映射等。

图2 三维模型的几种UV映射方法

(一)平面映射。平面映射通过平面将UV投影到模型网格。平面映射适用于平面的对象,或者至少可从一个摄影机的角度完全可见的对象。平面映射通常会出现重叠的UV,在在映射轴向上的UV可能会产生拉伸错误,可以设置平面映射的坐标轴,通过控制手柄可以可直观的控制映射的移动、旋转、缩放,平面映射主要应用于类似于平面的物体,如地毯,纸张,装饰画等。

(二)圆柱映射。圆柱映射形成一个图柱的形状包裹住模型,图柱映射的控制手柄可以作包裹角度、位移、旋转和缩放等操作。圆柱映射主要应用于完全封闭且类似于柱状的物体,如柱子,角色的四肢,树干等。

(三)球状映射。球形映射形成一个圆球的形状包裹住模型,球形映射使用基于球形图形的投影为对象创建UV,该球形图形围绕着模型网格,在网格上下产生两个交汇点。该投影最适合完全封闭且是球状的物体,可以通过控制手柄上的点调节UV,以便达到更好的效果,球状映射主要应用于类似于球形的物体,如苹果,足球等。

(四)自动映射。自动映射通过同时从多个平面投影以实现最佳UV合理的布局来创建多边形模型网格UV,如图3所示。该UV映射方法对于复杂的模型是非常有用的,在复杂的模型中基本平面、圆柱形或球形投影不会产生无拉伸的UV,尤其是对于向外投影或本身中空的组件,自动映射会在UV纹理编辑器中编辑、布局UV和纹理贴图的区域中,将模型贴图到多个独立的UV块上。自动映射可以设定与模型相匹配的面数,可以产生3-12个面,同时映射多个面来寻找每个面 UV的最佳布局位置。它会在纹理空间内创建多个UV块,且UV块的大小比例相近。如果想要更加完整的UV,可以在纹理编辑器对其进行手动缝合。

图3 三维模型的自动映射

三、使用UVLayout拆分UV的流程

HeadusUVLayout是一个基于物理算法,将3D物体展开,用户利用缝合切割功能,创建低Poly或SUBD表面的工具,支持导入其他几何模型进行编辑[4]。

图4 使用UVLayout拆分UV的流程

(一)在3D模式中拆分UV。导入一个.obj的模型,按模型的结构进行拆解和缝合,移动鼠标指针移动已拆分的UV块,并使用Enter键从模型上把这部分模型分离出来。使用空格+中键组合,单击并拖动从主模型网格上移开来,使用Enter分离的各种局部部件,把已拆分的网格模型传递至UV模式,一旦所有分离的网格模型都被传递到UV模式,原始未切割的网格将被显示在3D视图窗口,如图4所示。

(二)在UV模式中展平放置UV块。切换到UV模式,移动鼠标指针移到UV壳上,并按住F键将其展平,也可以使用Shift+F组合键,使用圆框展平复杂的形状。一旦所有的UV块大致被展平,使用优化/Run for按钮完全展平所有壳。如果UV有拉伸,则有一个或多个蓝色或红色显示的面,需要用Ctrl+中键组合来缩放和移动UV块,有时要用P键来锁定局部UV,然后再次展UV块,使用空格+中键移动的各种UV块,使它们不重叠,使用Pack功能把UV块合理的放置在0~1的纹理空间且不浪费空间,空间的使用率可以直观的显示出来。

(三)在3D模式中检查UV。进入3D模式,使用T键在不同的棋盘格纹理之间查看UV有无拉伸,导出具有UV形状的二维位图文件供绘制贴图,保存模型到.obj文件。然后把模型导入其他应用程序作进一步加工,如果在另一个应用程序中进一步编辑UV,可能需要把网格导回UVLayout进行再次展平,再次编辑导入模型,切换到UV模式下,按住F键展平UV壳,或使用优化/Run for重新展平所有UV块。

四、UVLayout拆分UV的技术

(一)模型具有相同网格的UV拆分。

1.对称网格的UV拆分。在UVLayout拆分角色模型时,由于网格大多是对称的拓扑结构,可以使用对换查找功能可减少重复工作,提高工作的效率,对称的查找方式有两种,一种是基于同一个模型内部具有对称结构的网格,另一种是模型是分离的,但具有相同的网格拓扑结构。基于同一个模型内部具有对称结构的网格对称查找,点击Symmetry/Find,在模型的对称轴上点击左键,按空格键确认,这时模型会左右灰白显示,表明对称功能已启用。这时对模型一边进行拆分操作,另一边则同步自动拆分。而模型是分离的,但具有相同的网格拓扑结构的对称查找,点击Symmetry/Find,左键拾取原网格,红色显示,中键拾取对称网格的相同拓扑位置,蓝色显示,按空格键确认启用对称功能。在展平原网格后,鼠标在原网格内点击S键,对称网格自动与原网格水平对称显示,拆分效果如图5所示。

图5 对称网格的UV拆分

2.相同网格的UV复制。在一些场景中有大量相同拓扑结构的局部,可以使用相同网格的UV复制功能可减少重复工作,提高工作的效率,首先把原网格进行拆分展平,然后回到3D视图,点击CopyUVs,左键拾取原网格,红色显示,继续左键拾取目标网格的相同拓扑位置,蓝色显示,按空格键确认启用UV复制功能,这时在UV视图下,默认情况Stack堆叠功能启用,原UV块和目标UV块堆叠在一起,也可以使用水平排列或垂直排列UV块。

(二)UV块的局部操作。在展平操作前,可以定义一个UV块中局部不变形,使用LocalScale功能,按住4键,在UV网格上移动鼠标,则局部变成蓝色显示,网格被膨胀;按住5键,在UV网格上移动鼠标,则局部变成红色显示,网格被收缩,同时按下4和5键,在UV网格上移动鼠标,网格返回原始比例;而在Pin模式下,按住4键,在UV网格上移动鼠标,则局部被Pin标记同时网格膨胀;按住5键,在UV网格上移动鼠标,则局部被Pin标记的同时网格收缩;按住6键,在UV网格上移动鼠标,则局部被平滑处理。

图6 UVLayout中的标记点和标记线

(三)UV块的对齐。为了绘制贴图的方便,有时需要UV块边界是直线,需要对UV块强制对齐操作,在UV块的顶点,按A键定义方向捕捉标记,按Ctrl+鼠标中键可以移动这个顶点,在另一个把顶点移动到它的水平或垂直线上来,按S键标记,把方向捕捉标记也打上S键标记,然后在两点中间的边线的任意顶点上按S键,则边线自动拉直对齐。

强制拉直UV块内部的一条线段,按住A键,移动鼠标拾取线段,线段呈粗黑色显示,然后展平得到一条内部强制的轴向约束对齐线段;按住K键,移动鼠标拾取线段,线段呈虚线显示,然后展平得到一条内部强制的非轴向约束的对齐线段。

(四)UVs的Pack布局。对于一个布局合理的UV块,可以更好的利用纹理空间,后期可以更好的绘制纹理贴图,在UVLayout中Pack菜单提供了自动打包的功能。在UV视图下,选中要打包的UV块,点击NewBox,会出现一个绿色的矩形框。点击“[”或“]”键,UV块可局部的自动排布,点击PackAll,对UV块进行全局的排布,同时可以显示纹理空间的使用率。

(五)UVs的捕捉和堆叠。对UV块精确定位或整齐排布时,需要使用UVs的捕捉功能,可以在Snap/Stack菜单下设置捕捉网格的大小,也可以设置捕捉网格U方向左、中或右的对齐方式或V方向底、中或上的对齐方式,可以设置点、壳和边界的捕捉。

对于相同拓扑结构的多UV块的排列对齐,可以使用堆叠功能,首先选择一个目标物体,按S键拾取,黄色显示,点击Gather U,具有相同拓扑结构的UV块与目标物体自动水平对齐,点击GatherV,则垂直对齐。

对于相同拓扑结构的多UV块的定向堆叠,首先选择一个目标物体,按S键拾取,黄色显示,在目标物体具有方向识别的顶点上,按S键定义一个紫色的定向堆叠标记,点击Match Point,自动识别与目标物体相同拓扑结构的网格,点击Stack,所有网格与目标网格按标记顶点的位置堆叠,以节省纹理的空间。

(六)UVs的变换。在UVLayout中,可以使用UVs的变换面板,来对UV块进行精确的移动、缩放和旋转操作。在对角色拆分UV,常需要对重要的部位进行放大,如角色的头部,对不重要的部位进行缩小,如角色的身体部分,以让重要的部位在纹理贴图中获得更丰富的细节。对缩放的UV块需要进行locals标记,以锁定UV块比例,对不同比例UV块进行缝合时,缝合的边界会出现拉伸,需要使用Smooth功能对拉伸处进行平滑。

(七)UVLayout和Maya的交互工作。在Maya中,首先要检查objexpotplugin插件已打开,才能使用UVLayout的传递接口,在Maya根目录的位置安装UVLayout插件接口文件,在maya的工具栏上会出现UVLayout的工具架,点击Info按钮,弹出UVLayout启动面板,点击RunUVLayout,弹出UVLayout的软件界面,点击SendMesh把Maya中的模型实时的传递到UVLayout中,在UVLayout拆分好UV后,点击Send把分好UV的模型再传递回Maya。

五、结语

当三维模型使用贴图时,合理的拆分UV至关重要,使用Headus UVLayout软件,必须遵循UV拆分的基本原则,根据模型大致的形状,选择适合的映射方式,把贴图映射到模型表面,再把UV按照模型的结构的视觉习惯来进行编辑,尽量避免UV的重叠和拉伸,把UV块的拆分边界尽量放置到模型注意不到及不易觉察的部位,且不要把UV折分得过多,减少边缝的数量,在对角色UV拆分时,可以把头部等重要的部位的UV块放大,把不是太重要的部分的UV块缩小,以使重要的部位可以获得更精细的贴图细节,同时也要让UV块尽量占满0~1的纹理空间,以提高纹理空间的使用效率,这样在绘制贴图时才能获得较好的视觉效果。

[1]铁钟.Maya2009 完全学习手册[M].北京:清华大学出版社,2010.

[2]火星时代.Maya 白金手册2 建模[M].北京:人民邮电出版社,2011.

[3]完美动力.Maya 材质[M].北京:海洋出版社,2012.

[4]刘涛.Maya&ZBrush 影视角色造型完美表现[M].北京:电子工业出版社,2010.

猜你喜欢

展平视图鼠标
竹材展平机结构设计与关键部件仿真分析∗
家居用疏水保温展平竹制备工艺研究
一种圆织机
Progress in Neural NLP: Modeling, Learning, and Reasoning
5.3 视图与投影
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
2450冷轧铝合金带材展平压下量与张力分析
45岁的鼠标