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

感兴趣的朋友可以试试初始化容器的时候,将timeline改为true,然后拖动时间线观察模型亮度:

网上有人提出下面解决方法:

// DirectionalLight 表示 从无限远的地方向单一方向发射的光。
viewer.scene.light = new Cesium.DirectionalLight({
direction: new Cesium.Cartesian3(0.354925, -0.890918, -0.283358)
})

经过实际体验,这个代码只是增加了1个光亮,它会让模型变的非常的亮,并且是太亮了,大大超过了普通模型的效果,所以这样做并不好。

最好从根本问题解决,解决思路:如果是cesium的时间变化让模型产生变化,那么就让cesium停留在白天的某个固定时刻,就行了。

解决代码如下:

   //时间亮度变化,只对模型起作用,对影像地图是不起作用的,影像地图亮度一直不变
function timeControl() {
//animation是动画控件,timeline是时间轴控件 //时间轴暂停,并将时间设置在某个固定时刻
viewer.clock.shouldAnimate = false;//时间轴动画停止
viewer.clock.currentTime = Cesium.JulianDate.fromIso8601("2023-09-01T06:00:00Z");//这个UTC时间对应的北京时间是14时 //时间轴启动,在某个范围内,按某个播放速度播放
// viewer.clock.shouldAnimate = true;
// viewer.clock.startTime = Cesium.JulianDate.fromIso8601("2023-09-01T00:00:00Z");//设置开始时间
// viewer.clock.stopTime = Cesium.JulianDate.fromIso8601("2023-09-01T20:20:00Z");//设置结束时间
// viewer.clock.currentTime = Cesium.JulianDate.fromIso8601("2023-09-01T06:00:00Z");//这个UTC时间对应的北京时间是14时
// viewer.clock.multiplier = 60;//若设置为3600,表示真实世界经过1秒,而在Cesium中时钟经过1小时
// viewer.clock.clockStep = Cesium.ClockStep.SYSTEM_CLOCK_MULTIPLIER;
// viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP;//CLAMPED:达到终止时间后停止,LOOP_ STOP:达到终止时间后重新循环,UNBOUNDED:达到终止时间后继续读秒
// viewer.timeline.zoomTo(viewer.clock.startTime, viewer.clock.stopTime); // 显示时间范围
}

还有2行亮度设置代码,也贴出来:

        viewer.scene.globe.enableLighting = true;//true:360度地球有亮和黑的区分,亮和黑的影像地图亮度是一样的
viewer.shadows = false;//是否显示阴影

cesium问题-关于不同时间模型亮度不一致问题的更多相关文章

  1. oracle时间模型

    Oracle在9i或者早期的版本,对于性能优化方面,主要采用命中率模型,后面的版本,也保留着命中率模型,比如在awr报告中,Instance Efficiency Percentages (Targe ...

  2. Oracle Time Model Statistics(时间模型统计)

    Oracle数据库从10g開始,启用以时间模型统计为主.命中率为辅等性能度量指标.基于时间模型统计,主要是基于操作类型測量在数据库中花费的时间的统计信息.最重要的时间模型统计是数据库时间.或DB时间. ...

  3. 【Oracle】转:通过案例学调优之--Oracle Time Model(时间模型)

    转自:http://blog.51cto.com/tiany/1596012 通过案例学调优之--Oracle Time Model(时间模型) 数据库时间 优化不仅仅是缩短等待时间.优化旨在缩短最终 ...

  4. Cesium案例解析(四)——3DModels模型加载

    目录 1. 概述 2. 代码 3. 解析 4. 参考 1. 概述 Cesium自带的3D Models示例,展示了如何加载glTF格式三维模型数据.glTF是为WebGL量身定制的数据格式,在网络环境 ...

  5. cesium Animation显示系统时间

    var d = new Date(); var hour = 0 - d.getTimezoneOffset(); viewer.animation.viewModel.timeFormatter = ...

  6. cesium加载纽约市3dtiles模型

    const tileset = new Cesium.Cesium3DTileset({ url: '../../assets/data/NewYork/tileset.json' }); viewe ...

  7. [转]解决Docker容器时间与主机不一致问题

    原文: https://blog.csdn.net/luckystar689/article/details/76572046 https://stackoverflow.com/questions/ ...

  8. Cesium官方教程7--三维模型

    原文地址:https://cesiumjs.org/tutorials/3D-Models-Tutorial/ 三维模型 (3D Models) 这篇教程给大家介绍,如何在Cesium中通过Primi ...

  9. MySQL-时区导致的时间前后端不一致

    背景 今天早上刚上班,就被同事提示,程序的日期处理有问题.数据库里日期为:2019-05-21 11:00:00 而前端显示的日期为:2019-05-21 16:00:00 分析 那肯定是和时区相关了 ...

  10. Ubuntu 16.04.6 + Win10 双系统时间错误且不一致

    1.在Win系统下,按Win键 + R,输入regedit 运行, 2.打开注册表,按照路径查找     计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet ...

随机推荐

  1. MySQL配置和常用命令

    目录 数据库配置 常用操作 项目地址:https://github.com/aijisjtu/Bot-Battle graph LR A[配置数据源] --> B[建立连接] B --> ...

  2. Arm架构下麒麟操作系统安装配置Mariadb数据库

    1.安装配置JDK (1)检查机器是否已安装JDK 执行 java -version命令查看机器是否安装JDK,一般麒麟操作系统默认安装openjdk 1.8. (2)安装指定版本JDK 如果麒麟操作 ...

  3. mupdf实用操作demo,C++操作PDF文件

    前文: 最近有个项目,需要读写PDF,本来想着挺简单的,读写PDF有那么多的库可以使用,唰唰的就完成了. 忘记了我写C++的,还是在国产系统上开发的. 所以一般的东西还不好使,因为项目需要在多个架构的 ...

  4. 动态库 DLL 封装五:dll中弹出一个dialog窗口

    操作步骤: 1.在dll项目中,点击 资源,新建一个 dialog 2.cpp文件 CDialog dlg(IDD_STA); // 显示窗口 dlg.Create(IDD_STA, 0); dlg. ...

  5. CentOS7环境saltstack安装配置

    一.安装epel yum源 yum -y install epel-release yum clean all yum makecache 二.安装 saltstack-master 并配置 1.安装 ...

  6. 详细的讲一下微服务框架--SpringCloud

    一:微服务架构? 1.为什么需要微服务架构 大家都知道,最开始开发系统就是单机模式(only one computer).但是随着网络的不断发展,数据不断的增加,业务不断的增加,之前在一台机器上实现的 ...

  7. Mac搭建appium环境及python运行代码示例

    Appium主要是通过调用安卓提供的接口来执行命令的,所以需要安装Java和安卓SDK. 1.安装Appium服务端 appium的服务端是基于node的,直接使用npm(node包管理器)安装即可, ...

  8. Oracle nullif函数使用

    nullif函数使用 简单来说,就是表达式1的值和表达式2的值进行对比 可以使用''字符 select nullif('','1111') from dual 输出为空 不可以使用null字符 sel ...

  9. 力扣1045(MySQL)-买下所有产品的客户(中等)

    题目: Customer 表: Product 表: 写一条 SQL 查询语句,从 Customer 表中查询购买了 Product 表中所有产品的客户的 id. 示例:  解题思路: 建表语句: 1 ...

  10. 力扣227(java)-基本计算器Ⅱ(中等)

    题目: 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值. 整数除法仅保留整数部分. 你可以假设给定的表达式总是有效的.所有中间结果将在 [-231, 231 - 1] 的范围内. ...