3D MAX 这个3D镭射窗户贴缝是怎么做出来的

----慕容紫英《仙剑奇侠传四》

PS:为了方便大家阅读,个人认为比较重要的内容-------红色字体显示

个人认为可以了解的内容-------紫色字体显示

       不知不觉就已进入八月了,由于之前没什么时间,所以好久没写博客了,这两个比较空,因此就来写一写关于3D的文章,当然要得到最终的效果需要所用到DirectX库,我们可以下载一个开发工具包DirectX SDK(Microsoft DirectX SDK 是DirectX编程的软件。包含了开发尖端多媒体应用软件不可或缺的开发工具,以及runtime、headers及程序库、范例执行文件、文件、DirectX工具、并且同时支援C++ 以及 Visual Basic开发软件),虽然说已经更新了好多个版本,但是最经典的还是DirectX 9.0版本,其实主要是这个版本可参考的资料比较多,如果你学习最近版本的,那么很有可能你需要看一些外国文章,这对于不喜欢读英文的人来说太痛苦了,因此我们不要一味的赶时髦学习一些最新的技术,从基础开始,循序渐进。而且最重要的是DirectX 9.0版本有最经典的红龙书可以参考!

       好了废话不多说了,我们开始正式的内容,这次要说的内容有两个,一个是3D场景的渲染,另一个就是骨骼动画的显示。(PS:代码较长,文章之中只给出了实现思路,如果需要完整的代码,可以留下邮箱或者私信我!

首先我们来看一下实际的效果吧:

先来看一一个场景大体的轮廓:

       再来看一看地形以及天空(这里说明一下,为了观察方便,我这里选取的天空盒边长比较小,所以很容易看出是方形的天空盒,不过边长设置大些的话,就很难看出了)

看完之后我们就来分析一下,按顺序来吧。

虽然说3D只是在2D的基础之上多加了一个维度,但是难度大的不是一点点。而在3D编程的学习之中最重要的就是3D场景的渲染,当然这也是也是最基本的。如果说2D的编程是贴图的艺术,那么3D编程肯定是渲染的艺术,所以说渲染是3D编程之中最重要的也是最基本的技能。关于3D的渲染,首先你会想要给那个生成的窗口添加什么内容,首先是天空,然后是地形,当然还有必不可少的具体场景画面,这三者一般来说是每个场景都有。好了既然决定了要做什么,那么我们就可以着手去实现它,对于这几者我们都可以将其封装在一个类之中,因为场景的实现这几个必不可少,所以封装在一个类之中后我们可以很方便的调用,我们一个一个来看:

       关于这部分,我们先从最简单的地形入手,最简单的地形当然是类似于那种一望无际,可以想象成一个大平原,周围很空旷,那么这样的地形只需要绘制一个大的三角形网格组成的大的矩形区域就可以了,其实这就是一个二维的平面,那么怎么能让二维的平面转化为三维的平面?

       其实简单一点可以想象为原本是一个大的网格平面,如果你把其中的某一些点往上提一下,或者把某些点往里压一些,那么此时做出来的效果就有一些立体感了,但是还不够明显。不过很明显的感受就是,原本在第一种方式下,我们只需要用(x,y)坐标描述每一个坐标即可,但是在我们在这种方式下如果我们需要描述每一个点的时候就要使用(x,y,z)三维坐标,z坐标代表高度,这样写出来的效果虽然不明显,但是至少比原来的好多了,至少有了立体感。这种方式实现三维地形图的过程之中还涉及到一个关于高位图的概念,什么是高度图呢?其实说白了就是一组连续的数组,在这个数组之中的元素与地形网格中的顶点一一对应,而且每一个元素都指定了地形网格的某个顶点的高度值。

255之间的明暗值。高度图技巧的使用方法就是:首先,将想要制作的三维地形制作为只包含二维高度信息的高度图,然后,利用高度图信息重新制作为三维地形(terrain)。

        当然简单的说一下高度图的制作原理,高度图的主要原理就是将二维信息转变为三维顶点信息,一般情况下,二维xy平面空间在三维图形中对应的是xz平面。其核心原理是:将二维(x ,z)坐标所对应的像素亮度值换算为三维(x, y, z)坐标中的y值,因此,大部分情况下,高度图只包含256色亮度值的黑白图片文件。【二维图形中的亮度值可用来表示三维空间中的高度值】

高位图有很多实现的方式,其中最常用的一种就是灰度图。地形之中某一点的海拔越高的话,相应地该点对应的灰度图中的亮度就越大。上面也说了地形之中最低点将使用0表示,而最高点使用255表示(不过要是遇到一个地形之中大部分的区域的高度都差不多情况下,只有少数地方高度差别很大,这时候可能会有一些小问题

方式一:采用某种算法为基础,写个程序生成,拿出一个伪代码吧,这部分伪代码对应的是InitVB()函数。利用纹理对象读取高度图信息之后,调用LockRect()函数获取存储器的固定指针进行访问。该方法就是光影贴(lightmapping)技术中所使用的必须技术。调用LockRect()函数后,将纹理的长度和存储器的指针存储在名D3DLOCKED_RECT的结构体中,通过结构体的成员参数中的pBits参数可以访问纹理的像素单位。

方式二:通过图像编辑软件、三维建模软件或者专业制作地形的软件来制作,通常的我们可以使用Photoshop(不得不说这款软件的强大,平时游戏之中使用的很多素材我都是通过Photoshop加工完成),当然三维建模软件的话首推3Ds Max和Maya这两款软件。专业制作地形的软件的话,可是看看Terragen这一款软件。

可以通过以下图片简单看一下地址制作效果:(图片源自网上)

当然我们也可以使用3Ds Max软件制作地形图,这样做出来的效果就会很不错,来看一下:

下面给出地形类的设计:

//从文件之中加载高度图和纹理图的函数 //定义一个地形的FVF顶点格式

            说完了地形,那么天空自然也不能少,怎么样制作天空呢?在这里不得不说,其实游戏设计师都是一些视觉“骗子”,他们用自己的技术巧妙地欺骗了我们,如果说的高大上一点,那么可以说游戏设计师是一些视觉“魔术师“

其实三维场影里的天空并不是“真正”的天空,而是用图片拼起来的,欺骗我们眼睛。通常把大家所在的场景用一个几何体包裹起来,再在里面贴上从各个角度的风景图,就好像一个真正的环境一样。想想游戏之中的天空,是不是有点印象?

通常来说,或者说目前来说三维天空的实现主要包括三种类型:

类型一:平面型天空(Sky Plane),这种方式很简单,主要就是用一个平面放在玩家的头顶,这种方式很容易被玩家看出来,真实感太低了,不过对于某些很简单的游戏,这样做也未尝不可,不过要是对于那种强调真实感或者玩家带入感的游戏肯定不会这样做了。

类型二:天空穹庐(Sky Dome),这与上一种方式不同,这也是最难实现的,这种方式放在玩家头顶的是一个曲面,通常是一个半球。虽然这种方式真实性很强,但是这种方式不是目前最流行的,主要也是因为衔接处素材的匮乏,所以不是主流。如以下图片所示:

类型三:天空盒(Sky Box),这一种方式名为天空盒,顾名思义这一种方式是与立方体有关的。同时这也是目前使用最广泛的模拟三维天空的技术,你用谷歌或者百度搜索一下天空盒,你会发现网上关于天空盒的制作层出不穷,如以下的天空盒:


        虽然这样以盒子出现你可能会觉得真有这么简单,难道就不怕被看出来,其实如果制作的好一点,玩家完全看不出来(如果不是有意的观察的话),没错,我们就是在一个盒子里“乐不思蜀”的!

原理:(PS:可能以后的游戏可能会半球用的较多吧?因为这样做出来的比较逼真),我们这里以立方体为例。最简单的方法,莫过于画6个正方形(当然5个面应该也就够了,最底下一个面是地形 ),分别为它们贴上纹理(这样做出来的效果肯定不好),我们选择纹理的时候可以多比较一下,选择一个自己最喜欢的。
说到底,就是把6张图片拼到一块儿去了而已,不过我们在制作的过程之中,其实只要5个面就够了,最底下的面只要使用我们的刚刚制作出来的地形就行了。(不过有些情况下,立方体贴图是映射到一个曲面上,而且,它跟本不使用UV坐标,代替它的是一个3D向量,在DirectX中是D3DFVF_TEXCOORDSIZE3类型。这样就很易的根据表面法向量将周围环境映射到物体表面,实现反射效果(激动人心呢))。

当然在实际的制作过程之中还可以直接导入.X文件(关于什么是.X文件在下文人物模型的时候再提),不过关于制作么,如果不想制作的话,我们可以直接去网上下载资源,毕竟每个人的精力都有限,不可能什么都会,选择一个自己感兴趣的深究下去就行了。不过对这些知识有些了解还是不错的。

       好了,我们来看一下游戏之中天空盒的设计,不过在这之前还是有两个关键点需要注意一下:

             2. 当在场景中移动时,场景中的物体会相对角色移动,但天空盒与自身相对位置保持静止不变(当然我们也可以设计让其绕着Y轴转动,这样就会有云彩移动的效果了,不过建议别设定的速度太快);

       针对1, 可以通过让天空盒的变换后的z坐标位于可视范围内的最大值。这样场景中任何物品都能被正确渲染,并能遮挡远处的天空。因而符合实际情况。

       针对2, 为了实现让天空盒相对自己静止的效果,有两种方法:一是针对任一时刻自己的世界坐标,让天空盒具有相同的平移,这样自己将永远位于天空盒中心,从而相对静止;另一种方法是在渲染天空盒时,不对天空盒进行世界变换,并且让其视角矩阵中平移部分变为[0, 0, 0],这样天空盒可以保持在原点,由于视角空间中相机永远位于原点,因此自己相对天空盒位置总是保持相对静止。(针对一个点,我说一下,我自己的程序之中没有这样做,其实这样也挺好,可以飞上天,与太阳肩并肩,哈哈,不过实际做游戏之中肯定要考虑这一个,否则影响玩家体验性,如果只是练习的话,可以不用考虑)

下面贴出天空盒的设计: //为天空盒类定义一个FVF灵活顶点格式 //从文件加载天空盒五个方向上的纹理 //渲染天空盒,根据第一个参数设定天空盒世界矩阵,第二个参数选择是否渲染出线框

        好了,开始进入场景的加载,不得不说游戏之中场景是一个很重要的元素,没有美的场景,玩家的体验性就会不好,想一想我们玩过的国内外的3A级大作,不管是哪个,在场景上的绘制都是下足了功夫。一般来说3D场景的制作都是在3DS  Max或者Maya上制作的。简单说一下这两者的区别吧,3DS Max这一款软件更加适合于游戏、建筑学、室内设计等等,不过Maya可以说是一款专门为影视特效而生的软件,因此我们会发现利用Maya制作出来的模型效果更逼真一些,因此Maya软件主要是用于动画片的制作、电影制作、游戏动画制作等等。

        总之一句话就是:3DS Max在建筑动画效果上要强于Maya,但是Maya在影视动画上又有独到的优势,所以怎么选择看情况吧(与从事的行业也有一定的关系)。不过有条件的话(有Maya学习资料的话)建议学Maya,如果没有的话,那还是学3DS Max吧,毕竟这个更加普遍,资料也更好找。

       什么是.X文件呢?.X文件就是微软定义的3D模式文件格式,也是Direct3D的默认三维模型的格式,Direct3D自然对他有非常好的支持度,里面有大量的函数可以供我们使用。

Max软件是不支持.X文件的导出的,而网上的素材一般也是.max格式居多,所以需要我们将.max格式转化为.X文件,那么具体应该转化呢。这里需要下载一个Panda插件,不过貌似Panda插件2012版的有,2013版的可能没有,所以如果是2013版的话,可能需要使用别的插件,关于Panda插件的下载,只需要早csdn之中搜索一下一下这个资源就可以了,我记得我就是在csdn上下载的,而且是免积分的。不过下载的时候还是注意一下版本与位数(64位与32位)。

       做完了准备工作之后,我们就可以着手进行我们的模型载入了,把我们的模型载入到游戏程序之中,要在程序之中载入模型的话,最主要的就是把.X文件之中的各种数据分别加载到内存之中,当然这些数据包括顶点数据、材质数据以及纹理数据

第一步:通过.X文件加载网格模型,代码如下:

//从磁盘之中加载网格模型

第二步:读取材质和纹理数据,我们可以从刚刚上面创建的pD3DXMtrlBuffer变量之中去读,代码如下:

//读取材质和纹理信息
//逐子集提取材质属性和纹理文件
 //获取材质,并设置一下环境光的颜色值
 
第三步:也是最后一步,绘制模型,代码如下:简单地用一个for循环绘制就行了




好了,如果说你载入的是一个没有绑定动画的.X文件,那么载入之后,就算大功告成了,不过如果你载入的是一个有动画绑定的,或者说一个有骨骼动画的模型的话,自然而然,你想要让这个模型动起来,那么接下来要做的就是骨骼动画的显示了。





不过骨骼动画是D3D的一个重要应用。尽管微软DXSDK提供了示例Skinned Mesh,但由于涉及众多概念和技术细节,还是很难读懂,我们可以简单来看一下,也不用着急着完全看懂,先学会用,用多了之后,可能你就会发现,你对这个又有了更深的理解。





总体上,绝大部分动画实现原理一致,就是“提供一种机制,描述各顶点位置随时间的变化”。有三种方法:
第一种: 关节动画:由 于大部分运动,都是皮肤随骨骼在动,皮肤相对于它的骨骼本身并没有发生运动,所以只要描述清楚骨骼的运动就行了。用矩阵描述各个骨骼的相对于父骨骼运动。 (大多运动都是旋转型) 易知,从子骨骼用矩阵乘法累积到最顶层根骨骼,就可以得到每个子骨骼相对于世界坐标系的转换矩阵
这种动画,只须用普通Mesh保存最初始的各顶点坐标,以及一系列后续时刻所对应的各骨骼的运动矩阵。不用保存每时刻的顶点数据,节省了大量存储空间。而且比较灵活,可以利用关键帧插值运算,便于通过运算调节动作。缺点是在两段骨骼交接处,容易产生裂缝,影响效果



第二种: 渐变动画:通过保存一系列时刻的顶点坐标来完成动画。虽然比较逼真,但占用大量空间,灵活性也不高。


第三种: 骨骼蒙皮动画(skinned Mesh),相当于上面两方法的折中。现在比较流行。
在关节动画的基础上,利用顶点混合(Vertex Blend)技术,对于关节附近的顶点,由影响这些顶点的两段(或多段)骨骼运动,分别赋以权值,共同决定顶点位置。相当于在骨骼关节上动态蒙皮,有效解决了裂缝问题。



你可以在微软的DXSDK的帮助文件中搜索“Geometry Blending”主题,有裂缝及其解决办法图示。
其实我们如果知道.X文件如何储存骨骼动画,有助于我们使用骨骼动画。理解X文件格式,对用好相关的DX函数是非常重要的。不含动画的普通X文件,有一个Mesh单元,保存了各顶点信息各三角面的索引信息材质种类及定义等。动画X文件,则在这个单元中增加了“各骨骼蒙皮信息”、“骨骼层次及结构信息”、“各时刻骨骼矩阵信息”等。

我们都知道每一个.X文件都有Mesh单元,储存网格信息,当然动画模型肯定也有,在Mesh{}单元中,在原有的普通网格顶点数据基础上,新增了XSkinMeshHeader{}结构,以及多个SkinWeights{}结构。用以描述各个骨骼的蒙皮信息。其中,XSkinMeshHeader是总括,举一实例,如下: //一个顶点可以受到骨骼影响的最大骨骼数,可用于计算共同作用时减少遍历次数 //一个三角面可以受到骨骼影响的最大骨骼数。这个数字对硬件顶点混合计算提出了基本要求。 //当前Mesh的骨骼总数。
DWORD nWeights; //权重数组的元素个数,即该骨骼相关的顶点个数 Matrix4x4 matrixOffset; //骨骼偏移矩阵,用来从初始Mesh坐标,反向计算顶点在子骨骼坐标系中的初始坐标。 说完了.X文件如何储存骨骼动画,接下来就说一说骨骼层次信息,在这里就不得不提一个Frame,框架的概念在X文件中,Frame是基本的组成单元。又称框架Frame。 一个.x可以有多个Frame。(PS:此处的Frame不是帧,与帧没什么关系,Web之中也有一个Frame的概念,和这个也不同). 框架Frame允许嵌套,这样就存在父子框架了。而并列的框架,称为兄弟框架。这两种关系组合在一起,即可以纵深,又可以并列,形成一种层次结构。这种结构,可用二叉树描述。
每个框架结构的最前面,有一个FrameTransformMatrix矩阵数据,描述了该框架相对于父框架的变换矩阵。也就是说,该框架中的坐标,与该矩阵相乘,可转换为父框架坐标系的坐标。这种层次结构,使得X文件能描述许多复杂的物体。如地形场景。在骨骼动画文件中,框架结构可直接拿来描述人物骨骼的层次结构。框架的名字通常为对应的骨骼名。如“左上臂->左前臂->手掌->手指”就形成一个父子骨骼链。而左上臂与右上臂是并行关系。
由一系列AnimatonKey组成,数据示例如下: 这里需要注意以下几点:
第一点:在上面数据结构中,主要保存了各典型时刻的该骨骼相对于父的变换矩阵

的第0时刻矩阵是一样的。这说明,在以后动画运行时,DX会提供一种功能,用AnimatonKey中的对应数据刷新初始的变换矩阵(也可能启用关键帧插值算法)。这个功能对应于示例中的m_pAnimController->SetTime(...)语句。



什么是自定义数据容器呢?相信有人会有这样的疑问,原来,鉴于动画数据的复杂性,需要你配合完成加载过程。比如你是否用到自定义扩展结构,Mesh等数据保存在哪里,怎样使用户自己创建容器,自己决定卸载等等。
DX提供了ID3DXALLOCATEHIERARCHY接口,提供了这个自定义的机会,你重载这个接口的虚函数,在加载过程中,它就像回调函数那样运作。代码如下:


// Desc: 来自微软官方DirectX SDK Samples中的骨骼动画类,这个类用来从.X文件加载框架层次和网格模型数据
根据.X文件,在加载过程中,主要有两方面数据需要保存,一个是骨架Frame信息,一个是网格蒙皮Mesh信息。这两个信息保存在如下结构中。


框架信息(对应于骨骼)

读取完信息之后我们就可以进行绘制了(当然具体不是这么简单,这里由于篇幅的原因,简单的说一下,具体可以在我代码之中看),怎么样显示动画呢?

//来自微软官方DirectX SDK Samples中的骨骼动画类,这个类用来从.X文件加载框架层次和网格模型数据 其实关于骨骼动画还有很多的要说,这里简单地介绍一下,如果有机会的话,准备专门写一篇关于骨骼动画的博客!

喜欢游戏动漫,就点击上方↑↑ 蓝字关注我

之前,小编为大家介绍过一对日本夫妇,他们苦心创作的Saya由于逼真度超高因而得到了广泛关注。那么,我们今天就来具体谈谈那些神乎其神的CG图究竟是怎样制作出来的。

(以下内容摘选自知乎,原文作者:Stone Lee)

中年男、爱好女,CG圈里混迹十几年,做过电影、干过游戏、做过管理、拉过皮条(推荐工作)、讲过课(老师)!个人专长刚好就是题主提到的CG角色,下面我就解答一下题主的问题:无图无真相,先贴一张本人2012年的一个作品(我尽量用自己的图说明问题,能不用网图就不用,毕竟,男人要装,中年男人更要装!)

【主软件:Maya(影视CG主流3D软件);辅助软件:Zbrush(3D雕塑软件)、PS(主要画贴图);渲染插件:Vray for Maya】

第一阶段:前期准备工作

(新手最不重视的阶段,也是广大新手失败的根源之一)

从有一个想法开始,你想表达什么?先构思设计草图,然后根据需要,找参考(Reference),网站上找不到合适的就亲自去拍摄,亲自拍摄的往往是最合适的。

比如我上面那幅作品,在拍摄方面就花了很多心思,先是说服媳妇当模特儿,然后就是上淘宝仔细挑选和购买合适的围巾,还要装模作样的找个机会送给媳妇搞个小惊喜;最后就是在家里布光拍摄。

注意:前期准备的充分程度将很大程度上决定着整个作品的制作效率和成败,过早上手,带着很多不确定的想法和技术问题,制作往往会陷入创作的泥潭,最后作品只能 纠结 抑郁 而终... 咱不能像国内的某些导演一样,一拍脑门就开干,一部电影拍摄下来,分数逐级递减,最后呈现给观众的只能是烂片儿~

比如先勾个草图,画个线稿之类的:

(2009年渣手绘,后面有3d完成结果图)

第二阶段:技术测试和计划

(很多新手都容易犯这个毛病,制作中带着庞大的数量再去测试技术,不但慢,还耗死人…新手往往都是被自己虐死的,不是别人,更不是天分不够,是用力过猛!!!)

这幅CG作品你想突破和挑战什么?技术方面会遇到什么新问题和障碍?最好先测试一下技术方面的可行性,避免在制作中遇到问题时影响效率,还有整个作品的制作计划最好也先规划好。

(低模、高模、UV、贴图、灯光材质、渲染、合成、润色):

目前主流的有两种制作方法:

1)、 一是直接都用Maya、Max或者其他3D软件的多边形建模工具把模型制作出来,除了造型和美感,还要考虑多边形布线(方便后面流程的人给角色做动画和表情)。这个阶段主要看造型能力,也就是传统艺术的中的素描和雕塑造型能力。

(大概是2008年给学生演示的一个课堂案例,用Maya的多边形制作,从基本几何体一边加线,一边改线,一边塑型)

目前主流的平民级3D软件工具有:

Maya(主要用在3D动画CG、影视CG和端游CG中);

C4D(影视广告CG、MG动态图像CG…);

这些软件工具相对都比较复杂,掌握起来需要花些精力和时间。要说复杂,比PS要复杂N多倍吧, 2次元和3次元的差别;要说简单,也并不是那么的难,国内现在会用Maya和Max的应该是一抓一大把,但大都停留在技术层面,能做好东西的比较少,这就是国内CG行业的现状,公司招不到人,低手找不到工作。

2)、 另一种制作方法是先用Zbrush、Mudbox这样的3D雕塑软件进行模型雕刻,在一个基本几何体模型的基础上把模型雕刻出来,类似于现实中的泥塑,把一块泥巴捏成一个生动的雕塑模型。然后在把雕好的复杂模型重新拓扑成一个中高模型,使其布线是合理的。

