cesium 使用entities、primitives添加的模型并且改变模型颜色

entities方式绘制模型:【线条】

 var gltf = viewer.entities.add({
          guid: crossguid,
          name: 'gltf',
          polyline: {
            width: 1,
            material: Cesium.Color.WHITE,
            show: true,
            positions: Cesium.Cartesian3.fromDegreesArrayHeights(nodePositionArr),
            distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 10000)
          },
        });

primitives方式添加模型:

 viewer.scene.primitives.add(
          Cesium.Model.fromGltf({
            id: feature.towerguid,
            url: '/model/' + _that.fileglb + '/' + feature.modelname + '.glb', // 本地文件
            modelMatrix: towerMt4Tower,
            scale: 1, // 放大倍数
          }),
        )

通过鼠标右键点击模型使模型变颜色成选中状态:

    // 鼠标右键获取属性
    const handler = new Cesium.ScreenSpaceEventHandler(canvas);
    const canvas = Winviewer.scene.canvas;
    const ellipsoid = Winviewer.scene.globe.ellipsoid;
    handler.setInputAction(function (click) {
      // 禁止浏览器鼠标右键菜单
      document.oncontextmenu = function () {
        return false;
      };
      _that.pickModel = Winviewer.scene.pick(click.position);
      _that.position = Winviewer.scene.pickPosition(click.position);
      const pickModel = _that.pickModel;
      if (pickModel) {
        if (pickModel.id.guid) {
          //entities  添加模型变色
          pickModel.id.polyline.material.color = Cesium.Color.RED;
        } else {
          //primitive  添加模型变色
          pickModel.primitive.color = new Cesium.Color(1.0, 0, 0, 1.0);
        }
      } 
    }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);

在关闭的事件中记得要删除鼠标点击事件,否则会叠加重复触发

 handler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_CLICK)//移除鼠标右键事件

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值