下面是cesium初始化一個矩形primitive的代碼
一,代碼介紹
其中g(shù)eometryInstances屬性表示包含的幾何實(shí)例梳凛,可以是幾何實(shí)例數(shù)組數(shù)組也可以是單個幾何實(shí)例對象,appearance屬性表示和幾何外觀相關(guān)的比如紋理。geometry實(shí)例化的幾何對象。vertexFormat 幾何對象具備的頂點(diǎn)屬性類型(例如只具備位置屬性绵脯,紋理坐標(biāo),法線不具備切線屬性)
1休里,Primitive類
(1)geometryInstances 幾何對象的實(shí)例數(shù)組蛆挫,可以傳入多個實(shí)例化幾何對象組成的數(shù)組,也可傳單個實(shí)例化幾何對象份帐。
(2)appearance?幾何對象的外觀屬性
(3)depthFailAppearance?深度測試失敗之后的外觀
(4)show?是否顯示
(5)modelMatrix?模型矩陣
(6)vertexCacheOptimize 是否優(yōu)化頂點(diǎn)緩存
(7)interleave?是否交叉存儲頂點(diǎn)屬性
(8)compressVertices?是否壓縮頂點(diǎn)屬性
(9)releaseGeometryInstances?是否添加幾何對象緩存
(10)allowPicking 是否允許拾取璃吧,
(11)cull 是否啟用視錐體剔除和地平線剔除
(12)asynchronous 是否支持異步創(chuàng)建primitive
(13)debugShowBoundingVolume 是否顯示用于debug的包圍球
(14)shadows 是否接收和產(chǎn)生陰影
2,GeometryInstance 類
geometry表示幾何對象废境。modelMatrix表示模型矩陣畜挨,用于將幾何對象從模型坐標(biāo)系轉(zhuǎn)換到世界坐標(biāo)系。attributes表示屬性信息噩凹,例如顏色等巴元。
id表示primitive的唯一標(biāo)識。
3驮宴,RectangleGeometry類
rectangle表示傳入的矩形坐標(biāo)例如Cesium.Rectangle.fromDegrees(-80.0,?39.0,?-74.0,?42.0),vertexFormat表示該幾何對象支持的頂點(diǎn)屬性類型逮刨,例如有法向量,頂點(diǎn)坐標(biāo),紋理坐標(biāo)修己,沒有顏色數(shù)據(jù)等恢总。ellipsolid投影橢球(默認(rèn)為WGS84橢球體),height表示幾何對象距離地球表面的高度睬愤,extrudedHeight幾何對象的拉伸高度片仿,rotation表示幾何對象的旋轉(zhuǎn)角度,stRotation表示幾何對象紋理旋轉(zhuǎn)角度尤辱。
4砂豌,EllipsoidSurfaceAppearance類
flat屬性表示是否考慮光照因素,如果設(shè)置為true將不考慮光照的影響光督。faceForward屬性是否翻轉(zhuǎn)背面阳距,如果設(shè)置為true將隨著觀察者移動自動完整幾何對象的背面為正面。translucent屬性是否開啟半透明效果结借。aboveGround屬性是否將幾何對象永遠(yuǎn)置于地面上筐摘。material屬性表示幾何對象的材質(zhì)。vertexShaderSource幾何對象的自定義頂點(diǎn)著色器映跟。fragmentShaderSource幾何對象的自定義片元著色器蓄拣。renderState屬性表示渲染狀態(tài)扬虚,例如深度測試努隙,模板測試,混合等辜昵。
5,Appearance類
Appearance類是EllipsoidSurfaceAppearance類的基類荸镊。Appearance類的屬性決定primitive的外觀,支持只定義頂點(diǎn)著色器堪置,片元著色器躬存,渲染狀態(tài),是所有外觀類的基類舀锨。
translucent表示幾何對象是否透明岭洲。renderState表示渲染狀態(tài)(例如深度檢測,模板檢測坎匿,混合盾剩,背面剔除等)。closed幾何體是否閉合替蔬。material材質(zhì)告私。vertexShaderSource自定義頂點(diǎn)著色器,fragmentShaderSource自定義片元著色器承桥。
Appearance的幾個子類分別為MaterialAppearance驻粟,EllipsoidSurfaceAppearance,PerInstanceColorAppearance凶异,DebugAppearance蜀撑,PolylineColorAppearance挤巡,PolylineMaterialAppearance。
(1)MaterialAppearance 材質(zhì)外觀酷麦,對于所有的幾何對象都適用玄柏,cesium的材質(zhì)包括顏色,圖片贴铜,法線貼圖粪摘,凹凸貼圖,網(wǎng)格貼圖绍坝,棋盤貼圖等徘意。
(2)EllipsoidSurfaceAppearance? 橢球體表面外觀,支持所有材質(zhì)轩褐,但需要具有法線椎咧,切線,副切線屬性把介。
(3)PerInstanceColorAppearance 使用每個GeometryInstance自帶的顏色屬性勤讽,可以實(shí)現(xiàn)不同的實(shí)例渲染不同顏色
(4)DebugAppearance 用于測試
(5)PolylineColorAppearance 線幾何對象的顏色外觀,使用每個GeometryInstance自帶的顏色屬性拗踢,可以實(shí)現(xiàn)不同的實(shí)例渲染不同顏色
(6)PolylineMaterialAppearance 線幾何對象的材質(zhì)的外觀脚牍,可以對線幾何對象使用各種材質(zhì)。
6巢墅,Material類
(1)屬性介紹 strict是否開啟嚴(yán)格模式诸狭,設(shè)置為true的話著色器當(dāng)出現(xiàn)沒有被使用uniform變量就會拋出錯誤。translucent材質(zhì)是否透明君纫。minificationFilter當(dāng)材質(zhì)尺寸比繪制對象小的時候所采用的映射方式驯遇。magnificationFilter當(dāng)材質(zhì)比繪制對象大時候采用的映射方式。fabric生成紋理的json,fabric對象還包含type材質(zhì)類型蓄髓,uniforms傳入著色器和材質(zhì)相關(guān)的uniform屬性叉庐,components材質(zhì)結(jié)構(gòu)體屬性,source自定義的材質(zhì)shader会喝。(注:fabric屬性比較復(fù)雜陡叠,如果有時間我會專門寫一篇文章來介紹cesium的材質(zhì)。)
(2)cesium支持的材質(zhì)類型
“Color“顏色材質(zhì)好乐,”Image”圖片材質(zhì)匾竿,“DiffuseMap“漫反射材質(zhì),”AlphaMap”阿爾法材質(zhì)蔚万,“SpecularMap“高光材質(zhì)岭妖,”EmissionMap”環(huán)境反射材質(zhì),“BumpMap“凹凸材質(zhì),”Grid”材質(zhì)等昵慌。
二假夺,代碼執(zhí)行過程
1,實(shí)例化RectangleGeometry類斋攀,通過RectangleGeometry的構(gòu)造函數(shù)傳入矩形范圍已卷,高度,拉伸高度淳蔼,
旋轉(zhuǎn)參數(shù)侧蘸,紋理旋轉(zhuǎn)參數(shù)等完成初始化。
2鹉梨,實(shí)例化GeometryInstance
向GeometryInstance的構(gòu)造函數(shù)傳入實(shí)例化的RectangleGeometry對象讳癌,模型矩陣,id,屬性信息(例如幾何對象的顏色)等
3存皂,實(shí)例化Material
material:Cesium.Material.fromType("Stripe") 這行代碼的意思是調(diào)用了Material類中的fromType方法獲取條形紋理緩存
該方法會實(shí)例Material,并根據(jù)傳入的type從紋理緩存中獲取相應(yīng)的紋理參數(shù)晌坤。
4,實(shí)例化EllipsoidSurfaceAppearance外觀類旦袋,將材質(zhì)骤菠,自定義片元著色器,自定義頂點(diǎn)著色器疤孕,渲染狀態(tài)等參數(shù)傳入商乎。
5,實(shí)例化Primitive類