(大概是2009年给学生演示的一个课堂案例,先用Zbrush雕塑好模型,不用考虑布线的问题,然后再用拓扑工具吧高模拓扑成中高模,在进行后面的环节制作)

(2010年前后的一个课堂案例,左图是用Zbrush雕刻的模型,右边是最后加贴图后渲染出来的完成效果,使用软件:Zbrush、Maya、PS,渲染用的是Maya Mental ray,材质是mr3s材质。)

(拓扑完需要再精细化雕刻,别把计算机想的太智能,为了追求好的效果,鳞片要一片一片雕,手断的节奏…)

游戏中用这类流程用的比较多,特别是次时代级别的模型,比如先根据原画雕塑高精度模型:

(2009年,接上面的渣手绘)

再根据雕好的造型,拓扑布线合理的低面数模型:

游戏里面一般做完模型画好贴图就完工,剩下的交给引擎去实时呈现(要和玩家交互的,你懂的),所以质量相对影视要弱 一些;而影视CG目前还需要通过软件进行渲染来呈现,可以没有极限的精雕细刻,所以游戏的流程相对简单一些,通常放在引擎里拍张效果图就可以了:

(2009年,渣手绘的完成效果)

3)、 另外,在西方电影视效工业中,一直有做实物模型的传统,所以欧美还有这样一个流程,角色原画设计好以后,先把泥塑模型做好,再3D扫描进电脑里,所以欧美电影视效公司现在保持这这样一个传统。

