Skip to content

Latest commit

 

History

History
executable file
·
82 lines (47 loc) · 3.85 KB

README.md

File metadata and controls

executable file
·
82 lines (47 loc) · 3.85 KB

Egret3D 有几个基本的元素,基本上会围绕这些元素节点做引擎结构

Egret3DCanvas

  • Egret3DCanvas 是整个3D显示的缓冲屏幕大小。并且包含了和Egret2D混合的接口。
  • 在egret2D和egret3D混合的时候egret2D(非 webgl加速版本)永远在最上一层。

View3D

View3D 是egret3D的独立视口对象,可以创建多个View3D视口添加到Egret3DCanvas上,进行独立渲染,可以理解为分窗口渲染。

Camera3D

Camera3D 相机是一个在3D场景中能自由移动变换的物体,但并不具备显示能力, 只有一个锥形体(透视相机) 或者 长方体(正交相机)视锥体数据。用来进行场景渲染定位,和剔除视锥体外物体,生成显示列表。 摄像机可以理解为就是一个观察矩阵,观察矩阵把所有的世界坐标变换到观察坐标,这些新坐标是相对于摄像机的位置和方向的。 定义一个摄像机,我们需要赋予它一个三维空间坐标,观察朝向,透视度,广角度,远近裁剪截面。

1.相机位置

摄像机位置就是世界空间中代表摄像机位置的向量。

2.摄像机方向

摄像机的方向就是世界空间中代表摄像机转向的矢量。

3.Look At

在egret3D中提供了相机直接观察一个坐标的快捷设置接口,例如我需要观察坐标 vector3D(0.0,100.0,1000.0),直接调用lookAt接口就好,不必再通过繁琐的计算定位相机的旋转方向。

Scene3D

Scene3D 作为整个场景显示的管理类,管理场景具备显示,和不具备显示能力的Object3D。scene3D可以设置不同的空间划分树,进行场景节点管理搜索,过滤。

Geometry

Geometry是整个3D中使用的模型数据,它可以从3Dmax,blender,3Dmaya,等众多软件中输出,在egret3D有了自定义的模型数据格式,geometry中的数据内容主要有:

  • vertex position
  • vertex normal
  • vertex tangent
  • vertex color
  • vertex uv
  • vertex scond uv

在有了这些数据后,就可以创建vertexBuffer。还会需要进行三角面的组合 face,就会需要indexData,创建为 indexbuffer。

Material

材质球通过不同的shader,也就是 GLSL 着色语言编写获得不同的着色效果。 在egret3D中提过了一些常用的材质球,及材质球特性,可以通过对每个材质球添加 effectMethod 来获得新的效果片段, 当然也不是无止境的添加的,每个材质球中的着色程序也是有限制的,例如编译后的着色器最终生成的汇编指令不能超过运行设备的物理限制。 而要获得更高的效果,必定需要更好的硬件支持才行

Object3D

Object3D是3D场景中的一个容器,也可以是一个节点,它包含了一个节点在场景中的所有变换信息,子节点的最终变换信息要跟根据父节点的信息进行相对变换

Mesh

Mesh是模型网格,是3D场景中的可渲染对象,网格中包含Geometry、材质玩信息和包围盒。Mesh也分为两种:一种是静态模型不带动作的,另一种是骨骼动画模型,包含动画数据信息。

Texture

Texture是将平面的、二维的相片贴到物体的几何表面上的2D纹理贴图,根据顶点的uv来进行映射贴图。

CubeTexture

CubeTexture是一个6面体贴图,它通过(x,y,z)形式的三维像素矩阵,每一个(x,y,z)对应一个标量值;CubeTexture就是要把这个三维的像素阵列映射到三维的物体空间中去。

light

light是指给定方向所反射或发射的发光强度的灯光,然后影响3D场景中的可渲染对象的渲染效果。增强3D场景更加真实性的效果。 引擎中分为3种灯光:点光源、方向光、聚光灯。