首页 > 代码库 > unity3d游戏开发之UV贴图教程

unity3d游戏开发之UV贴图教程

一、理解UV贴图
UVs是驻留在多边形网格顶点上的两维纹理坐标点,它们定义了一个两维纹理坐标系统,称为UV纹理空间,这个空间用U和V两个字母定义坐标轴。用于确定如何将一个纹理图像放置在三维的模型表面。

本质上,UVs是提供了一种模型表面与纹理图像之间的连接关系,UVs负责确定纹理图像上的一个点(像素)应该放置在模型表面的哪一个顶点上,由此可将整个纹理都铺盖到模型上。如果没有UVs,多边形网格将不能被渲染出纹理。

通常在创建MAYA原始对象时,UVs一般都被自动创建(在创建参数面板上有一个Create UVs选项,默认是勾选的),但大部分情况下,我们还是需要重新安排UVs,因为,在编辑修改模型时,UVs不会自动更新改变位置。

重新安排UVs,一般是在模型完全做好之后,并且在指定纹理贴图之前进行。此外,任何对模型的修改都可能会造成模型顶点与UVs的错位,从而使纹理贴图出现错误。更多精彩请点击狗刨学习网

二、UVs和纹理映射
NURBS表面与多边形网格的贴图机制不同,NURBS表面的UV是内建的(已经自动定义出U、V),这些UV不能被编辑,移动CV将会影响纹理贴图。而多边形的UVs并非一开始就存在,还必须明确地创建并且可以随后进一步修改编辑。

三、UV贴图
为一个表面创建UVs的过程叫UV贴图(UV mapping)。这个过程包括创建、编辑。其结果是明确地决定图像如何在三维模型上显示,这项技术的熟练程度直接影响模型的最后表现。

四、创建UVs

Maya中有很多UVs创建工具:如,自动UV工具、平面UV工具、圆柱UV工具、球形UV工具、用户自定义UV工具等。
每种创建工具都是使用一种预定的规则将UV纹理坐标投射到模型表面,自动创建纹理图像与表面的关联。
通常,对自动产生的UV还必须使用UV编辑器进一步编辑才能达到所需要的效果。
因为每次对模型的修改(如挤压,缩放,增加、删除等等)都会造成UVs错位,所以最好的工作流程是等模型完全设计好了之后,再开始创建UVs。

五、观察和评估UVs

一旦已经为一个模型创建了UVs,即可使用UV编辑器编辑它。这个编辑器,可以在一个二维平面上观察UV坐标点和它与纹理图像的关系,并且能手动编辑UV及它的各种元素。

通常,使用创建工具默认产生的UVs可能不符合我们的需求,因此,可以在UV编辑器里,用眼睛观察评估,并且手动调节UVs的位置(重新排列)。

调节UVs的参考原则是信赖最终需要贴图的纹理图像。也可以说,不同的图像需要不同的UVs位置。

下述几种情况需要使用UV编辑器调节:
1、当模型最终要贴的图像被确定时,可能需要调节UV(甚至某些情况下还要调节模型网格),以适合那个图像。
2、想使用一个图像多次重复时。例如一个砖墙。
3、在使用了自动创建UV时。自动创建的UV通常总是产生多个基于表面的分离的UV网格,因此可能需要重新排列或者缝合一些分离的UV。
4、当模型表面的贴图发生严重的扭曲、拉伸变形时,可能需要在UV编辑器中将一些UV展开和松驰(Unfold 和 Relax)。
注意,要为一个模型创建最好的UV,可能需要经过多次尝试,以及采用不同的UV创建方法。

六、UV贴图技巧
MAYA提供了许多创建和编辑UV的工具,其中UV编辑器是最主要的工具。

懂得如何为一幅现有的图像找到一个最佳的UV,是一项非常重要的技术,以下是一些基本的指导原则:
1、保持UVs坐标值在0-1的范围
在UV编辑器中,UV空间显示为一个网格标记,工作区域为0到1。默认,在UV创建过程中,MAYA会自动设置UVs的值处于0-1之间。但在UV经过移动、缩放之后,UV可能被放置在0-1之外。在多数情况下,应该将UV值保持在0-1内。
当UV值超出0-1时,纹理图像会出现重复或者环绕。更多精彩请点击狗刨学习网