貌似,现在这个流程正越来越被强大的计算机替代掉,甚至连概念设计的部分都有用3D直接做了,直观!国内CG起步较晚,主流基本上都是计算机直接做,偶有个别公司有时装一下逼格,会搞几个泥塑模型出来显摆一下,实际上对后端制作意义不大,毕竟咱没这传统,也领略不到人家的精髓,只好学个皮毛,装装样子。

(熊猫的产生,第一张是2D概念设计,中间两张是实物模型,第四张是CG最后制作效果)

(骨灰级的3D扫描方法,冰河1的吧)

另外,3D模型对于新手,布线掌握起来比较困难,这个是纯技术活,需要不断的练习才行。说起角色模型布线,大体分游戏和影视两种,电影的精细度要高,在流程允许的情况下,越精细越好,游戏考虑到实时流畅度问题,对数据要求比较严格,需要控制在一定面数范围内,这就需要模型制作者分配好模型数量的比重,好刚用在刃上,不要无谓的浪费资源。不过现在高端端游的质量正在逼近电影级,两者的差距也会越来越小,所以在行业中,CG角色艺术家这个角色,很多时候都可以横跨电影和游戏,来回跳来跳去也是常事儿。

(这张图的作者,来自ILM的模型师。布线的目的是为了更好的塑造结构,所以一般情况下跟着结构走向去布线就ok,同时还要考虑角色做动作时肌肉的拉伸和压缩方向,后面还有Rigging绑定的流程。)

