前言

在转到3D游戏开发的时候,始终会有所不适,首先最难让人不习惯的就是,空间的转换没办法那么快的就转换过来。另一个始终是分不清纹理材质网格贴图这些名词之间到底什么关系。

正文

不管3D游戏还是2D游戏,对于游戏引擎来说都是把显示对象绘制到屏幕上。我们首先来了解Laya3D有哪些显示对象(3D精灵)
image
Sprite3D作为3D显示对象基类,有三个子类,分别是RenderableSprite3DBaseCamera以及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函数有哪些。
image
BaseRender是所有渲染器的基类,持有所需要渲染的材质引用及包围盒对象。看到这里我们就可以理解为Sprite3D是材质纹理的一个显示容器,RenderSprite3D持有的可以渲染到屏幕的逻辑处理器。

1.PixelLineRendererPixelLineSprite3D持有的渲染器。用于渲染像素线精灵。
2.MeshRendererMeshSprite3D持有的渲染器,用于渲染静态网格精灵。
3.ShurikenParticleRendererShuriKenParticle3D持有的渲染器,用于渲染3D粒子
3.TrailRendererTrailSprite3D所持有的渲染器,用于渲染拖尾精灵。

刚刚有说Sprite3D是显示对象容器,被Render逻辑处理渲染,那它处理的对象就是我们的资源资产对象Resource。下面来看看Resource对象的继承链。
image
上图的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空间的组成点数据合成。

原文地址:http://www.cnblogs.com/as3Gui/p/16885346.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性