理解UV贴图

摘要:
1、 了解UV映射UV是驻留在多边形网格顶点上的二维纹理坐标点。UV负责确定纹理图像上的点(像素)应放置在模型曲面上的哪个顶点上。NURBS曲面上的UV是内置的(U和V已自动定义)。每个创建工具都使用预定规则将UV纹理坐标投影到模型曲面上。必须使用UV编辑器进一步编辑自动生成的UV,以获得所需的效果。调整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 > UV Texture 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 Plane Texturing Tool工具,或者,也可以先使用Best Plane 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编辑器中按显示边界图标)。

十二、圆柱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布局,然后调节,直到满意;
4、使用Mesh > Transfer Attributes,迁移(拷贝)这个UV布局给最初的模型。  

免责声明:文章转载自《理解UV贴图》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇远景能源面试+高管终面基于React Native的58 APP开发实践下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

微信小程序----返回上一页刷新或当前页刷新

1.Reload()方法刷新当前页面;2.replace()方法刷新当前页面;3.页面自动刷新当前页面;实现js刷新当前页面的三种方法使用微信小程序--返回上一页刷新或当前页面刷新1.在实现效果之前,您需要了解微信小应用程序的页面生命周期。如果你不太清楚,你可以看到微信小程序——页面生命周期;2.我们可以知道微信小程序页面由五个循环组成:onLoad、onR...

dBFs和dBm

dBFs和dBmdBFs是用来表征数字域功率值的大小,一般情况下我们定义0dBFs为数字域满刻度功率值,即数字域中功率的最大值;因此看到的dBFs的值都是负的。...

Nginx实战-后端应用健康检查

utm_source=tuicool&utm_medium=referral公司前一段对业务线上的nginx做了整理,重点就是对nginx上负载均衡器的后端节点做健康检查。比如如果将max_fails设置为0,则代表不对后端服务器进行健康检查,这样还会使fail_timeout参数失效。...

MAC连接安卓手机通过adb指令安装apk

安卓apk可以通过adb命令安装。在MAC计算机上,如果你想通过命令行在Android手机上安装apk,你需要执行以下操作:;总之,将Android SDK的adb命令添加到环境变量中,然后通过adbin stall将apk从计算机安装到手机。最终安装过程中出现问题:无效APKfile解决方案:将要安装的APK文件放入平台工具文件,然后再次输入命令以成功安装...

Python读取JSON数据操作实例解析

为了遵循JSON规范,您应该只编写Python列表和字典。JSON编码格式与Python语法几乎相同,只是存在一些细微差异。...

【转】力控的60个经典问题

这是因为在赋值前没有对数组元素做对其指向的变量进行指定。数组元素指定形式:IV[i]=&VAR//表示间接变量IV的第i个元素指向变量VAR。运行后即可在力控的画面中播放Flash动画。支持,力控可以通过PPI、MPI、自由口等方式与S7-200通讯。...