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类

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容