点外挂模型是指具有相同材质、形状以及大小,仅仅空间位置和姿态不同的模型,采用模型只存一份,位置信息采用三维点数据集存储的方式存储多个模型数据集的模型统称。这样的方式与实例化有着异曲同工之处,能够实现空间占用和数据量的减少。SuperMap GIS系列产品支持了点外挂模型的生成和处理,为了优化点外挂模型选中时的显示效果,提高浏览器对选中的点外挂模型的渲染效率,SuperMap iClient3D for Cesium(以下简称客户端)支持了点外挂模型子对象的选择,在WebGL客户端选中模型的子对象时,仅对选中部分进行高亮显示。
本文较详细地阐述了在客户端实现点外挂模型的加载、浏览及其子对象选择的详细过程。主要过程包括:
本文以铁路轨道模型数据为例进行详细操作演示。
(1).在SuperMap iDesktop桌面产品的工作空间管理器中,打开需要生成缓存模型的数据源。
(2).在“三维数据”选项卡的“生成缓存”组中, 选择“点集生成缓存外挂模型”。
图 1:“点集生成缓存外挂模型”功能位置示意图
(3).弹出“点外挂模型生成缓存”对话框(如图2所示),点击第一行的“添加数据集”按钮,选择拟生成缓存的数据集。
图 2:“点外挂模型生成缓存”对话框
(4).设置参数,如图2左下红色框线内所示:
(5).设置模型参数,如图2右下红色框线内所示:
(6).点击“生成”按钮,生成点外挂模型缓存。
生成完成后,在设置的缓存路径下能看到缓存文件,如图3所示。
图 3:点集生成外挂模型缓存结果
在桌面添加上一步生成的点外挂模型缓存并保存成工作空间,在SuperMap iServer上发布成服务。
具体操作流程可参考加载倾斜摄影模型操作手册 中的第3步:“发布三维服务”
(1).发布三维服务后,进入服务的“根目录”页面,点击“realspace”,复制浏览器地址栏的url地址。详细操作过程可参考 加载倾斜摄影模型操作手册。
(2).修改产品包“examples”文件夹下范例“S3MTiles_srsb_water.html”相关参数
var promise = scene.open("http://localhost:8090/iserver/services/3D-DianWaiGua/rest/realspace");
或者创建新的.html范例文件,通过scene.open(url)方法打开服务场景:
var promise = scene.open(url);
此时点击场景中的点外挂模型,发现模型的子对象不能被选中,如图5所示:
图 5:点外挂模型选择效果图
(3).这是因为图层中子对象的选择设置为关闭状态,通过以下语句,找到模型的点外挂图层并将其子对象设置为可选择:
Cesium.when(promise, function(layers){ var skeleton = scene.layers.find ("NewDGN"); //图层名字可在桌面软件或发布的服务中查看 skeleton.skeletonSelectEnable = true });
此时再点击模型的,其子对象呈可选中状态,其显示效果如下图所示:
图 6:点外挂模型子对象选择效果图