2.15 功能提供类(Provider)
功能提供类主要为三维地图提供特效、进阶漫游、场景效果修改等功能。
Provider对象可以分为三大类:
特效类:
- 火焰(FireProvider)
- 雾(FogProvider)
- 喷泉(FountainProvider)
- 大气光晕(HaloProvider)
- 雨(RainProvider)
- 雪(SnowProvider)
- 水枪(WatercraneProvider)
- 水效对象(WaterProvider)
进阶漫游类:
- 模型动画(AnimationProvider)
- 动态路径漫游(DynamicPathProvider)
- 漫游参数及热键配置(RoamConfigProvider)
场景效果修改类:
- 数据高亮(HighlightProvider)
- 光线照射(LightProvider)
- 场景系统操作(SystemProvider)
- 地形影像透明(TerrainTransparencyProvider)
- 纹理替换(TextureReplacementProvider)
- 线框模式(WireframeProvider)
特效类
特效类主要提供了基于粒子系统来实现的各种粒子特效,以及水面效果。
需要注意的是,粒子系统的各类对象,其不具有update方法,即其在创建时就确定了其效果,不能在途中改变,若要改变只能删除再重新创建。
水效对象(WaterProvider) 则是个例外,其实现原理与粒子系统截然不同,因此可正常的进行update。
进阶漫游类
进阶漫游类主要提供了模型动画、动态路径漫游、漫游参数及热键修改等功能。
模型动画(AnimationProvider) 可以控制单个模型的运动轨迹、旋转朝向、比例大小等参数,用来实现较为逼真的模型动画演示,比如可以模拟飞机的起飞、转向、降落等效果,如图:
动态路径漫游(DynamicPathProvider) 则提供了可自定义规划漫游路线的功能,通常通过创建路径关键点,播放模式、播放速度,播放视角等参数,来模拟人、车在路线上观察的效果。
常规用法通常是用来进行视频巡更,即设定一定的路线轨迹,当行进至关键点位,检测当前点位附近的摄像头,如存在,则暂停前进,同时播放其视频内容,播放完毕后,继续前进。通过这种方式能有效的代替人工的巡逻。
还有种特殊用法则是根据GPS信号返回的位置信息,在场景中实时显示对应的模型,比如根据汽车GPS,在场景中显示汽车的位置,这种方式偏重于实时演示物体位置,常用于实时数据移动路径的展示。
漫游参数及热键配置(RoamConfigProvider) 可控制鼠标、键盘漫游的速度,以及场景对鼠标、键盘的热键响应。通过该功能,可定制化的对漫游进行控制。
场景效果修改类
数据高亮(HighlightProvider) 可以通过数据的id或者坐标点,来进行数据的高亮,需要注意的是,高亮可以针对数据整体进行高亮,也可以针对单个对象(人工模型数据ModelData、矢量数据FeatureModelData),进行高亮,目前倾斜摄影数据OsgbData暂不支持对象化高亮。
光线照射(LightProvider) 目前仅能对人工模型数据(ModelData)、倾斜摄影数据(OsgbData)能产生效果,矢量的光照效果由LightSymbol进行实现。
场景系统操作(SystemProvider) 可以修改场景相机的透视角大小、视野距离、近截面距离和天空盒路径等。一般来说,无特殊需求,无需对其进行修改。
天空盒变换:
关于天空盒,其制作流程可参考天空盒变换。
天空盒资源文件制作完毕后,我们只需在代码中这么写,注意路径末尾要带上“/”或者“\”就行了:
var systemProvider = new CooSDK.SystemProvider({
skyBoxImgPath: "x:/xxx/新建文件夹/"
});
地形影像透明(TerrainTransparencyProvider) 常用于地下管线、地下空间的展示功能,其能把地形影像做一定程度的透明化。
纹理替换(TextureReplacementProvider) 可将人工模型(ModelData)指定表面的纹理进行替换,常用于某些交通场景,如红绿灯的状态切换等等。
线框模式(WireframeProvider) 用线框的显示方法来重新渲染场景中的模型数据。目前提供线框+白膜和线框+纹理两种显示模式。
线框+白膜:
线框+纹理: