首页 > 其他分享 >Cesium阴影相关

Cesium阴影相关

时间:2022-11-23 19:24:25浏览次数:38  
标签:JulianDate viewer 阴影 Date new Cesium 相关

目的

记录一下自己学习 Cesium 阴影相关的内容,避免以后又重复踩坑

阴影的加载

阴影的加载其实很简单,只需要加载地球的时候设置对应的参数即可

viewer.scene.globe.enableLighting = true; //是否开启全局光照
viewer.shadows = true; //是否开启阴影
viewer.shadowMap.darkness = 0.6; //阴影透明度--越大越透明

这样阴影就出来了,如下图所示
img
但是没那么简单,放大看,可以看到明显的锯齿和毛刺【后面有机会再尝试增加软阴影的效果】
img

日照分析也是同理,如下图所示,日照阴影随着时间流逝,阴影所在的地方发生变化
img

日照分析

原理

改变 viewer 所在的 clockViewModel 即可让太阳所在的位置随着时间的改变而改变

JulianDate

想要改变cesium世界所在的时间,就需要改变通过JulianDate进行改变

其实JulianDate与JS中的Date是差不多的,首先在js中获取当前所在时间

let t = new Date()//t即为当前所在的时间
let mitert = t.getTime()//返回的是毫秒数

其次把当前时间转换为JulianDate的代码

Cesium.JulianDate.fromDate(new Date(mitert));

下面日照分析的代码就是通过毫秒数加setInterval来改变当前时间,进而影响日照的阴影

日照分析的代码

const openSunLight = () => {
  const option = {
    date: new Date().getTime(), //当前所在的时间
    darkness: 0.4, //阴影透明度
  };
  viewer.scene.globe.enableLighting = true;
  viewer.shadows = true;
  viewer.terrainShadows = Cesium.ShadowMode.RECEIVE_ONLY;
  viewer.shadowMap.darkness = option.darkness; //阴影透明度--越大越透明
  let time = 0
  inter = setInterval(() => {
    let date = option.date + time;
    if (null == option.date) {
      //时间传空的时候,就从当前时间开始
      date = new Date().getTime();
    }
    let utc = Cesium.JulianDate.fromDate(new Date(date));
    viewer.clockViewModel.currentTime = Cesium.JulianDate.addHours(
      utc,
      0,
      new Cesium.JulianDate()
    );
    // time = time + 1000 * 60;.
    // time = time + 60 * 60;
  }, option.speed);
};

取消日照分析,同理把相关的参数关闭即可

const closeSunLight = () => {
  viewer.scene.globe.enableLighting = false;

  viewer.shadows = false;

  viewer.terrainShadows = Cesium.ShadowMode.DISABLED;

  if (inter) {
    clearInterval(inter);

    inter = null;
  }
};

标签:JulianDate,viewer,阴影,Date,new,Cesium,相关
From: https://www.cnblogs.com/webglblog/p/16919508.html

相关文章

  • 3.使用API 17章相关问题
      实话实话直接看教程有点看不懂,先看博客写的api介绍1.处理API响应  看了博客,再看教材会比较容易理解importrequestsurl='https://api.github.com/search/re......
  • js 数组删除与这条数据相关的所有数据
    在开发过程中,后台同事给出的树状数据是列表形式的数据。当要删除此条数据时,需要删除掉此数据下所有的子级数据。效果图如下: 删除id为11后的数据:  具体代码如下:......
  • 字符编码,存储引擎及MySQL字段类型相关知识点
    字符编码,存储引擎及MySQL字段类型相关知识点一、字符编码1.在终端输入\s,查看数据库的基本信息(当前用户,版本,编码,端口号)2.默认的配置文件是my-default.ini拷贝上述的文......
  • 栈相关算法
        解题思路:正则匹配捕获/ (.*)[/,捕获到则进栈一,捕获]则出栈的思路  解题代码<script>varstr='2[3[a]2[1[b]2[c]]]'//varstr='2[......
  • Cesium调试技巧
    起因感觉每次想要去debugger的时候都得查文档,感觉很麻烦,干脆归纳一些到目前为止个人使用较多的一些Cesium查错技巧,方便以后回顾3dTiles属性查询针对3dTiles的封装,其实C......
  • 最高法-举证期间内未提起鉴定,后续申请鉴定的;以及一审未提起鉴定,二审提起鉴定的,只要鉴
    1.(2021)最高法民申127号  固原润农电子商务有限公司、陕西纬睿信息科技有限公司建设工程施工合同纠纷再审审查与审判监督民事裁定书申请人主张:1.陕西纬睿公司超过法院......
  • [C#]Event相关的三个典型Case收录.
    基本版:usingSystem;namespaceEventDemo1{publicdelegatevoidCatCallEventHandler();publicclassCat{//定义猫叫事件public......
  • 把socket相关函数封装成类
         book241.cpp和book242.cpp程序已经有点长了,有些啰嗦了,如果还想扩展功能,或用于多进程、多线程,程序结构将非常复杂。    不管是socket通信程序的客户端还......
  • Mysql下载及相关知识与SQL语句
    今日内容详细存储数据的演变1.文本文件 文件路径不固定(可以存到任意的路径)数据格式不统一(存入的数据格式也可以是任意的)2.软件开发目录规范 规定了数......
  • 支持安卓11.0操作系统——《XY310 4G 核心板》相关基本功能以及参数!
        产品概括:《XY6877ZA5GAI安卓核心板》基于紫光展锐T310(虎贲T310)平台,支持BOM全国产化,4G全网通。内构设置为研发人员精心自主研发技术成果。内有研发人员精心搭......