Cesium 实战 - 模型亮度调整(解决模型非常暗的问题)

news2024/12/24 3:00:26

Cesium 实战 - 模型亮度调整(解决模型非常暗的问题)

    • 环境版本
    • 试错过程
    • 解决问题
    • 在线示例

在某个项目中,遇到个问题,模型加载之后非常暗,经其他软件确认,模型本身正常,但是通过 Cesium 加载之后就非常暗

尤其是缩小之后,只能看到很小的一个黑块,于是尝试解决这个问题。

按惯例,经 bing 搜索,基本都是通过设置模型颜色来解决问题。还有通过设置颜色亮度来解决问题。

经过尝试,发现效果均不能达到要求,后来认为是光照问题,通过关闭地球光照、阴影、时光轴等来解决,均没有效果。

最后,发现两种方式可以解决问题:

1. 通过设置 DirectionalLight 从无限远的地方向单一方向发射的光才解决问题。

2. 通过设置时差也可以解决,但是需要知道当前时间。

本文包括:环境版本、试错过程、解决问题、在线示例三部分。


环境版本

Cesium 版本:1.105.0

在这里插入图片描述


试错过程

1. 尝试修改模型颜色以及亮度:

以下是尝试代码,经尝试,对模型暗度基本没有影响:


entity.model.color = Cesium.Color.WHITE; // 模型颜色

entity.model.lightColor = new Cesium.Cartesian3(100.0,100.0, 100.0); //表示,rgb的倍数,这样就是白光增强到100倍

entity.model.color = Cesium.Color.fromAlpha(Cesium.Color.RED, 1); //设置模型颜色与透明度

entity.model.silhouetteColor = Cesium.Color.fromCssColorString('rgba(255,255,255,0.3)');  // 模型边框颜色
entity.model.silhouetteSize = 3;

2. 尝试关闭灯光来调整亮度。

以下是尝试代码,经尝试,调整灯光也无效:

window.viewer.scene.globe.enableLighting = false; // 关闭灯光
window.viewer.shadows = false; // 关闭阴影
viewer.terrainShadows = Cesium.ShadowMode.RECEIVE_ONLY; // 设置地形阴影
viewer.shadowMap.darkness = 0.02 // 阴影透明度--越大越透明


解决问题

1. 通过设置单一光源解决问题。

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

2. 通过设置时差解决问题。

这里需要注意一下,最好是获取 viewer 的当前时间,通过计算,使模型处于白天。

viewer.clock.currentTime = Cesium.JulianDate.addHours(Cesium.JulianDate.now(new Date()), 12, new Cesium.JulianDate());

经实验,通过时差解决效果会比单一光源好一些。


在线示例

镜像沙盒示例:Cesium 解决模型暗示例

在这里插入图片描述


参考博客:

cesium 6 关闭时间对于模型亮度的影响
Cesium(3):加载gltf模型后很暗的原因
cesium模型变黑的解决
CESIUM例子学习(二)——模型颜色属性
Cesium光照效果添加,且添加倾斜摄影后实现日照阴影效果
Cesium 修改当前时间,显示北京时间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/553659.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3项目技巧(更新中ing)

文章目录 axios封装http.jstestAPI.jsmain.js测试如果项目中需要多个baseURL 自动导入scss文件案例文件使用案例 引入aliyun图标库先看效果查看官网文档引入并使用 vueuse实现-吸附导航交互安装案例 多个组件共享的请求、数据、封装到pinia案例父组件中调用子组件中应用 axios封…

django admin后台管理系统中配置可上传多张图片功能

目录 一、默认的常规方式只能上传一张图片的示例 二、配置可上传多张图片 问题:在django自带的admin后台管理系统中常规的方式只能上传一张图片,无法上传添加多张图片,如下图。所以现在需要配置可上传多张图片的功能! 一、默认的…

【Atlas200】Host?Device?RC?EP?

目录 atlas500的ep模式Atlas 200 DK的host侧内存地址的分配Device侧内存管理内存的拷贝复用方案atlas500的ep模式 如上图所示,cpu+内存一侧为host侧;而gpu+显存一侧为device侧。 Atlas 200 DK的 在昇腾310AI处理器(NPU)中,Davinci Core负责专用计算,而Control CPU则负责…

拉电流 、灌电流、吸收电流

单片机的引脚,可以用程序来控制,输出高、低电平,这些可算是单片机的输出电压。但是程序控制不了单片机的输出电流。单片机的输出电流,很大程度上是取决于引脚上的外接器件。 什么是拉电流 、灌电流、吸收电流 ? 51单片机的IO口驱…

SpringCloud(28. 分布式会话与分布式事务)

上一篇:27. Redis 和 ZK 分布式锁 文章目录 1. 集群部署时的分布式 session 如何实现?2. 分布式事务方案2.1 两阶段提交方案/XA方案2.2 TCC 方案2.3 本地消息表2.4 可靠消息最终一致性方案2.5 最大努力通知方案 1. 集群部署时的分布式 session 如何实现&…

极狐(GitLab) 重磅发布新产品「极狐星」,让研发效能看得清,算得准,成就企业精英效能管理

在研发驱动业务增长的今天,越来越多的研发管理者发现: 总是觉得研发资源不够用? 如何用数据衡量研发效能? 如何定位软件交付瓶颈? 怎样管理并预警项目状态? 想尽早发现代码泄露风险怎么办?…

