前言
在转到3D
游戏开发的时候,始终会有所不适,首先最难让人不习惯的就是,空间的转换没办法那么快的就转换过来。另一个始终是分不清纹理
,材质
,网格
,贴图
这些名词之间到底什么关系。
正文
不管3D
游戏还是2D
游戏,对于游戏引擎来说都是把显示对象绘制到屏幕上。我们首先来了解Laya3D
有哪些显示对象(3D
精灵)
Sprite3D
作为3D
显示对象基类,有三个子类,分别是RenderableSprite3D
,BaseCamera
以及LightSprite
RenderableSprite3D
RenderableSprite3D
是可渲染对象基类,它的子类都是可以被Laya
引擎渲染的。其中每个子类对应一个Render
对象
1.MeshSprite3D
是静态网格精灵,常用于美术预制的网格数据渲染模型。比如游戏场景中的建筑,装饰物
2.ShuriKenParticle3D
是粒子特效精灵。与2D粒子特效的用法差不多
3.PixelLineSprite3D
是像素线精灵,是由线段在3维空间组成的网格数据
4.SkinnedMeshSprite3D
是蒙皮网格精灵,一般用于人物模型网格数据
5.TrailSprite3D
是拖尾精灵
BaseCamera
BaseCamera
只有一个子类Camera
,是3D
场景中的摄像机对象。摄像机是一个3D
场景必备的对象,否者也不会渲染出任何对象。
摄像机主要作用就是确认哪些对象是需要渲染的,哪些对象是不需要渲染的。并且在帧循环中对视窗内的对象进行渲染。
一个场景中可以存在多个摄像机,每个摄像机的渲染逻辑都是单独计算的,因此每增加一个摄像机,渲染负担也同时增加一倍。
LightSprite
LightSprite
是灯光对象的基类,灯光分为如下几类
1.DirectionLight
是平行光,用于模拟太阳光,固定一个方向,光照不会衰减。
2.PointLight
是点光源,可以用于模拟灯泡,蜡烛灯,有强度,颜色,衰减半径属性。
3.SpotLight
是聚光灯,可以用于模拟手电灯,光照区域边缘有衰减现象,区域也被随距离越来越大。
在了解了显示对象之后,再来看看对于显示对象处理的Render
函数有哪些。
BaseRender
是所有渲染器的基类,持有所需要渲染的材质引用及包围盒对象。看到这里我们就可以理解为Sprite3D
是材质纹理的一个显示容器,Render
是Sprite3D
持有的可以渲染到屏幕的逻辑处理器。
1.PixelLineRenderer
是PixelLineSprite3D
持有的渲染器。用于渲染像素线精灵。
2.MeshRenderer
是MeshSprite3D
持有的渲染器,用于渲染静态网格精灵。
3.ShurikenParticleRenderer
是ShuriKenParticle3D
持有的渲染器,用于渲染3D
粒子
3.TrailRenderer
是TrailSprite3D
所持有的渲染器,用于渲染拖尾精灵。
刚刚有说Sprite3D
是显示对象容器,被Render
逻辑处理渲染,那它处理的对象就是我们的资源资产对象Resource
。下面来看看Resource
对象的继承链。
上图的Resource
继承链,我只写了3D
相关的资源类型,2D
的资源就暂时忽略了。
可以看到Resource
资源类型可以分为Mesh
网格,Material
材质类型,Avatar
骨骼映射数据,AnimationClip
动画数据。
可以说一个Sprite3D
也是由这些资产数据所组成。
1.Mesh
是模型数据,在Laya
中一般是.lm
后缀文件。
2.Material
分类很多,一般文件后缀为.lmat
文件,是Unity
中为模型设置的材质信息。加载.ls
或者.lh
文件时会自动加载.lmat
文件来产生材质。
材质分类
1.BlinnPhongMaterial
材质是LayaAir3D
中标准材质。
2.EffectMaterial
材质是特效材质,靠混合模式产生光效,这种材质常用于特效制作。
3.UnlitMaterial
材质是不受光材质。这种材质最大的特点就是不受光照影响,且最省性能。这种材质直接显示原贴图的样式。
4.PBRStandardMaterial
材质基于物理普通反射材质,一般用于粗糙质感的材质。
5.PBRStandardMaterial
材质基于高光,常用于光滑金属质感。
6.WaterPrimaryMaterial
材质水初级材质。
每个材质都会对应着Sprite3D
的使用。所以可以这么说Laya
中每个3D
资产单元都会对应从管理到渲染的一套逻辑。
纹理,材质,网格之间的关系
通过阅读代码,可以理解,纹理是材质中的一项属性,通常是Texure
对象,材质还包含处理纹理的很多属性。
网格是一个模型在3D空间的组成点数据合成。