Mar 20

功能提示:其实利用下边的回复链接可以找到每一章每一节

此文出自国际Maya认证教师:王之纲(我的老师),转载请注明出处以及撰写人!

写在前边的话:

这个教程我很早以前就想发布出来了,可是一直不知道到底是发布在博客上好,还是投稿好.

而现在这些东西,都是在离线发布软件上写好了保存下来好久的.只因为我觉得,总要将版式什么的调整好了再说吧!

OK.让我们开始.

自然,这一篇仅仅是对文章的一个索引..让我们先看看所有的章节.选择您需要的看就可以了.但是对于初学,我建议还是一篇一篇的看完的好!

第一章:理解Maya动画

第二章:变形动画

第三章:角色表情的动画

第四章:角色的动画设定

第五章:人体的运动规律

第六章:非线性动画

第七章:动物的关键帧动画

此文出自国际Maya认证教师:王之纲(我的老师),转载请注明出处以及撰写人!

BTW:终于完成了所有的上传和更新…现在的时间是3.58am…该区睡觉了.过短时间上传一个PDF的文档给那些没有耐心一篇篇浏览的人!:D

written by doo \\ tags: , ,

Jan 17

    (一) General Utilities

    clip_image001

    Array Mapper :给纹理的颜色映射阵列贴图属性,它一般用于粒子系统。它是利用材质节点属性来控制粒子的排列属性,调用色彩属性来控制每一个粒子的发射速度及发射频率。典型的例子就是给粒子物体调用纹理颜色。

    Condition条件节点产生一个基于属性中指定条件的颜色输出。条件节点需要两个颜色值和一个算法。

    这里的Operation即条件功能节点中的相关条件:等于、不等于、大于、大于等于、小于和小于等于。当Frist term和Secend Term 满足算法时,就

    输 出颜色一,若不满足算法,就输出颜色二。我们利用这个节点可以生成双面材质。在如何区分模型的内外面时,我们运用了Sample Info节点。根据 Sample Info节点输出的每一个点的法线信息来判定它是里面还是外面。这时条件节点就能够判定相机是看到的里面还是外面然后给予

    clip_image002

    条件功能节点值的的设定取决于你设定的条件。下面的条件语句,决定了条件功能节点的运算方式:

    clip_image003

    Light Infor:提供灯光信息,灯光相对于纹理位置的信息,要使用Light Infor节点必须关联灯光和Light Infor的World Matrix。(也可以连接任何物体的World Matrx,得到他跟投影位置的距离)

    此节点提供:1。灯光在世界坐标系的位置

    2.非电光源的照射方向

    3.灯距投影点的距离

    Muitiply Pide:Multiply Pide节点是由三部分构成的。首先是有两个输入值:Input1和Input2,然后有一个运算器(Operator)。你可以设置运算器的算法为乘、除、或者是幂函数。

    当我们使用Multiply计算结果时,节点将Input1和Input2两个值进行相乘:

    clip_image004

    使用Pide计算结果时,节点将Input1除以Input2:

    clip_image005

    当设置为Power时,Input1和Input2两个值进行幂运算:

    clip_image006

    +/-Average 加、减法、平均值

    clip_image007

    No operation:不运算

    Sum: 加法运算

    clip_image008

    Subtract:减法运算

    clip_image009

    Average:平均值运算

    clip_image010

    Reverse翻转节点将输入的值进行翻转。典型的例子是在你需要将一张贴图同时作为凹凸和透明贴图时。为了得到正确的结果,你需要两张单

    独的贴图或者将贴给透明通道的图片连接到一个Reverse(翻转)节点上再输出到凹凸属性上。

    Output = 1 - Input

    Sampler Infor:在阴影网格是获取有效信息,在采样计算时为渲染获取每个点有用信息点的空间位置、方向、切线、相对摄像机位置

    clip_image011

    Sample Info Arribute:point world、point Object、point camera是不同坐标系的位置的取样

    Normal Camera 提供相对于相机的面的方向的取样信息

    UV Coord :UV坐标的取样 (0—1)

    Ray Direction:从相机看该点的角度,对此进行取样。

    Tangent UCamera,Tangent VCamera:对摄像机表面切线的取样

    Pixel Center:提供Pixel Center X和Pixel Center,它依赖的是图像,而不是几何体

    Facing Ratio:提供一个表面法线与视角度夹角

    采 样信息提供了被渲染表面上的每一点的信息。使用这些信息,你可以做出一些很有趣的材质效果。例如,当你将Sample Info节点的 Facing Ratio值连接到一个材质节点的透明度属性时,Sample Info节点为表面上的每个点返回一个介于0和1之间的值,这个值的大小是 基于这些点和相机的角度而定的。

    clip_image012

    Flipped Normal:ON/Off 依赖于物体两边是否采用不同的纹理

    Set Range:指定范围,可以将原有的范围设定成一个新的范围。此节点

    要与其它节点结合使用。

    clip_image013

    Value:Maya将此值从老区域映射到新区域

    Min/Max:是新的区域的最小值和最大值

    Old Min/Old Max:使新区域的最小值和最大值

    UV chooser:指明选择那些UV应用于纹理

    Vector Product:用矩阵作为矢量的乘积

    clip_image014

    Output=Input1 (Operation) Input2

    clip_image015

    如果Input1和Input2两个矢量制分别是(a,b,c)和(d,e,f)

    Dot Product(点乘):

    Dot Product = (a*d) + (b*e) + (c*f);点乘运算是一个单值

    Cross Product(叉乘)

    x = (b*f)-(c*e)

    y = (c*d)-(a*f)

    z = (a*e)-(b*d)

    差乘运算可以根据Input1和Input2得出一个新的矢量(x,y,z)

    如果Input1是矢量(a,b,c)

    另一个Input2是矩阵

    A B C D

    E F G H

    I J K L

    M N O P

    Vector Matrix Product(矢量矩阵)

    x = (a*A) + (b*B) + (c*C)

    y = (a*E) + (b*F) + (c*G)

    z = (a*I) + (b*J) + (c*K)

    Point Matrix Product(点矩阵)

    x = (a*A) + (b*B) + (c*C) + D

    y = (a*E) + (b*F) + (c*G) + H

    z = (a*I) + (b*J) + (c*K) + L

    (2)Color Utilities

    clip_image016

    Blend Color(混合颜色):

    Multiply Pide节点同样是由三部分构成的。你有两个输入值,可以用它们输入两个纹理的颜色输出值,然后有一个混合器(Blender),使用这个节点的目的是把这两个值混合起来。

    而混合器的作用就是控制着两个值如何被混合起来。混合器的值也可以贴图,这样,这张贴图就成为这里的遮罩。

    clip_image017

    Blender 控制混合比例

    Clamp工具用于切除某一范围以外的值

    clip_image018

    Min:输出的最小值

    Max:输出的最大值

    Contrast 用于增加或减少对比度

    clip_image019

    Value 调整输入的染色及纹理

    Contrast 控制对比度的数值

    Bias 调整对比度的中间位置 增加对比度的中间值图像变亮,减小对比度的中间值图像变暗

    Camma Correct 用以光滑处理图像中的颜色,对于图像的亮部和暗部影不是很大,对图像的中间调影响很明显

    clip_image020

    Hsv TO Rgb 色相、饱和度、亮度的模式向红、绿、兰模式的转换

    clip_image021

    Luminance 将彩色图像转换成灰度图像

    clip_image022

    Luminance = 0.3 red + 0.59 green + 0.11 blue

    Rgb To Hsv:红、绿、兰模式向色相、饱和度、亮度的模式的转换

    clip_image023

    (3)Switch Utilities

    clip_image024

    Switch Utilities:几个物体共同享有材质的属性,如果同场景中有大量相似材质而几个材质之间又略有不同的话就可以使用它了 Switch能将不同的贴图付于同一个shading.

    Single Shanding Switch:是一个浮点的属性

    Double Shanding Switch:是两个浮点的属性

    Triple Shanding Switch:是两个以上的浮点属性

    Projection and Stencil:投影及蒙版工具

    投影工具是将贴图映射到表面,不象普通的贴图形式是将贴图“包” 在物

    体表面的

    蒙版工具:可以用遮罩来屏蔽原有纹理图像,使之形成镂空,遮罩的黑色部

    分使图像变得纯透明,遮罩的白色部分使图像显露出来,遮罩的灰色部分使

    图像变得透明

    (4)Particle Utilities

    clip_image025

    Particle Sampler:是针对粒子的一个取样方式,它只在软在渲染时起作用。它可以对粒子的任何属性进行取样。

    (5)Image Planes

    clip_image026

    Image Planes:它是与相机中的贴图相联系的,相机中进行贴图后,它就

    会在出现此图标

    (6)光学特效

    clip_image027

    Optical Fx:可以很快的加入镜头光、辉光、光晕等(Maya有一个光学效果节点(叫做OptiF/X),通过 它可以为点光,面光和聚光产生辉光,光晕和镜头闪光等特技.灯光特技在模仿不同的摄像机滤镜,星光,蜡烛,火焰或是大爆炸时是很有用的.光源必须在摄像机 视图里面,并且所有效果都是后期处理过程,意思是它们在所有常规渲染完成后才有作用)