很多造型能力好的童鞋可以把造型做的很棒,但布线很乱、制作不规范也是大问题,别给同伴挖坑!等后面小伙伴们动画都

调好了,马上渲染出片了发现模型关键部位点没缝合或者有错误,整个流程都要重来一遍,枪毙你一万遍都不为过!!

模型做完只是一个单色的模型,就像玩手办时的白模、塑模。接下来就需要给他上色贴图,在这个工作开始之前需要将模型的UV进行编辑分割和展开,以方便我们通过PS或Bodypaint、Mari等其他贴图绘制工具画贴图;UV的展开就像我们剥桔子或者拆纸盒子一样,把一个3D模型的UV展开,拉平整,以方便画贴图;UV编辑有专门的软件工具:UV Layout、Unfold3D等,也可以用Maya、Max等3d软件自带的工具展开,总之,展开的原则是减少面的拉伸,布局时有效利用贴图资源即可。

(2010年一个课堂案例,角色头部UV展开后的效果,下面衬的是画好的颜色贴图,整个展开过程就像扒皮抽筋,是不是吓尿了...)

UV完成以后就是画贴图,用PS或者其他任意一款绘图软件都可以,当然用3D绘图软件Bodypaint、Mari等等都可以;最主要 的一张贴图是颜色贴图(Color Map),也就是物体的固有色贴图,写实的贴图是可以用真实拍摄的素材进行拼贴的,需要注意的是颜色贴图只需要画物体的固有色和纹理,高光、阴影、反射等等这些和环境有关系的内容不需要画出来(部分游戏CG除外);然后是其他N多不同的贴图:高光贴图、反射贴图、凹凸贴图、置换贴图…...置换贴图通常是用雕塑软件生成的,比如前面提到的Zbrush或Mudbox等,置换贴图是为了在渲染时还原物体的凹凸细节。

(这就是颜色贴图贴上去的效果,这张贴图是用真人皮肤投射得来的,当然也可以手绘,要做纯写实的,基本还是用素材,毕竟没有比现实更真实的东西)

(毛发的制作很很重要,公司里面属于CFX岗位的职责,但模型师最起码需要把形态用模型做出来)

制作毛发的工具很多,大公司一般都有自己开发的工具,咱们只能用软件自带的毛发功能或者插件,maya里面的Fur、Hair,还有Shave插件;毛发制作是个很关键的环节,要知道长相不重要,发型很重要!我通常用的方法是,先用多边形把毛发的造型做出来,然后再转画成曲线,然后在生成毛发...

三、 灯光材质和渲染:

(灯光渲染方面,技术更新太快,这个是2010年用Maya的MR,现在基本是Anorld和Vray的天下,现在GPU实时渲染发展趋势也很猛。上图是用MR的分层渲染将画面元素分层选出来,方便后期调节)

布光是特别重要的一个工作,灯光师在整个流程里面是非常重要的一个岗位,尤其是在纯CG的动画电影里面,数量仅次于动 画师。灯光在影视语言中营造气氛,制造氛围的作用太大了!灯光需要长时间的修炼和钻研,没事多玩玩摄影,会对你的内功修炼有帮助!

