cesium绘制primitive流程(一)数据准备

下面是cesium初始化一个矩形primitive的代码



ceium添加primitive示例

一,代码介绍

其中geometryInstances属性表示包含的几何实例,可以是几何实例数组数组也可以是单个几何实例对象,appearance属性表示和几何外观相关的比如纹理。geometry实例化的几何对象。vertexFormat 几何对象具备的顶点属性类型(例如只具备位置属性,纹理坐标,法线不具备切线属性)

1,Primitive类


(1)geometryInstances 几何对象的实例数组,可以传入多个实例化几何对象组成的数组,也可传单个实例化几何对象。

(2)appearance 几何对象的外观属性

(3)depthFailAppearance 深度测试失败之后的外观

(4)show 是否显示

(5)modelMatrix 模型矩阵

(6)vertexCacheOptimize 是否优化顶点缓存

(7)interleave 是否交叉存储顶点属性

(8)compressVertices 是否压缩顶点属性

(9)releaseGeometryInstances 是否添加几何对象缓存

(10)allowPicking 是否允许拾取,

(11)cull 是否启用视锥体剔除和地平线剔除

(12)asynchronous 是否支持异步创建primitive

(13)debugShowBoundingVolume 是否显示用于debug的包围球

(14)shadows 是否接收和产生阴影

2,GeometryInstance 类


geometry表示几何对象。modelMatrix表示模型矩阵,用于将几何对象从模型坐标系转换到世界坐标系。attributes表示属性信息,例如颜色等。

id表示primitive的唯一标识。

3,RectangleGeometry类


rectangle表示传入的矩形坐标例如Cesium.Rectangle.fromDegrees(-80.0, 39.0, -74.0, 42.0),vertexFormat表示该几何对象支持的顶点属性类型,例如有法向量,顶点坐标,纹理坐标,没有颜色数据等。ellipsolid投影椭球(默认为WGS84椭球体),height表示几何对象距离地球表面的高度,extrudedHeight几何对象的拉伸高度,rotation表示几何对象的旋转角度,stRotation表示几何对象纹理旋转角度。

4,EllipsoidSurfaceAppearance类

flat属性表示是否考虑光照因素,如果设置为true将不考虑光照的影响。faceForward属性是否翻转背面,如果设置为true将随着观察者移动自动完整几何对象的背面为正面。translucent属性是否开启半透明效果。aboveGround属性是否将几何对象永远置于地面上。material属性表示几何对象的材质。vertexShaderSource几何对象的自定义顶点着色器。fragmentShaderSource几何对象的自定义片元着色器。renderState属性表示渲染状态,例如深度测试,模板测试,混合等。

5,Appearance类

Appearance类是EllipsoidSurfaceAppearance类的基类。Appearance类的属性决定primitive的外观,支持只定义顶点着色器,片元着色器,渲染状态,是所有外观类的基类。

translucent表示几何对象是否透明。renderState表示渲染状态(例如深度检测,模板检测,混合,背面剔除等)。closed几何体是否闭合。material材质。vertexShaderSource自定义顶点着色器,fragmentShaderSource自定义片元着色器。

Appearance的几个子类分别为MaterialAppearance,EllipsoidSurfaceAppearance,PerInstanceColorAppearance,DebugAppearance,PolylineColorAppearance,PolylineMaterialAppearance。

(1)MaterialAppearance 材质外观,对于所有的几何对象都适用,cesium的材质包括颜色,图片,法线贴图,凹凸贴图,网格贴图,棋盘贴图等。

(2)EllipsoidSurfaceAppearance  椭球体表面外观,支持所有材质,但需要具有法线,切线,副切线属性。

(3)PerInstanceColorAppearance 使用每个GeometryInstance自带的颜色属性,可以实现不同的实例渲染不同颜色

(4)DebugAppearance 用于测试

(5)PolylineColorAppearance 线几何对象的颜色外观,使用每个GeometryInstance自带的颜色属性,可以实现不同的实例渲染不同颜色

(6)PolylineMaterialAppearance 线几何对象的材质的外观,可以对线几何对象使用各种材质。

6,Material类


(1)属性介绍 strict是否开启严格模式,设置为true的话着色器当出现没有被使用uniform变量就会抛出错误。translucent材质是否透明。minificationFilter当材质尺寸比绘制对象小的时候所采用的映射方式。magnificationFilter当材质比绘制对象大时候采用的映射方式。fabric生成纹理的json,fabric对象还包含type材质类型,uniforms传入着色器和材质相关的uniform属性,components材质结构体属性,source自定义的材质shader。(注:fabric属性比较复杂,如果有时间我会专门写一篇文章来介绍cesium的材质。)

(2)cesium支持的材质类型

“Color“颜色材质,”Image”图片材质,“DiffuseMap“漫反射材质,”AlphaMap”阿尔法材质,“SpecularMap“高光材质,”EmissionMap”环境反射材质,“BumpMap“凹凸材质,”Grid”材质等。



二,代码执行过程

1,实例化RectangleGeometry类,通过RectangleGeometry的构造函数传入矩形范围,高度,拉伸高度,

旋转参数,纹理旋转参数等完成初始化。

2,实例化GeometryInstance

向GeometryInstance的构造函数传入实例化的RectangleGeometry对象,模型矩阵,id,属性信息(例如几何对象的颜色)等

3,实例化Material

material:Cesium.Material.fromType("Stripe") 这行代码的意思是调用了Material类中的fromType方法获取条形纹理缓存



该方法会实例Material,并根据传入的type从纹理缓存中获取相应的纹理参数。

4,实例化EllipsoidSurfaceAppearance外观类,将材质,自定义片元着色器,自定义顶点着色器,渲染状态等参数传入。

5,实例化Primitive类

你可能感兴趣的:(cesium绘制primitive流程(一)数据准备)