GPS轨迹在Three.js中的地理对齐和显示

如何使用 three.js 可视化 GPS 轨迹? 棘手的部分是获得正确的投影,以便 GPS 轨迹与我的 Jotunheimen 地形图对齐。 在 D3.js 的帮助下,我能够做我想做的事。 推荐:用 NSDT设计器 快速搭建可编程3D场景。 我将使用我之前在 Leaflet…

二十三种设计模式第八篇--装饰器模式

装饰器模式是一种结构型设计模式,它允许在不改变对象原有结构的情况下,动态地添加新的行为或功能。装饰器模式通过将对象包装在一个装饰器对象中,来实现对对象的功能扩展。装饰器对象与被装饰对象具有相同的接口,因此可以无缝地替…

ES6中数组新增了哪些扩展?

一、扩展运算符的应用 ES6通过扩展元素符...&#xff0c;好比 rest 参数的逆运算&#xff0c;将一个数组转为用逗号分隔的参数序列 console.log(...[1, 2, 3]) // 1 2 3console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5[...document.querySelectorAll(div)] // [<div>, …

线上品牌销售裂变,质变

大家好&#xff01; 我是小鱼经过前两期的 品牌线上运营分享 我们大概有了相对的概念 那么我们这期简单讲一下 如何让线上品牌销售产生 优质的变化。 分享 品牌方让“专业的人做专业的事”&#xff1a; 每个小程序店可招募1w个分享者负责引流和推广自家的视频号&#xff0c; 用…

MyBatis缓存机制要点解析以及如何与三方缓存组件Redis整合示例

文章目录 一、MyBatis的一级缓存1、每个SqlSession都有自己的一级缓存2、同一个SqlSession但是查询条件不同3、 同一个SqlSession两次查询期间执行了任何一次增删改操作 4、同一个SqlSession自己手动清空一级缓存二、MyBatis的二级缓存1、二级缓存的相关配置 三、一级\二级缓存…

外购设备PDA

专业扫描引擎&#xff0c;扫尽千军万码 工业级专业扫描引擎&#xff0c;数据采集精准、快速、安全&#xff1b; 同时增加摄像头扫描&#xff0c;自带绿点定位&#xff0c;实现快速对准&#xff1b; 可识别破损&#xff0c;沾染灰渍等条码提高工作效率。 一、产品特点 216GB/…

xhs xs _webmsxyw 纯算法还原盗用代码请注明出处搬来搬去真的很下头!

本文以教学为基准、本文提供的可操作性不得用于任何商业用途和违法违规场景。 本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任。 最新版 x-s 没露任何版权请审核员认真对待谢谢。 【2023.05.22】 更新全站接口通用 …

携手企企通,农业产业化国家重点龙头企业「罗牛山」加速采购数智化建设

导语 与企企通形成战略合作&#xff0c;双方基于供应商、合同管理、采购协同等多方面的应用场景&#xff0c;打造立足海南辐射全国的行业标准化解决方案。行业案例的示范作用&#xff0c;不仅对牛罗山采购业务数字化有指导意义&#xff0c;对整个畜牧养殖行业加入采购供应链管…

redis-实现限流

1、 主流的四种限流策略&#xff0c;我都可以通过redis实现 引言 在web开发中功能是基石&#xff0c;除了功能以外运维和防护就是重头戏了。因为在网站运行期间可能会因为突然的访问量导致业务异常、也有可能遭受别人恶意攻击 所以我们的接口需要对流量进行限制。俗称的QPS也是…

finallshell mac SSH工具

一、FinallShell 是什么 FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工具,充分满足开发,运维需求. 特色功能: 云端同步,免费海外服务器远程桌面加速,ssh加速,本地化命令输入框,支持自动补全,命令历史,自定义命令参数 二、主要特性 …

CMake Practice 学习笔记四---使用动静态库

任务&#xff1a; 编写一个程序使用我们上一届构建的共享库 1、准备工作 在/backup/cmake目录建立t4目录 mkdir t4在t4目录中建立src目录&#xff0c;并编写源文件main.c cd t4 mkdir src && cd src touch main.cmain.c的内容如下&#xff1a; #include <hel…

博客系统后端设计(七) - 实现显示用户信息与注销功能

文章目录 1. 显示用户信息1.1 约定前后端交互接口1.2 修改列表页的前段代码1.3 实现详情页的后端代码1.4 实现详情页的前端代码 2. 注销2.1 确定前后端交互接口2.2 实现后端代码2.3 修改前端代码 1. 显示用户信息 此处的用户名是写死的&#xff0c;我们希望的是此处是能够动态生…

nodejs+vue婚庆服务网站的设计与实现

为了适应现代人类强烈的时间观念&#xff0c;对于用户&#xff0c;因此&#xff0c;这就需要一个互联网平台实现在线婚庆服务网站&#xff0c;正是这么一个方便的平台。本网站中&#xff0c;用户与活动报名可以以最方便的形式&#xff0c;在最短的时间内获悉报名信息&#xff0…

Nginx Web页面缓存 Rsync远程同步

Nginx Web页面缓存 在http块中加配置&#xff1a; proxy_cache_path /data/nginx/cache levels1:2 keys_zonemy_cache:10m max_size10g inactive60m use_temp_pathoff ##################################### path&#xff1a;强制参数&#xff0c;指定缓存文件的存放路径 …