(还是上面的那个老头儿,当时课堂上跟学生一起做的效果,便讲边做... 纳尼?!发现眉毛居然忘做了,只有贴图...当年的童鞋们,我对不住你们!(哭~))

说到渲染器,技术固然重要,但随着技术发展,技术会越来越简单。懂技术只是会使用工具而已,最关键的还是使用的人,这就像玩摄影,大家的相机都一样,可拍出来的片子千差万别!渲染阶段通常比较耗时,很容易让人视觉疲劳,失去新鲜感而迷失方向,所以前面准备阶段找的参考就显得很关键。

(2005年,也就是10年前,技术很渣,纯靠Maya的默认渲染器,用手打灯的方式做,真真实实是小米加步枪...)用光影营造氛围、气氛,基本和现实中摄影棚内布光一样,主光、辅光、轮廓光.....找本布光教材好好研究一下,对光源的理解和运用是内功也是核心。材质方面就不做赘述了,东西太多,也太复杂,回头有时间再更新这方面的内容!

后期润色部分,需要把分层的内容整合在一起,精细化调节一下...简单的说就是美图秀秀,Nuke、AE、PS均可。(这里写的也比较简陋------待更新----)需要注意的是,在做东西的时候千万不能总把问题留给后面,也就是说,模型做不好了靠贴图弥补,贴图弄不好了靠材质灯光,灯光弄不好靠后期......你这是作死!!到公司里面会被活活打死的好吧!!

