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·
   191   192   193   194   195   196   197   198   199   200   201