unity3d开发中,美术需要知道哪些知识?
1.引擎没有说具体的面数限制,按机器性能而定。
2.导入图形或者MESH的方法无非两种,一种是直接拷贝到文件目录下的Assets文件夹下面,Unity3d引擎会自动找到添加的文件,并且能在PROJECT面板中找到它。另一种是我们在PROJECT面板中用右键菜单,导入素材。
当然,我是用MAYA导入的,U3D引擎对于MAYA的支持还是不错的,但是也需要注意,不要用中文的目录结构,最好直接从MAYA的工程文件夹中导入,最好在导入MESH前先吧贴图文件放到相应的文件夹,或者相关文件夹的子文件夹。
在我们导入场景文件的时候,需要在导入设置中勾选创建碰撞,这样导入的场景我们就可以踩在上面了。(这跟我们添加碰撞组件是有些不同)
3. Unity3d引擎支持大多数常用的贴图,比如漫反射贴图,高光贴图,法线贴图。如此一来,它就成了一个名副其实的次时代引擎了。当然与UNREAL引擎的强大材质编辑器不同,U3D引擎主要是编辑材质的方式是使用一种专门的语言,类似于CgFX和Direct3D的语法。当然如果不是专门的图形程序员,我们只要掌握相关的SHADER的使用方法就可以了。在我们安装完U3D引擎后,系统自带的SHADER足够我们日常大多数情况下使用了。如果我们还有特殊的要求,可以去官网上下载相关的程序,然后把代码保存为 .shader 的文件,放到相应的目录底下,然后我们就有了这种SHADER。
掌握并且理解了上面我说的三点,你就可以作为一个U3D引擎的美工开始工作了。其中有几个需要我们进行深入探讨的几个方面:一是导入的MESH的要求,如何减面,UV的情况怎样,是否可以重叠UV。 二是导入的贴图规范,我们的各种贴图要达到怎样的程度才能导入,并不是直接拍了照片贴上就很有效果的,我们需要在三维软件中烘焙,之后才能导入。还有光照贴图怎么制作。 三是各种材质的应用,比如说我们最常用在皮肤上的3S材质效果,如何在U3D引擎中实现这种效果?
至此,你可以轻松的驾驭U3D引擎的Assets部分了。
然后我们要用引擎构建关卡。好吧现在你要成为一个U3D引擎的关卡设计师,当然这里面也有很多美工要做的事情。我们不用每天对着素材模型,贴图骂娘了。
作为关卡设计师,特别是U3D的,一定要有一个GAME OBJECT的概念,在这个可爱引擎中,我们可以看到各种的元素都是由GAME OBJECT组成的,在GAME OBJECT上我们又可以添加组件在实现特定的功能,比如最简单的位移。我在第一次使用这个引擎的时候,突然兴致大发想要在场景中创建一盏灯,弄了半天都没成,后来才明白,灯光是要附着在GAME OBJECT上的。同理,声音也是要附着在这上面的。
还要有一个PREFABS得概念,就在层级菜单中的蓝色文字所代表的属性,其实就是在游戏中可以无限复制的意思,比如子弹,比如无数的需要出现的小物件儿。
类似于三维软件以及其他引擎,U3D的灯光分为那么普通的几类,电光源、方向光、自然光。了解灯光的属性和使用方法。
还有U3D引擎的物理系统。当我看到这个系统的时候我的心都开花了,一想到各种独立游戏中无敌的物理效果心里就暗爽。比如我们可以用最简单的方法做一个足球游戏。
还是做游戏好,这个引擎能做网页游戏,也可以做PC单机游戏,网络游戏,也可以做IPHONE平台的手机游戏。真是万能了!
当然,上面很多都是初学时候的经验,下面是我后来加上的一些内容,是经过学习总结和辛苦翻译的。
让你的游戏能够顺畅的运行是成功的第一个要求。感谢UNTIY,他们通过大量的优化和调整可以让这个引擎发布的游戏运行于各种不同性能的硬件系统。下面是一个通用的优化游戏性能的方法。
如果你比较关心游戏的速度,请合并模型。最好能够把合并的模型使用同样的材质和贴图。Rendering Statistics(渲染静态网格)窗口时很有用的!
现在的图形显卡可以很好的支持很多的多边形,但是他们他们还是有一些瓶颈的。所以如果你有一个有100个三角形的MESH,它渲染起来所需要花费的运算跟1500个面数的物体是没有多大差别的。因此最佳的渲染设置时每个模型大约1500-4000个三角面。
只有在游戏组件中的属性栏中勾选Mesh Renderer选项显卡才会渲染相应的模型,并且在场景中的空的GameObject组件是不会被渲染的。
所以再次重复,最好的导入渲染设置时合并Objects直到他们每个模型在1500个三角面面甚至更高一些,并且为整个模型使用一个材质。
如果只是把两个模型合并在一起但是不共同使用同一个材质并不会给你的图形带来一点优化。如果你想有效的合并物体,你需要保证你合并后的模型使用一个材质。(其实就是尽量减少材质球的数量)
在你合并物体的时候需要知道一件事:如果你在你的场景中用到了很多小的灯光,你可以把场景中离得很近的物体合并为一个Object。
按照上面的思路,如果一个MESH具有多个材质球,那就说明在计算机渲染的时候是要进行多重运算的。最普遍的你之所以一个MESH用多个材质的原因是因为两个材质不能使用相同的贴图。所以如果你想要优化渲染设置,你最好确定你合并的那些MESH的材质是相同的。
Unity对于向显卡导出各种多边形是很擅长的,它可以很详尽的把所有的图形导入到显卡,并且优化数据。你需要做的只是确定你的图形显示卡正常工作。而不是要调整很多手动调节的设置。
The number of Pixel Lights affecting an object heavily affects performance. 相当数量的实时灯光对于游戏速度也是有限制的。
如果你想要有一个不错的展示,并且不关心凹凸贴图和实施灯光(Bumpmapping or Pixel Lighting),可以去Edit->Render Settings...然后设置Pixel Light Coun为0.这将会给所有的Object使用顶点灯光。这将会让所有的物件在每一帧都会被渲染一次。这是一个比较极端的LOD设置,所以你的游戏就可以再比较老的图形显卡下运行了。
Pixel lights 像素灯光
如果你使用的是像素灯光,那么每个被这个灯光照射到的GameObject都会在每一帧被渲染一次。如果你合并了两个距离很远的物体,他就会增加物件的大小,然后你就会需要一些灯光来照亮这些物体。如果你的物件是分开的,灯光将不会渲染远处的物体,这将会导致模型得到多次渲染,相比较没有被合并的模型,我们并没有得到多少实惠。因此,如果你的GameObject中有很多独立物件的时候,你可以让他们离得比较远。
当渲染一个模型的时候,UNTIY如果发现很多灯光在MESH的周围,它将会找出那个是主要影响这个MSEH的灯光,在Edit->Render Settings中的设置就是用来调整有多少个灯光最终作为像素灯光有多少作为顶点灯光。
每一个灯光通过计算离MESH得距离和自己灯光强度来决定自己的重要程度。
在游戏中的某些灯光是很重要的,所以,每一个灯光都会有一个Render Mode设置,这个用来设置哪一个可以被用来设置为Force Pixel 或者 Force Vertex.
想象一下假如我们是一个驾车的游戏,你的角色在夜晚打开车灯,前面的车灯就是游戏中最重要的灯光。因此,前大灯的渲染模式将会被设置为Force Pixel
当然如果你有一个不是很重要的灯光,也是选择使用"Force Vertex"的渲染模式,这个方式也不会对游戏的速度有很大的影响的。
影子
阴影普遍运算量比较大。如果运用得当,可以让游戏画面出色,你也可以乐队相关文档。
角色建模优化
你的角色应该只被用于一个蒙皮模型渲染器。当然有时候可能需要多个蒙皮的模型,但是如果你同时用两个蒙皮来作为一个角色,它就相当于你进行了两个角色的运算量。
你同样需要保持MESH的材质数量尽可能低。一般建议身体的材质数量为2-3个,当然如果你有武器的材质,也是需要单独一个的,因为你需要换武器。
减少骨骼的数量,一般来说游戏中的骨骼数量为15-60个。骨骼越少运行速度越快,一般来说30块骨骼就可以让角色动的很舒服了。如果你不是有特殊的设置,我们强烈建议每个角色30个骨骼。
多边形的数量主要是看你对游戏的质量要求,500-6000个三角面是比较推荐的。如果你的游戏场景中将会出现多个角色,那么就要适当的降低一下多边形数量了。如果你想要在比较老的机器上运行,你需要更少的多边形数量。比如,半条命2游戏的角色通常是2500-5000个三角面。达到AAA标准的次时代游戏比如像是PS3或者XBOX360上的游戏角色通常有5000-7000个三角面。
把IK控制器和FK控制器分离,当动画导入以后,IK的节点将会烘焙到FK上,其实UNITY并不需要IK节点,你可以删除它们。
创建一个公共的骨架,这样就可以让你让不同的角色之间共享动作了。
给每一个骨骼正确的命名,方便团队工作,也方便类似于Motionbuilder的动作软件,不然你得每次指定骨骼。
优化综合的图形卡
优化模型参数
使用尽量少的面
UV接缝的数量尽可能少
烘焙灯光
烘焙灯光到光照贴图或者到顶点颜色。
MAYA具有不错的制作光照贴图的工具,UNITY可以从MAYA中导入第二个UV贴图或者顶点颜色。
制作环境的光照贴图的流程要比直接在场景中打灯光要繁琐的多,但是运行速度明显增快。
如果你使用全局光并且平滑光照贴图,可以让画面效果明显增强。
甚至次时代游戏比如战争机器始终在很多方面使用光照贴图。通常他们在场景中使用光照贴图,然后在上面放置一个动态灯光。在UNITY中也可以制作相应的光照贴图Shader.