我写完了啊,不知道有没有给题主解答清楚,累死爹了!最后放一张以我家猫为原型做的创作(2013年):

最后建议爱好CG角色童鞋,平时一定要养成学习、个人创作的好习惯,不管你现在的水平怎样,要知道我们的邻居,强大的棒子军!他们比我们可拼多了,棒子们能够花一年的业余时间去创作一件几乎震精所有CG屌丝的作品,例如题主发图的那类宅男最爱的女神、童颜巨乳的MM、满身肌肉的壮汉、身披盔甲的战士等等,更重要的是棒子政府为了扶持CGI产业,给本土公司返40%的税!!这样他们在亚洲的竞争力就远超我们,虽然国内的CG产业也在不断发展,但目前我们还是能看到的现象是,国内一线导演的电影,大都发给棒子或其他国外公司做!!然后这些公司再无耻的以外包的形式转发到国内,以更廉价的劳动力换取更大的利润!尼玛!!!为什么?!我们这一代CG人基本已经人到中年,注定!但也很愿意作为后人的垫脚石。

骚年!未来是属于你们的!下面给大家推荐几个CG网站,没事的时候多去转转:

最后,不忘再装一把:做好的作品别忘了往国外的网站、杂志发一发,学生的话建议多参加参加比赛。不要闭门造车,不但 对你的学习有帮助,对你未来的发展也有好处,下面是一些登过我作品的国外杂志和书,有做封面,有做专访,有的给稿费 有的仅仅是帮你宣传。时间长了,你会发现,突然有一天你会收到某个知名公司的邀请,更重要的是,有了这些作品后,在 职场上,你具备了和别人议价的资本,加油吧!CG君们!!

中国动漫西南培训中心——魔力教育

实现你的动漫梦想 ↓↓

可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

来自电脑网络类芝麻团 推荐于

一、创建一个VR 材质

采纳数:2 获赞数:6 LV2

我的方法是 在漫反射 下加tiles程序贴图 剩下的应该知道了

那我把图片弄上去了,然后就不能在添加tiles命令了,是不是我哪里弄错了,,求赐教

我要回帖

更多关于 3D窗户 的文章

 

随机推荐