written by doo \\ tags: ,

Jan 17
    一、一个简单的例子

    下面让我们通过一个简单的例子,了解UV编辑和应用的一般过程,对UV有一个初步的认识。(对UV有一定了解的朋友可跳过此小节)

    我们的学习目标是根据下图的色彩设计稿,为模型分配UV,并根据安排好的UV绘制简单的贴图。

    clip_image001

    源模型建成后,UV重叠和拉伸太多几乎不可用,如下图,我们必须根据要求重新映射和编辑UV。

    让我开始吧!

    1:打开文件box_uv.mb,在选择Window > UV Texture Editor打开UV编辑器,选择视图中的物体,从UV编辑器中我们会发现物体UV很乱。

    clip_image002

    2:我们从小的Box物体开始着手。打开Hypershade,创建一个Lambert材质,将uv_test_2.jpg指定给它的color属性,再将材质球指定给视图中的物体。

    将贴图的Place2dTexture属性中的RepeatUV都改为10,使贴图方格更密一些,从视图中我们可以看出因为UV重叠和拉伸物体上的方格贴图很不规则。如下图

    clip_image003

    2:按F11,进入物体的面选择模式,选择顶部的圆柱体的面,点击Edit Polygons > Texture > Cylindrical Mapping,给它一个圆柱体贴图,视图上会出现圆柱体贴图操作器,现在可以看出小方格贴图已很规则了。

    按F12,进入物体的UV选择模式,UV点显示为紫色,在圆柱体上选择任意一些UV点,在UV Texture Editor编辑器菜单中选择Select > Select Shell,这样我们就选择了圆柱体UV块。在UV Texture Editor编辑器中,按W键使用移动工具将其移至旁边,避免与其他UV重叠,有利于看得更清楚。

    按R键使用缩放工具,缩放UV点,同时观看3D视图直至方格纹理变成正方形。

    clip_image004

    3:以同样的方法给侧面的两个圆柱体映射UV,由于侧面的两个圆柱体方向不一样,映射后我们要在通道栏中选择映射节点,旋转映射轴向RotateX为90度,并将UV块拖至旁边。

    clip_image005

    4:选择物体顶部的面,选择Edit Polygons > Texture> Planar Mapping > ,打开Keep Image Ratio选项,将Mapping Direction选项改为Y Axis,如下图,点击Apply完成平面映射,并将映射的UV块移至旁边。

    clip_image006

    5:以同样的操作方法完成物体余下的面,左右、前后和下部,注意选择相应的轴向,也就是Mapping Direction选项,完成各个面的平面映射,并将映射的UV块移至不同的位置避免重叠。

    clip_image007

    6:进一步给未完善的地方映射UV,例如圆柱体的顶部、立方体正面和后面的凹槽边缘。

    选择3个圆柱体的顶部的面,点击Edit Polygons > Texture> Automatic Mapping,给予3个面自动映射方式。

    立方体正面和后面的凹槽边缘与其他面一样使用平面映射方式,使用时将选项中的Mapping Direction改为相应的轴向。

    clip_image008

    7:到此我们已将物体的UV分成很多块面,已解决了重叠和拉伸。

    clip_image009

    8:使用缩放工具,缩放调整各个UV块面,并观察视图使方格看起来都一样大小,这样UV就有一个统一的比例。

    根据需要选择UV块面的边,点击UV Texture Editor编辑器菜单Polygons > Move and Sew UVs命令,缝合一些 UVs,将UVs拼成几个大的块面,这样利于减少UVs的接缝。

    使用缩放和移动工具,将所有的UV块面安排在0-1的空间,并充分地利用这个空间。

    clip_image010

    9:在UV Texture Editor编辑器菜单中选择Polygons >UV Snapshot…,输出一张1024尺寸UV图。

    在Photoshop中,打开输出的UV图,根据色彩设计稿和UV线框绘制纹理。创建一个新的材质球,将刚绘制纹理作为它的color贴图,并将材质球指定给视图中的物体。

    如果感觉还不错,用同样的方法完成另一个物体吧!

    最终效果如下图:

    clip_image011

    二、认识UV

    好的贴图纹理必须基于合理的UV分布。

    UV是定位2D纹理的坐标点,UV直接与模型上的顶点相对应。模型上的每个UV点直接依附于模型的每个顶点。位于某个UV点的纹理像素将被映射 在模型上此UV所附的顶点上。多边形和NURBS物体UV存在的方式不同,多边形的UV是一个可编辑的元素,而NURBS的UV是表面内建的,且不可编 辑。

    多边形和NURBS的UV各有优点:

    多边形的UV:优势在于可灵活编辑,缺点是对于复杂的模型需要花费大量的时间来映射和编辑UVs。

    NURBS的UV:UV延展均匀、完整和不重叠性是NURBS的自身UV的优点。但模型布线要求相对均匀,否则会拉伸纹理。

    clip_image012

    多边形模型的UV

    clip_image013

    NURBS模型的UV

    打开文件:5.1_about_uv.mb,并打开UVTexture Editor窗口,当我们选择多边形物体时,物体的UVs也会在UV Texture Editor窗口显示。

    clip_image014

    通过选择多边形的UV元素遮罩, 我们可以拖动所选择的绿色UV点。当选择NURBS物体时UV Texture Editor窗口只显视灰色的不可编辑的参数线。

    三、NURBS的UV

    按定义,NURBS表面有4个边并有规律地排列UV参数的行和列。在NURBS表面中,UV始终存在,不像多边形需要创建或编辑,它具有NURBS面片内置的、不可以进行编辑的特性。而polygon与subdiv的UV是作为一个可编辑的元素。

    法线决定NURBS曲面的正反,射出法线的面为正面。用“UV右手定则”可以方便地定义哪边是正面,如下图,如果拇指指向U正方向,食指指向V正方向,中指垂直于食指和拇指,指向NURBS表面的法线。表面法线的概念对纹理、渲染很重要。

    clip_image015

    选择NURBS模型,使用Display > NURBS Components >Surface Origins命令,可以显示UV的方向,缺省情况下红色为U向,绿色为V向,蓝色为法线方向。想看到法线,先选择表面再选择Display > NURBS Components > Normals(Shaded Mode)

    clip_image016

    显示法线的NURBS表面

    clip_image017

    显示UV的方向

    如果2D纹理在NURBS面片上放置的话,不管UV边的比例是不是1:1,都可看作NURBS面片的UV充满纹理的0~1正方形空间。如下图:

    clip_image018

    不同长宽比的NURBS面片应用相同尺寸的纹理

    clip_image019

    纹理的0~1空间,上图中的4个红色空心点,分别定义纹理的4个边界,这4个点组成的空间为0~1的纹理空间

    在Maya中,如果文件纹理是正方形的,在渲染时将会的得到最佳效果。使用非正方形的纹理会增加一定的渲染时间,一般的做法是在绘图程序中将图像尺寸改为2的冥次方,例如256×256,512×512,1024×1024等。

    NURBS的UV分布受模型表面参数线的影响。如果模型Isoparms的分布不均匀,就造成默认UV分不不均,从而拉伸了二维纹理贴图。应此在NURBS建模过程中尽量保持型Isoparms参数线的分布均匀。

    clip_image020

    2D纹理指定给每个N U R B S表面,表面根据内建的UV定义纹理分布

    clip_image021

    clip_image022

    使用棋盘格文件纹理可以非常清晰的看到NURBS表面因参数线不匀而产生的贴图拉伸。

    clip_image023

    如上图,当上图正方形纹理指定给非正方形NURBS表面时,纹理产生了一定的挤压和拉伸,可以从图中看出纹理中上的数字严重挤压,在photoshop中绘制纹理时会产生不可预期的效果。

    clip_image024

    闹钟外壳纹理挤压和拉伸渲染后的效果

    clip_image025

    钟表板的NURBS参数线分布均匀贴图没有拉伸变形

    在NURBS建模过程中,注意一些布线规则有利于方便的应用纹理。尽量使表面参数线间隔均匀,即等参线的网格均匀,避免波纹曲线出现,避免参数线间隔在不需要造型的地方忽宽忽窄,当然参数线间隔不可能绝对相等,只是相对即可,如下图:

    clip_image026

    四、使用Fix Texture Warp选项

    选择NURBS模型,打开属性编辑器,在Texture Map栏中打开Fix Texture Warp选项,可以对纹理的不均匀分布进行修正。而不需要依赖于NURBS表面的UV参数,Grid Div PerSpan U、Grid Div Per Span V、表示U向和V向每跨度的、分割数目,默认数值是4,数值越大纹理分越均匀。

    clip_image027

    打开Fix Texture Warp选项后,操作视图不能实时显示出来,只有渲染后才能看到。

    clip_image028

    应用Fix Texture Warp选项后渲染后,与左图相比,纹理虽然有拉伸,但分布相对均匀。

    虽然纹理分布均匀,但还是有拉伸,这是应为我们使用的是1:1的纹理贴图,而闹钟壳的NURBS面片长宽比不是1:1。下面进一步调整NURBS模型的纹理,是其比例正确。

    在Hypershader窗口中,选择模型的place2dTexture节点,打开属性编辑器,调整Coverage的数值,同时察看渲染视窗的更新效果,使用IPR渲染可快速看到调整结果,直到棋盘格看起来变为正方形为止。

    clip_image029

    根据IPR渲染结果,判断纹理贴图使用范围,从上面的例子可以看到纹理只使用整个面积的1/3左右。根据比例在绘图软件中绘制贴图,然后指定给模型。

    clip_image030

    clip_image031

    五、确定贴图长宽比例

    还有一种方法确定纹理比例,使用Arc Length测量工具测量出NURBS表面的精确弧长,再根据比例绘制贴图。

    确定贴图长宽比例具体步骤:

    1:测量模型

    使用弧长测量工具,Creat>Measure Tools>Arc Length Tool测量表面U向和V向的长度。测得的长度为7.94和34.8。

    2:绘制贴图

    根据测的长宽比,在绘图软件中绘制贴图纹理。

    3:更改边长

    在绘图程序中将图像尺寸改为正方形,边长为2的冥次方,例如512×512,1024×1024等。

    4:调整2d布置节点

    2d布置节点决定二维纹理在模型表面的分布,将U向Coverage 数值改为4.3(34.8/7.94≈4.3)。

    5:渲染完成

    需要注意的是:不必计算得绝对准确,只要纹理从视觉上看来没有拉伸就行。

    clip_image032

    clip_image033

    六、NURBS表面的参数化

    NURBS表面参数化直接影响贴图效果,NURBS表面参数化分为:统一参数化(Uniform)、弦长参数化(Chord Length)两种。统一参数化表面具有更可预见的值,弦长参数化的表面可以较好的分配曲率,允许纹理相对均匀地分配在不均匀的表面上。

    使用Fix Texture Warp属性可改变纹理分配使纹理分配更均匀,在制作动画时,如果表面有局部变形,贴图会滑动产生不正确的效果。

    我们将通过NURBS曲线理解统一参数化(Uniform)、弦长参数化(Chord Length)

    1:打开Create>CV Curve Tool工具选项,分别用Uniform、Chord Length选项创建两条NURBS曲线(按S键使用吸附网格工具,保持两条线的CV点一致)

    clip_image034

    2:选择Display>NURBS Components>Edit Points 显示曲线的编辑点

    3:拾取遮罩 Curve Point,在曲线上拖动,Maya视窗顶部会显示所在点的参数,并随着拖动不断变化。

    clip_image035

    4:以统一点间距(Uniform)参数创建的曲线,第一个编辑点的U值为0,第二个的U值为1,第三个的U值为2,如此类推。第三个编辑点和 最终编辑点的中间一点值为2.5。不管两个编辑点的实际距离有多长,所有两个编辑点间距离值是相等的。按这种方式计算曲线点值的方法称之为统一参数化。

    以弦长点间距(Chord Length)参数创建的曲线,第一个编辑点的值为0,第二个的值为2.4907,第三个的值为5.4379。第三个编辑点和最终编辑点的中间一点值为8.5402

    曲线U向参数值取决与编辑点的距离,而不是点的数量。

    clip_image036

    曲面在三维空间中由U向和V向两个参数来定义,比曲线多一个V向参数,形成一个方形的NURBS面片。

    clip_image037

    七、NURBS表面重建

    clip_image038

    下图用统一参数化创建的可乐罐,因为参数线不均匀引起贴图拉伸,从视图和渲染图中都可看出来。

    打开表面Fix Texture Warp属性可以解决此问题,如果可乐罐要做变形动画,这种方法是不可取的。我们需要重新创建表面,(不能使用Rebuild Surfaces命令)

    clip_image039

    重建表面:

    拷贝[cdrom>\005\tin_rebuild]项目文件夹至硬盘并打开文件tin_rebuild_lo_ren_v001.mb

    1:选择可乐罐,按1键最低精度显示模型,并打开 Edit Curves > Duplicate Surface Curves > ,选择V向,复制NURBS曲线。

    clip_image040

    2:选择复制的NURBS曲线,并拖到原可乐罐旁边,以便于比较。

    clip_image041

    3:从下至上依次选择曲线,选择Surfaces>Loft> ,勾选Chord Length选项,重新放样表面。

    clip_image042

    4:指定同一个材质给新生成的边面,(按6显示硬件纹理)可以看到纹理没有拉伸,获得我们需要的效果

    clip_image043

    5:渲染后,纹理同样正确。

    通过重建表面有利于做变形动画。

    clip_image044

    八、NURBS表面方向

    由于表面创建的方法不同,表面方向有可能不正确,可通过编辑2D纹理的place2dTexture节点属性或使用Edit NURBS >Reverse Surface Direction 来修正。

    为了便于纹理贴图、渲染尽量将UV原点安排在左下角,法线朝外。良好的习惯将大大提升后续工作的效率。

    clip_image045

    利用小相架上的一张照片来了解NURBS表面的方向(像架是多边形,照片是NURBS)[cdrom>\005\frame(项目文件夹)]

    clip_image046

    上图中相架上照片因为表面UV方向不正确,造成贴图定位不对没有达到预期的安排

    clip_image047

    Reverse Surface Direction选项:

    U:沿U向反转CV,V:沿V向反转CV,Swap:交换UV方向,Both:U向和V向同时反转CV

    1:打开文件frame(项目文件夹)

    2:选择NURBS模型,使用Display > NURBS Components > Surface Origins,打开NURBS表面的方向和法线显示,作为参考。

    clip_image048

    3:选择Edit NURBS>Reverse Surface Direction> ,打开对话框选择Both,反转表面方向。

    4:得到了我们所需要的正确效果。

    clip_image049

    九、了解多边形的UV

    多边形不像NURBS表面具有固有的2D坐标。多边形必须使用映射的方法来获取合理的UV坐标,UV信息是基于2维的,是一个平面,可以在UV Texture Editor中看到并编辑。从Window>UV Texture Editor 打开UV编辑器。

    我们在创建基本多边形几何体时也能创建缺省的UV坐标,但模型在编辑顶点及其他操作后,缺省的UV大多不可用,必须重新映射。

    UV操作在一般的工作流程的位置是:

    clip_image050

    clip_image051

    缺省多边形几何体的UV

    clip_image052

    编辑点操作后的UV

    为多边形指定2 D 纹理, 并在视图中显示纹理( 按6键),多边形表面如果没有UV信息就会在视图中显示半透明的斜条纹,渲染后无UV信息的部分也不会显示纹理。这样的情况我们必须重新映射UV。

    clip_image053

    多边形的UV映射和编辑,是一个反复操作的过程,同时也是繁重的,必须把它当成一门艺术才能做得更好。要创建一个适配模型的最合理的UVs,可能需要多次UV映射,反复的UV编辑直到满意为止。

    一个简单的面包也要通过多次映射,两次平面,一次圆柱体,如下图

    clip_image054

    Maya默认的状态下创建多边形物体就创建了缺省的UV,当然也可以不创建UV,如下图

    clip_image055

    当创建一个新的UV映射方式后,旧的UVs将会被新的所替代。

    clip_image056

    十、多边形UV编辑的原则

    多边形的UV编辑取决于不同的应用目的,当然也有制作人的习惯差异。一般来说最合理的UV分布取决于纹理类型、模型构造、模型在画面中的比例、渲染尺寸、镜头安排等。但有一些基本原则是应该遵循的。

    通用的一些基本原则是:

    1、UVs尽量避免相互重叠(除非有必要)。

    2、UVs避免拉伸。

    3、尽可能减少UVs的接缝(即划分较少的UV块面)。

    4、接缝应安排在摄像机及视觉注意不到的地方或结构变化大、不同材质外观的地方。

    5、保持UVs在0-1的纹理空间,并充分利用0-1的纹理空间。

    下面让我们逐步了解以上5点原则

    1、UVs尽量避免相互重叠(除非有必要)。

    UVs重叠,模型的贴图就会重叠,重叠的模型部分纹理就会相同,不利于纹理贴图的安排。例如我们将史卢比的衣服设计成前面红条纹,后面兰条纹,但由于左右两边的UVs重叠,造成贴图重叠两边只能颜色统一,不能达到我们的要求。展开UV就能解决此问题。

    clip_image057

    clip_image058

    展开UVs得到正确的效果

    如果遇到纹理图案需要重复的物体,则可以利用UVs重叠来节约一些纹理空间,例如瓷砖、天花板、花纹布、墙角线等等。从下图中我们可以看出墙角 瓷砖UVs重叠了多次以获得图案的二方连续效果。在使用UVs重叠时要注意不应重叠太多,否则看起来不真实,因为现实生活中没有如此雷同的得物体。

    clip_image059

    2、UVs避免拉伸。

    UVs拉伸后会造成2D贴图拉伸,纹理会产生变形,不能达到预计的效果。

    clip_image060

    UVs拉伸后,贴图拉伸产生不正确的效果

    clip_image061

    应达到的正确效果

    3、尽可能减少UVs的接缝(即划分较少的UV块面)。

    大量UV接缝会影响纹理绘制的效率,因为我们不得不花大量的时间来处理接逢处像素的衔接。如果在接逢处贴图稍微有点颜色差异,就会明显的显露出来。在保持UV不拉伸的情况下尽量将UVs拼成几个整块。

    clip_image062

    UV分配的块面太多,如果贴图不是实色造成接逢接处的颜色差异在制作过程中没有必要一味追求较少的UV块面,例如:生物模型表面有太多的起伏结构,如果强行将UVs缝合成一整块就会造成大量的纹理拉伸。我们必须根据模型的实际情况。

    clip_image063

    强行将一只Bug的UV合并成整块,造成了脖子部分纹理的拉伸

    4、接缝应安排在摄像机及视觉注意不到的地方或结构变化大、 不同颜色、材质外观的地方。

    人物建模建模中,UV的接逢一般安排在头的后侧,手臂、手指、腿的内侧等我们不太注意的地方。

    当然也可以充分利用不相同的材质外观的交接处来分割UV。

    clip_image064

    分配了UV的头部,接缝安排在后侧和下颌处

    clip_image065

    史努比的腿和鞋是单个多边形物体,腿和鞋材质颜色不同,我们可以从这里分开UV

    5、保持UVs在0-1的纹理空间,并充分利用0-1的纹理空间。

    打开UV Texture Editor,0-1的UV坐标空间,超出这个空间范围模型就会使用相同的纹理,因为它是无限重复的。UVs编辑完之后我们应该将UVs安排在这个0-1的范围内。

    clip_image066

    由于UV超出0-1的空间,造成纹理重复

    clip_image067

    在0-1空间的正确效果

    假设我们的目标渲染尺寸是640×480,文件纹理贴图的尺寸是1024×1024,但安排的VUs块面却只有200×200像素,如下图,这 样渲染后会造成严重的贴图分辨率不足。我们虽然使用了1024×1024尺寸的贴图,但实际使用的范围是200×200像素,渲染后贴图会很模糊。

    clip_image068

    clip_image069

written by doo \\ tags: ,

Jan 17

计算机动画制作除人力因素外始终存在两大瓶颈:显示速度和渲染速度。屏幕显示方面,即便专业图形卡其性价比也并不尽如人意,复杂场景中你期待的自由流畅的屏幕拖动刷新始终没有出现。渲染方面,随着精细建模手段的丰富,材质灯光及环境表现从光线追踪到光能传递的进步,照片级的输出已经成为现实,但是渲染时间绝对是一个考验人耐性的过程。

从现实出发,普通PC配置的MAYA如何克服瓶颈提高制作效率呢?

场景设置上,人力的高效率仍然是主要的。要考虑建模精度与视觉容差的优化,将建模与镜头景别大小、材质互补关系、动作变形幅度和位置等等一同综合权衡。要考虑材质表现的多样性,同样的质感可能有更简洁有效的节点关系,同时切记质感还与环境、灯光有重大关系。要考虑动画设置的合理性,优化历史构架,充分利用动力学转换和缓存存盘等手段,将复杂动作简单化。场景设置的优化不是一个单纯的Optimize Scene Size菜单命令所能够全部解决的,需要有意识地累积经验,良好的习惯会让你事半功倍。

而在渲染方面,除了场景本身的有效设置,还有一个利器可以充分利用,那就是网络渲染—将局域网中所有PC集中起来对同一动画场景进行渲染。目前虽有一些针对MAYA的网络渲染插件如Netrender、Muster等,但一般用户略显烦琐,且分布式渲染方式(将同一帧的渲染同时分配到所有机器)对参与机器要求较高,稳定性难以预料。其实分布式渲染在静帧上优势明显,而对于影视序列图像渲染,用帧分配方式未尝不可。以前我们是纯手动设置,在不同的机器上渲染不同的帧数段。其缺点同样是烦琐,且各台机器因性能差异而进度不一,分配帧数难以平衡,有时别的机器已渲染完而落下一两台机器尚有许多帧数未完成,这时再来手动分配又是一个相当麻烦的事情。

笔者偶尔琢磨render命令参数中的-rep,其作用是在图像序列文件输出中跳过现有文件而渲染下一帧,其本意可能是用于重新渲染时的自动续存。好了,利用它来在局域中自动为各台机器分配帧数是个不错的主意。

前提:要有畅通的局域网,各台机器安装的MAYA软件版本要一致,场景项目输出文件是序列图像而非单帧图像或avi等单一文件格式,场景项目所在目录和渲染输出文件目录都设置共享(最好起英文名)。

具体方法如下:

(1)场景项目所在机器的dos渲染命令:

  1. render -proj 项目路径及目录名 -rd 输出文件路径及目录名 -rep 项目路径及目录名场景文件名

。(2)任意参与渲染的机器的dos命令:

  1. render -proj \项目所在机器名项目目录名 -rd \项目所在机器名输出文件目录名 -rep \项目所在机器名项目目录名\场景文件名

举例说明。假定场景项目在“机器名”为p4的机器上,项目目录为d:work,场景文件为my.mb,输出文件目录为e: ec。首先将两个目录都设置共享,然后在p4这台机器上执行如下渲染命令:

render -proj d:work -rd e: ec -rep d:workmy.mb

在其它机器上执行如下渲染命令:

render -proj \p4work -rd \p4 ec -rep \p4workmy.mb

怎么样,很简单吧?每台机器只需一行dos命令就解决问题了。

这里的三个参数都是必要的。-proj参数用于指定场景项目目录,它涉及渲染所需帖图文件、粒子缓存文件等等的确定。-rd参数用于指定渲染输出文件存放目录,所有机器指向同一目录,-rep参数才有意义。-rep参数让每个参与渲染的机器自动检测并排除已渲染的帧,而按顺序搜索尚未渲染的某一帧进行渲染。需要提醒的是,若中途哪个机器退出,它当时渲染的那一帧有可能没有结束、而其它机器又会跳过这一帧,因此,所有机器渲染完毕后需检查一下输出文件中有无此种“半成品帧”,再对它单独渲染一下。

除了上述三个必要参数,MAYA的dos命令渲染还有非常丰富的内容。在系统dos窗口下输入render -help可以看到所有参数。下面几个常用参数可以根据需要加入到上面的渲染命令中去。-s 设定渲染开始帧,-e设定渲染结束帧。这两个参数在临时指定渲染段落时很方便。-n 设定参加渲染的CPU的个数。0代表所有的,1代表一个,2代表两个,余类推。它用于多cpu的计算机。如果你还没有苦命到一边渲染一边又要开始新的项目,就设置参数 -n 0 吧。

