cesium加载S3M白膜,通过分层设色实现渐变效果,设置点光源

var hyp = null;
var layer = null;
//加载白膜
function fnOpenSCENE() {
  var promise = scene.open('http://www.supermapol.com/realspace/services/3D-CBDbuilding/rest/realspace');
  Cesium.when.all(promise, function () {
    //切换视角至模型位置
    scene.camera.setView({
      "destination": { "x": -2184052.8561826544, "y": 4388517.457033638, "z": 4070341.9478602377 },
      "orientation": { "pitch": -0.8394038119311453, "heading": 6.247957622130757, "roll": 0.00001267923949921368 }
    });
    layer = scene.layers.find("ExtrudeBodyResult@CBD");
    hyp = new Cesium.HypsometricSetting();
    setHypsometric(layer);//渐变效果
    // switchLight();//点光源
  });
}

渐变效果

function setHypsometric(layer) {
  //创建分层设色对象      
  var colorTable = new Cesium.ColorTable();
  //设置最大/最小可见高度, 颜色表  
  colorTable.insert(0, new Cesium.Color(0, 39 / 255, 148 / 255));
  colorTable.insert(150, new Cesium.Color(149 / 255, 232 / 255, 249 / 255));
  hyp.ColorTable = colorTable;
  hyp.Opacity = 0.8;//透明度
  hyp.LineInterval = 10.0;//线宽
  layer.hypsometricSetting = {
    hypsometricSetting: hyp,
    analysisMode: Cesium.HypsometricSettingEnum.AnalysisRegionMode.ARM_ALL //显示模式
  }
};

在这里插入图片描述
点光源

var directionalLight, directionalLight_1, directionalLight_2, directionalLight_3, directionalLight_4, pointLight7;
function switchLight() {
  //设置环境光(白天)
  scene.lightSource.ambientLightColor = new Cesium.Color(0, 0, 0, 1);
  //开启HDR
  viewer.scene.hdrEnabled = true;

  // 指定范围
  var pointLightPos7 = new Cesium.Cartesian3.fromDegrees(116.45775058552576, 39.91295039170964, 300);
  var pointLightOptions7 = {
    cutoffDistance: 1000,//点光源的扩散距离
    color: new Cesium.Color(1, 0, 0, 1),
    intensity: 2.5 //点光源强度
  };
  pointLight7 && scene.removeLightSource(pointLight7)
  pointLight7 = new Cesium.PointLight(pointLightPos7, pointLightOptions7);
  scene.addLightSource(pointLight7);


  // 新增直射光--西北侧光
  // var position = new Cesium.Cartesian3.fromDegrees(106.282013734667, 29.7615756638933, 630);
  // var targetPosition = new Cesium.Cartesian3.fromDegrees(106.756840202248, 29.3980661015228, 500);
  // var dirLightOptions = {
  //   targetPosition: targetPosition,
  //   color: new Cesium.Color(0, 0, 1, 1),//蓝色
  //   intensity: 2
  // };
  // directionalLight && scene.removeLightSource(directionalLight)
  // directionalLight = new Cesium.DirectionalLight(position, dirLightOptions);
  // scene.addLightSource(directionalLight);

  // 新增直射光1--东南侧光
  // var position1 = new Cesium.Cartesian3.fromDegrees(106.756840202248, 29.3980661015228, 500);
  // var targetPosition1 = new Cesium.Cartesian3.fromDegrees(106.282013734667, 29.7615756638933, 630);
  // var dirLightOptions1 = {
  //   targetPosition: targetPosition1,
  //   color: new Cesium.Color(1, 0, 0, 1),//红色
  //   intensity: 2
  // };
  // directionalLight_1 && scene.removeLightSource(directionalLight_1)
  // directionalLight_1 = new Cesium.DirectionalLight(position1, dirLightOptions1);
  // scene.addLightSource(directionalLight_1);

  // 新增直射光2--东北侧光
  // var position2 = new Cesium.Cartesian3.fromDegrees(106.437, 29.571, 71);
  // var targetPosition2 = new Cesium.Cartesian3.fromDegrees(106.436, 29.569, 1);
  // var dirLightOptions2 = {
  //   targetPosition: targetPosition2,
  //   color: new Cesium.Color(0, 1, 0, 1),//绿色
  //   intensity: 2
  // };
  // directionalLight_2 && scene.removeLightSource(directionalLight_2)
  // directionalLight_2 = new Cesium.DirectionalLight(position2, dirLightOptions2);
  // scene.addLightSource(directionalLight_2); 

  // 新增直射光3--西南侧光
  // var position3 = new Cesium.Cartesian3.fromDegrees(106.452, 29.573, 1);
  // var targetPosition3 = new Cesium.Cartesian3.fromDegrees(106.454, 29.581, 91);
  // var dirLightOptions3 = {
  //   targetPosition: targetPosition3,
  //   color: new Cesium.Color(1, 0, 1, 1),//紫色
  //   intensity: 2
  // };
  // directionalLight_3 && scene.removeLightSource(directionalLight_3)
  // directionalLight_3 = new Cesium.DirectionalLight(position3, dirLightOptions3);
  // scene.addLightSource(directionalLight_3);

  // 新增直射光4--顶光+正面光
  // var position4 = new Cesium.Cartesian3.fromDegrees(106.492, 29.593, 100);
  // var targetPosition4 = new Cesium.Cartesian3.fromDegrees(106.492, 29.593, 10);
  // var dirLightOptions4 = {
  //   targetPosition: targetPosition4,
  //   color: new Cesium.Color(1, 1, 0, 1),//黄色
  //   intensity: 2
  // };
  // directionalLight_4 && scene.removeLightSource(directionalLight_4)
  // directionalLight_4 = new Cesium.DirectionalLight(position4, dirLightOptions4);
  // scene.addLightSource(directionalLight_4);
}

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值