您的位置:老铁SEO > 站长新闻 > 网站技术 >

unity3d学习教程_需要掌握的unity知识

文章来源:新华社

作者:搜索引擎优化

人气:19

2021-11-04 13:07:25

工作中经常遇到3D制作不了解引擎要求导致返工或是被客户说没有经验,所以就邀请了工作十多年,经验丰富的TA-红伟大哥做了一篇相关文章为大家解惑,红伟大哥也有相关独立游戏开发经验。

很多3D学生都会面临一个问题,就是对引擎不熟悉,导致对一些资源规范和优化方法的无知。特别是3D相关的学生,在平时的工作中基本不需要处理引擎。另外3D美术的外包更是如此,没有机会接触到引擎。

因此,为了造福广大3D学生,这篇文章诞生了。

引擎是什么?

想想什么是汽车发动机。如果你想让汽车行驶,你必须有一台发动机。同样,如果你想让一个游戏运行,你也需要一个引擎。该引擎将我们的艺术资源与程序相结合,并将其与渲染和物理等模块组装在一起,使其正常运行。汽车引擎有各种品牌,游戏引擎也有。目前市场上主流的引擎是Unity和Unreal。在本文中,我们主要讨论Unity。

Unity引擎

Unity有相当多的版本,到目前为止,最新的官方版本是2017.4.1f1

你会发现每个版本的后缀都不一样。他们是什么意思?

b(beta版,也就是beta版,还没有正式发布,b1代表第一个beta版,b2代表第二个beta版)。

f(官方版本,面向所有开发者的版本,一般稳定)。

p(补丁,通常是官方版本的bug修复)。

比如上面的2017.4.1f1指的是2017.4.1的第一个正式版本。

选择什么版本一般由项目负责人决定,所以我们不用太担心,只要保证项目成员的版本统一就可以了。

本篇重点

接下来进入主题,我们将重点关注以下几个维度(由于篇幅有限,无法详细讲解每一步,请3D同学见谅)。

1. 规范

2. 品质

3. 性能

规范

美术资源,无论是3D还是2D,模型、动作还是特效,在引擎中都要有一定的规格,因为这些资源不是我们自己用的,而是团队里每个人都会一起用的资源,尤其是节目。如果规范没有明确定义,项目会很混乱,后期维护开发的成本会增加很多。

3D模型有以下规格:

单位

unity3d学习教程(你需掌握的Unity知识)

3D资源导入Unity时,第一个问题就是单位。由于Unity中的单位是米,我们可以通过上面的设置来实现max和Unity的Unity,这对于控制整体比例和在引擎中做出世界尺寸是非常重要的。

方向

unity3d学习教程(你需掌握的Unity知识)

因为unity的坐标系是左手坐标系,max是右手坐标系,Unity中Z轴的正方向被认为是正面(物理系统和方向变换都是基于此),为了简化,最好将3D资源的方向调整到Unity的标准。

标准:在max中,更改模型的轴,使其Z轴指向物体的前方,Y轴朝上!

品质

无论是人物还是场景,最终的艺术效果都要基于引擎。不针对引擎的资源就是流氓!我们如何做到这一点?其实很简单,光说质量,只有一个概念:——Shader.

着色器可能不是每个人都能很好地理解,但每个人都必须对材质相当熟悉,所以很简单。你可以理解,材质的底层是Shader,它是在引擎中渲染对象时必须使用的一段程序代码,通常由TA或程序为项目制作。对象的纹理完全取决于着色器,材质只是一个对象,可以用来调整着色器中的参数。关于Shader,水很深,不做太多无关的介绍。本文主要关注作为3D艺术必须知道的知识。

既然已经知道3D软件中的效果不是最终游戏呈现的结果,作为一个负责任的3D学生,就应该想办法让自己制作的3D资源在引擎中展现出最好的效果。

最常用的方法就是将自己制作的3D资源导入到Unity中进行观察效果(一定要使用项目定好的Shader,否则也是白调),来回反复调整,以使其在引擎中达到最佳。

那么要做到这一点我们需要掌握什么知识呢?

· Unity引擎的简单使用(基础教程网上很多,有天赋的同学自己打开软件摸摸也就了解了)

· 重点学习下如何在Unity中给3D模型赋材质,以及调整材质效果。

然后你就可以为所欲为了。。。

优化

模型效果上来了,但是程序说太耗了,要优化,这时我们不能让自己于一脸蒙逼的状态,一定要有所觉悟,知道该如何去优化。关于优化,并且跟3D同学相关的,我们有以下几点需要注意:

顶点数

很多同学以为模型影响消耗的都是三角面数,只要控制三角面数就好了,其实不然,三角面数固然重要,但是顶点数也不容忽视,这里普及一个知识点:渲染一个模型需要用到Shader,而Shader中又一定分为顶点着色器与片断着色器,而顶点数量的多少直接与Shader中顶点着色器的消耗成正比。也就是就顶点数越多消耗越大!

除了常规美术上的少点少面以外,我们这里额外说两点与引擎相关的,如何去减少顶点数。

首先我们做个简单的测试:

在max建一个Box,然后导入到Unity中,观察他们的顶点数区别。

unity3d学习教程(你需掌握的Unity知识)

max:8个顶点,12个三角面

unity:24个顶点,12个三角面

三角面数一致,顶点数竟然相差这么大!

产生顶点数不一致的原因主要有两点:

1. 光滑组不一致,当多个面设置了不同的光滑组时(如果这些都处于一个平面,则不会)就会导致顶点数增加。

2. 当模型上一个顶点在UV中对应多个顶点时(切割UV会产生这种效果)也会导致顶点数增加。

当两个面光滑组不一致时,它们所共用的顶点将需要两个表现法线方向的信息,unity中无法通过一个顶点来获取到这些信息,所以在unity中会被识别为两个顶点,同样,模型上的一个顶点,在UV中出现在多个位置,也会被unity识别为两个顶点。

当然了,并不是说完全不能用光滑组与UV切割,只是如果我们知道了这些原理,那么在制作时就能够尽量去规避这些问题了。

三角面数

这个没有什么好说的,在保证效果的前提下,能少则少。

贴图

贴图的做法和Shader息息相关,需要在前期与TA一起讨论清楚,其中尺寸可以做的大些,因为可以直接在unity中根据需求缩小,如果做小了,放大就会有损失了。还有要注意,最好是方形,同时是2的次幂。如果贴图需要有额外的信息存储到Alpha通道,则用tga,否则用png格式。

材质

材质数量直接影响DrawCall,所以尽量做到一个物体一个材质球,特别是在max中尽量少用多维子材质。因为多维子材质的信息会被导入到unity中,并以多个材质的形式出现,除非你真的需要这么做。

顶点色

顶点色如果不需要的话一定要清除,因为顶点色在unity中会影响合批,导致性能下降,同时本身的顶点色数量也会导致模型本身的资源加大。

unity3d学习教程(你需掌握的Unity知识)

模型中的顶点色一旦修改,就会使模型附带了顶点色属性,既使你更改回默认颜色和透明度也是一样,这个时候只能通过ChannelInfo来移除了,注意在ID那一列中,标识为:VC的就是顶点色(Vertex Color)。

UV数量

模型的UV数量正常情况下只需一套,如果在max设置了多套,既使没有用到也会被导出到unity中,同样也是通过Channel Info来移除。

如果大家能做到以上这些,那么TA和程序会爱死你的!

相关文章

在线客服

外链咨询

扫码加我微信

微信:juxia_com

返回顶部