render命令参数很多,最好是在场景的 renderGlobal 里将诸如文件名、分辨率、分层等等比较固定的参数设置好,免得敲命令符时罗里罗嗦。其实利用render命令一次自动渲染多个场景是又一个突出的优势,将它应用到网络渲染中更是相得益彰,只需将上述渲染命令行换成相应的批处理文件就行了。在记事本里编辑文本(参数依照模式自定):

render -proj d:work -rd e: ec -rep d:workmy1.mb

render -proj d:work -rd e: ec -rep d:workmy2.mb

render -proj d:work -rd e: ec -rep d:workmy3.mb

……

存盘为aaa.bat。所有机器都在dos窗口进入该文件位置执行它就行了。

这种网络渲染方式的优点是简单、实用、方便。第一,任何时候随时加入计算机参与或退出渲染,只是退出某台机器时注意一下它的当前帧是否完成。第二,各个机器之间没有相互牵制,而是轮流自动获取下一帧渲染任务,性能水平没有统一要求,稳定可靠。第三,本质上没有工作站与服务器之分,因此也就省却了分别安装两套渲染程序的麻烦,而项目机器与参与机器的唯一区别只是渲染命令中本地路径和网络路径的表述不同。第四,所有参与渲染的机器都不用打开MAYA界面,从而节约资源。

经过实际测试,该方法已在我台动画科局域网进入实际应用,大大简化了工作程序,提高了三维制作项目的渲染效率。需要说明的是这种网络渲染方法只支持MAYA自身渲染器,因为mentalray渲染器的dos命令渲染没有-rep这项参数。作者:朱志华 武汉电视台动画科

written by doo \\ tags: , ,

Jan 17

    这个东西是我刚学会分层渲染之后为了测试而作的一幅作品,希望能帮助大家

    先看一下效果吧。

    clip_image001

    场景建模,我想没什么好讲的,不知道有多少人比我建模都强呢!请注意右边的分层渲染的各个层之间的关系.

    clip_image002

    先是水的材质,水的材质我用的是oceanshader,为了使水的反光强烈一点,还要调oceanshader的glow属性,因为需要一点辉光,我把灯光放的低了一点.记住,每一层都有自己单独的灯光

    clip_image003

    整个场景的灯光如下图,

    先是主灯光,要偏蓝,毕竟是黑夜,我们的月光也是偏蓝

    clip_image004

    辅助光,一个偏绿,一个偏黄,增加色彩丰富感

    clip_image005

    clip_image006

    为了使房屋背部更暗,我加了个darken light 调节为负数,颜色偏黄,便造成暗蓝

    clip_image007

    地面反射光,采用四个spot light,记住要将地面排除在灯光连接之外,只照射地面以上的物体

    clip_image008

    草坪我用的是fur,单独渲染一层,单独打光,主光偏蓝,最后再加一些paint effects里的花的笔刷,丰富场景

    clip_image009

    屋门透出的灯光雾,采用spotlight的lightfog用模型当住一部分灯光

    如下图

    clip_image010

    蝴蝶尾部的粒子采用,发射器沿路径运动实现如下图

    clip_image011

    蝴蝶模型很简单

    clip_image012

    主场景分别按diffuse,shadow,specular,depth,matte,occlusion,渲染出各层,在photoshop里合成,如下图

    clip_image013

    后期合成时进行校色,各层可随意按招自己的风格调出不同的色调.

    房屋贴图我用的是3dtotal里的卡通贴图,在photoshop里按照uv绘制,地面因为看不到,所以不用费劲,石头的贴图也很简单,最后添加背景,校色就可以了

written by doo \\ tags: , , , ,