作为一名GIS研究生,WebGIS 技术无疑是我们必学的核心之一。说到WebGIS,要提的就是 Cesium —— 这个让3D地球可视化变得简单又强大的工具。为了帮助大家更好地理解和使用 Cesium,我决定把我自己在学习 Cesium 文档过程中的一些心得和收获分享给大家。大家一起交流,一起进步!
在 Cesium 中,Appearance
是一个非常重要的类,用于定义如何渲染几何图形的外观。它负责提供完整的 GLSL 顶点着色器和片段着色器代码,以及渲染状态,这些都决定了一个原始图形(Primitive)如何被渲染出来。简单来说,Appearance
就是图形的“外表”,它让原始几何体不仅仅是一个点、线或面,而是拥有了颜色、纹理、透明度等可视化效果。
Appearance
的作用
Appearance
允许开发者通过设置材质、着色器源代码、渲染状态等,控制几何图形的渲染效果。比如,决定一个模型是透明的还是不透明的,或者它是否应该有某种特殊的材质效果。
核心属性
-
translucent
(boolean
)- 描述:决定几何体是否应该是透明的。默认为
true
,即几何体默认是透明的。在透明的情况下,renderState
会启用 alpha 混合。 - 用法:如果设置为
false
,则表示该几何体不需要透明效果。
- 描述:决定几何体是否应该是透明的。默认为
-
closed
(boolean
)- 描述:决定几何体是否为封闭的(例如一个球体)。如果设置为
true
,renderState
会启用背面剔除。 - 用法:当几何体是封闭的,通常需要对背面的面进行剔除以提高渲染效率。
- 描述:决定几何体是否为封闭的(例如一个球体)。如果设置为
-
material
(Material
)- 描述:材质决定了几何体的片段颜色。材质是动态可变的,可以在渲染过程中修改。
- 用法:材质可以是单色、纹理、渐变等类型,用来影响几何体的外观。
-
vertexShaderSource
(string
)- 描述:可选的 GLSL 顶点着色器源代码。开发者可以通过它来重写默认的顶点着色器。
- 用法:如果需要自定义顶点着色器,可以通过这个属性提供自定义的 GLSL 代码。
-
fragmentShaderSource
(string
)- 描述:可选的 GLSL 片段着色器源代码。开发者可以通过它来重写默认的片段着色器。
- 用法:如果需要自定义片段着色器效果,可以通过这个属性提供自定义的 GLSL 代码。
-
renderState
(object
)- 描述:渲染状态,用于覆盖默认的 WebGL 渲染状态。
- 用法:通过调整渲染状态,开发者可以定制深度测试、混合模式等渲染设置。
核心方法
-
getFragmentShaderSource()
(string
)- 描述:生成完整的 GLSL 片段着色器源代码,考虑到
fragmentShaderSource
和material
的设置。 - 返回值:返回生成的完整 GLSL 片段着色器源代码。
- 描述:生成完整的 GLSL 片段着色器源代码,考虑到
-
getRenderState()
(object
)- 描述:创建渲染状态,这个方法返回一个可以用于渲染的状态对象。
- 返回值:返回渲染状态对象。
-
isTranslucent()
(boolean
)- 描述:判断几何体是否为透明的,取决于
translucent
和material.isTranslucent
的设置。 - 返回值:如果几何体是透明的,返回
true
,否则返回false
。
- 描述:判断几何体是否为透明的,取决于
使用场景
Appearance
类在 Cesium 中应用非常广泛,主要用于控制几何体的外观,尤其是在自定义渲染效果时。在展示一个城市的 3D 模型时,你可能希望给建筑物设置不同的材质效果,让建筑物根据不同的光照条件显示不同的效果;或者在某些特定的场景中,可能需要使用透明效果来显示地球的表面水体等。
图上为cesium一个官方DEMO,感兴趣的可以看看