SuperMap iClient3D for WebGL学习笔记(一)——加载三维场景

作者:赵爽

使用产品:SuperMap iDesktop & SuperMap iServer
产品下载地址:http://support.supermap.com.cn/DownloadCenter/ProductPlatform.aspx

产品配置环境
启动iServer(最后一行显示Server startup in *** ms为启动成功)
将webgl包放在iServer根目录下的webapps文件夹内

操作步骤
在SuperMap iDesktop中将要发布的三维模型切好缓存,然后启动iServer,进入到iServer的首页(默认网址是localhost:8090)如果是第一次启动,需要注册个用户。

如果需要修改端口号,可以在iServer根目录下的conf文件夹内找到server.xml,修改里面对应的8090内容

在首页中,选择快速发布一个或一组服务,数据来源选择工作空间,点击下一步,远程浏览选择切好缓存的工作空间,然后选择REST-三维服务进行发布。
发布成功后,在服务管理-三维服务中会有一个新的服务,以3D-工作空间名称命名。点进去以后有对应的服务地址和工作空间路径,缓存路径等。
点击服务地址,进入realspace/scenes三维场景列表中,可以以WebGL3D的形式浏览场景。先要浏览一下,检查一下是否发布成功。

发布失败原因
1.工作空间路径选择错误/发布的工作空间内没有缓存
2.缓存格式没有切成s3m格式
3.发布了数据服务,并且在发布的时候打开了具有该数据的工作空间

在SuperMap iClient3D for WebGL中有两种加载场景的方式
第一种
scene.open的方式加载,该加载方式不需要设置相机位置,加载的时候以切缓存时候的相机视角位置加载。
url地址获取位置:服务地址/realspace
完整代码

function onload(Cesium) {
    var viewer = new Cesium.Viewer('cesiumContainer');
    var scene = viewer.scene;
    scene.open("http://www.supermapol.com/realspace/services/3D-CBD/rest/realspace");
}

第二种
scene.addS3MTilesLayerByScp方式加载,该方式是以三维切片缓存图层的方式加载,也就是说如果需要在前端展示整个三维场景,那么该场景中有多少个图层就要写多少遍该代码(示例中写了两个图层)。并且以该方式加载需要单独设置相机视角
url地址获取位置:服务地址/realspace/datas/数据集@数据源/获取三维数据的配置文件
获取配置文件后里面有一串字符,里面有相应的多个坐标,选择其中一个就可以了。
在这里插入图片描述
完整代码

function onload(Cesium) {
    var url = "http://www.supermapol.com/realspace/services/3D-CBD/rest/realspace/datas/Building@CBD/config",
        url2 = "http://www.supermapol.com/realspace/services/3D-CBD/rest/realspace/datas/Tree@CBD/config";
    var viewer = new Cesium.Viewer('cesiumContainer');
    var scene = viewer.scene;
    scene.addS3MTilesLayerByScp(url, {name: 'Building'});
    scene.addS3MTilesLayerByScp(url2, {name: 'Tree'});
    scene.camera.setView({
							//将经度、纬度、高度的坐标转换为笛卡尔坐标
							destination: Cesium.Cartesian3.fromDegrees(116.458107016510520,39.912326087071563,4000)
						});
}

往期链接

SuperMap iClient3D for WebGL学习笔记(二)——pickEvent事件
SuperMap iClient3D for WebGL学习笔记(三)——entity面渐隐渐现效果

你可能感兴趣的:(三维GIS,SuperMap,三维场景)