Page 196 - 测绘与空间地理信息研究
P. 196
Surveying and Mapping and Spatial Geographic Information Research
测绘与空间地理信息研究
图 6-27 芝加哥 3D 拉伸行政区划效果图
三、基于 WebGL 的三维复杂地物模型可视化
三维复杂地物模型的可视化一般包括两个部分:单体精细模型可视化以及大
规模场景模型可视化。为此本节分别以电力杆塔模型与城市矢量建筑群模型数据
为例,通过 GLTF 和 3DTile 两种方式进行模型数据可视化。
(一)Cesium 电力杆塔模型可视化
Cesium 加载 GLTF 模型有两种方式,一种是 Entity 方式,将 Model 视作几何
体进行加载,方法简单模式固定;另一种是 Primitive 方式,用更接近 WebGL 底
层的方式加载模型数据,可设置多样化属性。Cesium 对模型的渲染与渲染地球类
似,都是基于状态更新的。Model 有三个状态,加载(NEEDS_LOAD),解析
(LOADING),和结束(LOADED)。首先通过 Cesium.Model.fromGltf 方法异
步加载 GLTF 模型数据以及它的一些外部文件,随后解析 GLTF 的头信息,也就
是 json 对象(是否有动画,数据视图具体情况,是否有扩展属性等),了解该模
型的大概结构;其次是解析 GLTF 数据,对每个结构中的数据解析并赋值(顶点
数据和索引、材料、纹理等、动画,Runtime 封装到对应的 RuntimeNode),这是
最复杂,也是最关键的过程之一;三是更新动态属性,将其传递给相应的着色器
参数(动画、骨骼等,更新相应变量的节点矩阵,重新组合对应节点级别的矩阵
等);最后,在彻底解析完数据之后,构造一个相应的绘图命令(drawcommand)
并将其添加到渲染队列中;如果数据包含一些时态数据,例如动画,蒙皮等,则
必须动态调整每一帧。这是更新(update)的主要四种状态和逻辑,其过程如图 6-28
·186·

