Cesium因光照影响导致模型亮度发生变化

Cesium因光照影响导致模型亮度发生变化

项目中遇到发布的bim模型在当天不同时间的模型亮度发生变化,尤其是晚上的时候会出现模型很暗。尴了个尬,一度怀疑是自己眼睛有问题,连续几天出现同样的情况,想到可能是时间问题导致的模型亮度不同,于是测试了一下timeline,果然不出所料。

感兴趣的朋友可以试试初始化容器的时候,将timeline改为true,然后拖动时间线观察模型亮度:
在这里插入图片描述
在这里插入图片描述

解决代码:

        this.viewer.scene.light = new Cesium.DirectionalLight({ //去除时间原因影响模型颜色
          direction: new Cesium.Cartesian3(0.35492591601301104, -0.8909182691839401, -0.2833588392420772)
        })
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Cesium中控制`tileset`闸门模型高度变化,可以使用以下代码: ```javascript const viewer = new Cesium.Viewer('cesiumContainer'); // 加载tileset const tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({ url: 'path/to/tileset.json' })); // 获取tileset中的模型实体 let gate; tileset.readyPromise.then(() => { // 在tileset加载完成后,查找名为“Gate”的模型实体 gate = tileset.getTileByName('Gate').content; // 将模型的初始高度设置为0 gate.boundingVolume.height = 0; }); // 创建一个滑动条控件,用于控制闸门高度 const slider = document.getElementById('slider'); slider.oninput = function() { // 更新闸门高度 const gateHeight = parseFloat(slider.value); // 更新模型实体的高度 gate.boundingVolume.height = gateHeight; // 刷新场景 viewer.scene.requestRender(); } ``` 在上面的代码中,我们首先创建了一个 Cesium 的 Viewer 对象,并加载了一个3D tileset。在tileset加载完成后,我们通过`tileset.getTileByName`方法查找名为“Gate”的模型实体,并将其初始高度设置为0。接着,我们创建了一个滑动条控件,用于控制闸门高度。当滑动条的值发生变化时,我们会更新模型实体的高度,并调用`viewer.scene.requestRender()`方法刷新场景,以显示更新后的闸门高度。 需要注意的是,上述代码中的`slider`元素需要在 HTML 中定义好。例如,可以在 HTML 中添加以下代码: ```html <input type="range" min="0" max="1000" value="0" class="slider" id="slider"> ``` 其中,`min`和`max`属性分别表示滑动条的最小值和最大值,`value`属性表示滑动条的初始值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值