首页 / 浏览问题 / 三维GIS / 问题详情
webgl9d S3M图层开启碰撞检测失败
2EXP 2018年12月19日

使用产品:iserver 9D   操作系统:win10 x64 浏览器:谷歌71

S3M数据说明:隧道数据;

问题描述:

开发WebGL 三维地图(非IDeskTop),隧道中可以进去,有一部分的物体可以通过鼠标左键拖拽,穿越山体或者墙壁,代码见以下代码。

我希望的功能:可以进入隧道,但不能碰到任何物体并穿越过去,等同用IDeskTop打开的效果;

核心代码如下 

 //创建一个查看器(Viewer widget)
      var _viewer = new Cesium.Viewer("cesiumContainer", {});
      this.viewer = _viewer;
      let scene = _viewer.scene;
      scene.screenSpaceCameraController.enableCollisionDetection = true;
      scene.screenSpaceCameraController.enableIndoorColliDetection = true;
      //移除logo
      var credit = _viewer.scene.frameState.creditDisplay;
      credit.container.removeChild(credit._imageContainer);


      
       


      var widget = this.viewer.cesiumWidget;
      var scene = this.viewer.scene;
      var canvas = this.viewer.canvas;
      var clock = this.viewer.clock;
      var camera = this.viewer.scene.camera;
      var entities = this.viewer.entities;

   //打开的必须是切片的图层
        let mainLayerName = this.curTunnelData.jgLayer;
        console.log(mainLayerName, "mainLayerName");
        var mainS3MUrl =
          urlIP +
          "/iserver/services/3D-BSMap3D-SDM/rest/realspace/datas/" +
          mainLayerName +
          "/config";
        console.log(mainS3MUrl, "mainS3MUrl");

        var promise2 = scene.addS3MTilesLayerByScp(mainS3MUrl, {
          name: mainLayerName,
          cullEnabled: false
        });

 //then方法的第一个参数是resolved状态的回调函数,第二个参数(可选)是rejected状态的回调函数。
        promise2.then(
          function(layer) { 
            console.log(layer, "layer");
            if (!scene.pickPositionSupported) {
              // alert("不支持深度纹理,无法拾取位置!");
              console.log("不支持深度纹理,无法拾取位置!");
            }
          },
          function(e) {
            //Promise对象状态发生变化 变为rejected
            if (widget._showRenderLoopErrors) {
              var title =
                "加载SCP失败,请检查网络连接状态或者url地址是否正确?";
              widget.showErrorPanel(title, undefined, e);
            }
          }
        );

1个回答

因为开启的摄像机碰撞,所以导致会碰撞到部分物体使摄像机无法移动,建议您用飞行路线来进行浏览,可以参考下面的示例

http://support.supermap.com.cn:8090/webgl/examples/editor.html#flyRoute

2,701EXP 2018年12月19日
目前这个 问题解决了吗
...