2、消除UV壳重叠
相互连接UV点而形成的网格,称为UV壳(UV shell)。在UV编辑器中,如果UV壳出现重叠,则在模型的相应的顶点部位出现图像重复现象。通常应该消除这种重叠,除非有特殊的需要。例如一个模型有两个不同的部位有相同的图像,则这两个部位的UV壳可以重叠放置在这个图像上。

3、正确安排UV壳之间的间隔
两个UV壳之间的间隔也是一个重要的考虑内容。它们不能太过于靠近,否则在渲染时会将另一UV壳的图像内容也渲染出来。

4、尽量使用捕捉UVs
在编辑UVs时,类似于编辑场景中的元素,也能使用多种捕捉方法控制UVs。可以捕捉到背景网格线、其他UV点、以及图像像素点(需要将编辑区域放大N倍才能感觉到这种捕捉)。

七、UV编辑器简介
有多种方式打开UV编辑器:用Window > UV Texture Editor,或者用Edit UVs > UV Texture Editor,或者在视图菜单中用Panels > Panel > UVTexture Editor。说明UV编辑器是一个非常重要的编辑器。
在UV编辑器可以查看和交互式编辑纹理坐标(UVs)。选择、移动、缩放和修改UV拓扑,也能显示背景纹理图像作为调节的参考。
UV编辑器与场景视图,可以同时显示所选择的UVs和与之相对应的顶点。
利用UV编辑器所包含的许多工具,能有效地编辑UVs。如旋转和翻转,切割和缝合等等,也能输出一个编辑好的UVs布局为一幅图像,再用PS等软件创造出一幅纹理贴图。
注意,UV编辑器的有一些工具在主菜单的Edit UVs中。
UV编辑器的视图也能使用快捷方式进行移动和缩放(鼠标滚轮缩放,ALT+中键移动)。
在UV编辑器中也有右键标记菜单。它包括了几乎所有的操作。

八、UV
可以为同一个模型创建多个UV排列方案(数量不限),每个方案称为一个UV集。在某个模型需要多个不同的UV布局时,UV集非常有用。
例如,想创建一个上面有些涂鸦图案的砖墙。可以使用一个纹理作为砖,另一个纹理作为涂鸦,如果砖纹理需要重复显示而涂鸦不需要,则可以为这两个纹理使用不同的UV布局(UV集)。更多精彩请点击狗刨学习网

使用UV集的关键步骤是:
1、指定多个纹理给材质。如可以为某材质指定一个颜色纹理和一个透明度纹理。此外,也可以为某个单个的属性(如颜色)指定一个分层纹理。
2、使用不同布局创建UV集(在创建参数中有一个UV集选项)。
3、使用“关系编辑器”将纹理与UV集关联起来。

九、创建平面UV贴图
通过一个平面将UV映射到模型表面。模型表面最好是相对平坦的,或者至少在相机的某个角度能够全部看见。
通常,这种技术创建的UV壳是重叠的,看起来就象是一个简单的UV壳。所以,在创建完后应该使用Edit UVs > Layout将重叠的UV壳分离。

Best Plane Texturing Tool工具分配UVs给一个面(事先通过顶点选择的面)。可以先选面再使用Best PlaneTexturing Tool工具,或者,也可以先使用BestPlane Texturing Tool工具再逐一地选择想贴图的面。
1、选择模型想贴图的一个面;
2、使用Create UVs > Best Plane Texturing Tool工具;
3、单击其他的面增加进选区,注意,不能框选,只能用单击逐一选择。选完按回车。
4、选择三个或者多个顶点(可切换到顶点选择模式)。——这个可能是用来确定主平面的。
5、再按回车。创建完毕。进入UV编辑器查看和编辑创建好的UVs。
创建平面UV贴图(基于相机平面)
上面例子是以选择的顶点来确定一个映射主平面,现在是使用相机平面来作为UV映射主平面。
1、在模型上选择一个或者几个想贴图的面;(不选的将不参与布局)
2、滚动视图,使这个面朝向自己,或者,干脆切换进正交视图中,让它完全对准自己;
3、使用Create UVs > Create UVs Based On Camera工具,创建即完成。进入UV编辑器查看和编辑创建好的UVs。

十、创建平面UV贴图(基于一个可控平面)
1、选择一个想贴图的面;
2、打开Create UVs > Planar Mapping >参数盒,在Fit projection to中,如果选择Best plane,则创建一个基于刚才选择的映射平面;如果是选择Bounding box,则创建一个基于模型的box平面作为映射平面。
3、单击Project,创建UV布局,并出现手动调节器可进行一些调节简单调节;
4、最后进入UV编辑器中进行复杂调节。

十一、对平面UV贴图的一些说明
1、平面贴图能创建看起来象纹理边界的共享、重叠的UVs。打开Display> Polygons > Texture Border Edges(显示纹理边界),可以清楚看到这个边界。(或者在UV编辑器中按显示边界图标)。
2、的共享、重叠的UVs可能会引起接缝问题,解决这个问题可手动分离UVs(用Edit UVs> Layout >参数盒,设置Separateshells为Folds,Shell layout设置为Along U 或者 Into Square)。
3、如果想一次对多个模型创建平面UV贴图,可选把这些模型联合(combine),创建UV完成后,再将它们分离(separate);否则,只能一个一个地分别创建了。
4、如果一个模型是复杂的有机器官,而且你想一张图进行贴图,则平面贴图可能会产生交迭和扭曲,此时,可考虑采用其他的贴图创建技术。

十二、圆柱UV贴图
基于一个圆柱,沿着模型网格周围进行包裹,而产生的UV布局。模型最好是没有突出物或者空洞。
1、选择想贴图的面;
2、使用Create UVs > Cylindrical Mapping工具,
3、使用手动控制器操作圆柱外形;
4、最后在UV编辑器中进一步编辑。

十三、球形UV贴图
基于一个球,沿着模型网格周围进行包裹,而产生的UV布局。模型最好是没有突出物或者空洞。
1、选择想贴图的面;
2、使用Create UVs > Spherical Mapping工具,
3、使用手动控制器操作圆柱外形;
4、最后在UV编辑器中进一步编辑。

十四、自动UV贴图
由系统针对模型的形状,自动查找和确定UV布局,可能会使用多个映射平面(产生多个UV壳)。对复杂的模型和有空洞的模型,使用自动UV贴图非常有效。
在进一步的操作中,可能需要对分离的壳进行缝合。

可以确定映射平面的数量,也能使用场景中某个对象作为映射平面(通过Load Projection)。
1、选择一个模型,同时打开它的UV编辑器;
2、使用Create UVs > Automatic Mapping >参数盒,设置好参数;
3、单击Project。使用手动调节器调节(在通道栏也能再次调出这个调节器)。
4、使用UV编辑器进一步调整。

十五、用户自定义UV贴图
由用户指定的一个映射平面来创建UV布局。
关于映射对象的标准要求:
1、被用作用户自定义映射的对象必须有UV纹理坐标;
2、推荐这个对象是由分离的面组成。例如,想把某个原始polygons作为映射对象的话,它必须先要用Mesh > Extract分离网格。(不要用Nurbs和细分表面来作映射对象)。
3、这个对象确定了将来创建UV布局时的映射平面的位置和形状;
4、这个对象最大的面数不能超过31。

操作方法:
1、选择一个要贴图的模型,并打开它的UV编辑器;
2、打开Create UVs > Automatic Mapping >参数盒,勾选Load Projection,在输入框输入想用来做映射对象的名字,或者,在场景中选择这个对象,然后单击Load Selected加载;
3、单击Project。使用手动调节器调节(在通道栏也能再次调出这个调节器)。
4、使用UV编辑器进一步调整。

十六、确认UV的放置
创建UV布局时,如何确认它们的位置是否正确合理?一个确认方法是,指定一个包含纹理的材质给这个模型。通过观察纹理来确认。
MAYA提供了一个快速观察纹理的方法,打开Create UVs > Assign Shader to Each Projection,MAYA会自动创建一个叫“defaultPolygonShader”的材质(它包含棋盘格纹理),指定给正在创建UV而已的模型(这个材质也加入进该模型的节点,所以也可以在该节点更换其他的纹理)。
默认,快速观察纹理的方法是关闭的。

十七、在两个模型之间迁移UV布局
通常迁移使用在这种场合:创建复杂模型的UV布局时,先拷贝这个复杂模型,用光滑工具光滑它的网格(避免UV出现重叠),然后对它创建UV布局,之后,再将这个布局迁移到复杂的模型。
1、拷贝模型;
2、使用Mesh > Average Vertices > 参数盒,进行光滑。(注意,这个光滑技术不会增删顶点数量);为达到最佳效果,可以多次重复使用这个工具。
3、为这个光滑模型创建UV布局,然后调节,直到满意;

unity3d游戏开发之UV贴图教程