GIS融合之路(五)番外-山海鲸的体积云又又又升级了

news2024/11/16 2:16:37

一转眼自上一篇文章已经过去半年之久,承诺的CesiumJS的天气文章竟然又又又又跳票了,没办法。开发任务时间紧,任务重。GIS的进一步整合进入深水区,每向前迈一步都是步履维艰,好不容易把体积雾,接触阴影,云影,眼部适应的功能整合完了,正打算把这篇鸽了半年的天气整合文章给补上。不料突然刷到体积云渲染的祖师爷-Guerrilla Games,也就是《地平线》游戏的制作团队,竟然又在SIGGRAPH 2022和SIGGRAPH 2023发了两篇升级体积云的渲染文章。本着宁可累死自己,也要卷死同行的国际主义精神,必须研究下看看能不能再提升一下山海鲸云层的渲染效果。

看完之后确实感慨国际友人的分享精神。对于一些性能上的提升点,确实需要慢慢消化。同时关于地形云层和风暴云层暂时在孪生和GIS系统中用的还不多,最让我心动的便是这个卷云了。

什么,这个云的名字怎么都这么卷?我们先看看这个云家族中的卷王长什么样子:

卷云

可以看到卷云其实我们在生活中还是非常常见的,特点就是又高又卷,非常符合我们产品的气质。那说干就干,看看如何结合到现有的云层渲染当中。

1.分层渲染

首先从ppt中可以看到,新的算法拆分了两个渲染层,分别是Cirrus Sub-Layer和 Stratus Sub-Layer,其中这个Cirrus Sub-Layer就是我们这次的主角卷云层。

虽说它山之石可以攻玉,但他山之代码那是真不好直接整合,之前写到半死的体积云步进算法如果直接按照这个算法拆分,这个工作量下去怕是又是10杯超大杯的咖啡因都叫不醒了。为了快速整合,我们对这个算法进行简化,在原来的步进过程中取height为最高处10%的采样点作为卷云层的采样点,剩下的90%的高度重映射为100%之后作为原算法的采样输入,这样只需要在采样函数这里做一次分支就可以几乎不动代码的将卷云层加入进来。

2. 卷云层建模

之前的体积云建模核心都是采用3d的Perlin-Worley噪声材质来建模的。卷云层在ppt中被称为2.5d,建模无需3d材质,只需要2d噪声材质即可。作者还贴心的公布了3种卷云的噪声材质,我这里也很贴心的帮大家处理进了一张贴图的三个通道:

卷云的噪声贴图

我测了一个发现这三张贴图竟然都不是无缝贴图,不过似乎也并不影响最终的渲染效果,因此也就不做过多处理了。

贴图处理好之后,就是采样算法了,这个代码ppt里也写了,直接拿来用。

float density = ValueRemap(cloud_type, 0.5, 1.0, ValueRemap(cloud_type, 0.0, 0.5, cr_streaky, cr_wispy), cr_round); 

density = pow(density, 1.0 - ValueRemap(cloud_coverage, 0.0, 1.0, -0.9, 0.9));

density *= ValueRemap(pow(cloud_coverage, 3.0), 0.0, 0.5, 0.0, 1.0);

唯一的问题是山海鲸现在的云层是完全随机生成的,并没有先生成类似他的NDF的文件,因此这里暂时先不处理不同卷云融合的情况,就把三种卷云分开做吧。(将来也许要做云层笔刷,再把这口锅甩给设计)。

3. 卷云层光照

卷云层光照几乎完全复用其他云层光照的代码,唯一的区别就是步进次数可以减少为4次,这里就不再赘述了。

最后看一下整合后的效果,卷云的类型可以选择条纹状,絮装和点状(请原谅我草率的翻译):

条纹状卷云

絮状卷云

点状卷云

再结合之前的体积云效果可以得到更加逼真的天空效果。

积雨云叠加条纹状卷云

虽然通过一定程度的Hack很快速的把卷云整合到了系统中来,也带来了一个小的弊端,就是步进的距离被拉长了,这样当步进步数不够的时候,就会出现非常强烈的闪烁,特别是在地平线附近距离相机很远的地方会非常严重,目前只能通过增加步进步数解决,将来看估计还是得拆分成两个layer进行分别步进才有可能解决这个问题。

最新的卷云功能将在山海鲸可视化4.2.0版本中与大家见面,欢迎大家前往下载体验。

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

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

相关文章

[SpringBoot]如何在一个普通类中获取一个Bean

最近在项目中出现了一个这种情况:我一顿操作猛如虎的写了好几个设计模式,然后在设计模式中的类中想将数据插入数据库,因此调用Mapper持久层,但是数据怎么都写不进去,在我一顿操作猛如虎的查找下,发现在普通…

创新奖肯定,这家LIMS您要留意了

近日,龙源电力的“风电化学监督LIMS信息化管理系统的研发与应用”项目荣获中国电力技术市场协会2023年电力行业技术监督创新成果一等奖。系统可为风电设备经济、环保、长周期安全运行提供保障,是国内首套新能源行业油液监测信息管理系统,经中…

Mysql查询与更新语句的执行

一条SQL查询语句的执行顺序 FROM&#xff1a;对 FROM 子句中的左表<left_table>和右表<right_table>执行笛卡儿积&#xff08;Cartesianproduct&#xff09;&#xff0c;产生虚拟表 VT1 ON&#xff1a;对虚拟表 VT1 应用 ON 筛选&#xff0c;只有那些符合<join_…

怎么做手机App测试?app测试详细流程和方法介绍!

1、手机APP测试怎么做&#xff1f; 手机APP测试&#xff0c;主要针对的是android和ios两大主流操作系统&#xff0c;主要考虑的就是功能性、兼容性、稳定性、易用性&#xff08;也就是人机交互&#xff09;、性能。 手机APP测试前的准备&#xff1a; 1.使用同类型的产品&…

深入理解 Flink(六)Flink Job 提交和 Flink Graph 详解

Flink Program 编程套路回顾 1、获取执行环境对象 StreamExecutionEnvironment env StreamExecutionEnvironment.getExecutionEnvironment(); 2、通过执行环境对象&#xff0c;注册数据源 Source&#xff0c;得到数据抽象 DataStream ds env.socketTextStream(...) 3、调用数…

allegro PCB设计心得笔记(二) PCB板框设计心得

Cadence Allegro软件设计PCB板框时&#xff0c;使用Add -> line&#xff0c;在Option选择Board Geometry/Outline&#xff0c;根据PCB需要输入对应坐标&#xff0c;设计好板框。 使用Z-Copy命令设计Route Keepin和Package Keepin时&#xff0c;需要先使用使用Shape -> Co…

【JAVA】Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 懒汉式&#xff08;Lazy Initialization&#xff09;&#xff1a; 双重检查锁定&#xff08;Double-Checked Locking&#xff09;…

vue 组件 import make sure to provide the “name“ option.

百度了好多结果&#xff0c;都过时了&#xff0c;例如&#xff1a; 模块引入是否加{} 再比如&#xff1a; 对于递归组件&#xff0c;请确保提供“name”选项。 出现该错误情况之一&#xff1a; 错误由未正确引入组件或子组件引起&#xff0c;如element-ui中form表单组件未引…

19. 从零用Rust编写正反向代理, 配置数据的热更新原理及实现

wmproxy wmproxy是由Rust编写&#xff0c;已实现http/https代理&#xff0c;socks5代理&#xff0c; 反向代理&#xff0c;静态文件服务器&#xff0c;内网穿透&#xff0c;配置热更新等&#xff0c; 后续将实现websocket代理等&#xff0c;同时会将实现过程分享出来&#xff…

MATLAB读取图片并转换为二进制数据格式

文章目录 前言一、MATLAB 文件读取方法1、文本文件读取2、二进制文件读取3、 图像文件读取4、其他文件读取 二、常用的图像处理标准图片链接三、MATLAB读取图片并转换为二进制数据格式1、matlab 源码2、运行结果 前言 本文记录使用 MATLAB 读取图片并转换为二进制数据格式的方…

130基于MATLAB并结合IBD算法的盲迭代反卷积法进行图像复原

基于MATLAB并结合IBD算法的盲迭代反卷积法进行图像复原 ,输出复原前后图像&#xff0c;PSF频谱结果。程序已调通&#xff0c;可直接运行。 130 matlab盲迭代反卷积IBD (xiaohongshu.com)

高手总结17个画好原理图的技巧

欧若奇科技 专业电路设计&#xff0c;PCB复制&#xff0c;原理图反推&#xff0c;电子产品优化设计等 不光是代码有可读性的说法&#xff0c;原理图也有。很多时候原理图不仅仅是给自己看的&#xff0c;也会给其它人看&#xff0c;如果可读性差&#xff0c;会带来一系列沟通问…

【TypeScript】入门基础知识

目前在做项目的技术栈是 reacttypescript&#xff0c;之前只知道 ts 是 js 的扩展&#xff0c;增加了类型检查&#xff0c;但是没有仔细的学过&#xff0c;纯纯看别人代码上手 anyscript&#xff08;这很难评...&#xff09;。趁着最近空闲&#xff0c;就学习一下 ts 的基础知识…

鸿蒙原生应用/元服务开发-长时任务

概述 功能介绍 应用退至后台后&#xff0c;对于在后台需要长时间运行用户可感知的任务&#xff0c;例如播放音乐、导航等。为防止应用进程被挂起&#xff0c;导致对应功能异常&#xff0c;可以申请长时任务&#xff0c;使应用在后台长时间运行。申请长时任务后&#xff0c;系统…

电脑弹窗“concrt140.dll文件找不到”,快速修复,亲测有效

很多小伙伴&#xff0c;在启动游戏或软件的时候&#xff0c;电脑会弹出错误提示框称““concrt140.dll文件找不到&#xff0c;程序无法运行”&#xff0c;不清楚是怎么回事&#xff0c;应该怎么办&#xff1f; 首先&#xff0c;我们先来了解““concrt140.dll文件找”是什么&a…

【AI视野·今日Robot 机器人论文速览 第七十四期】Wed, 10 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Wed, 10 Jan 2024 Totally 17 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Hold em and Fold em: Towards Human-scale, Feedback-Controlled Soft Origami Robots Authors Immanuel Ampomah Mensah, Je…

【前后端的那些事】前后端环境搭建+树形结构表格实现

文章目录 1. 前后端项目环境搭建2. table-tree2.1 后端准备2.2 前端准备 前言&#xff1a;最近写项目&#xff0c;发现了一些很有意思的功能&#xff0c;想写文章&#xff0c;录视频把这些内容记录下。但这些功能太零碎&#xff0c;如果为每个功能都单独搭建一个项目&#xff0…

【贪心】一手顺子

/** 贪心&#xff1a;将一个数当成一个组中最小的数&#xff0c;在根据该最小数找其它数。* 思路&#xff1a;将hand进行分组&#xff0c;假设hand长度为 n&#xff0c;必须n % groupSize 0才可以分组&#xff0c;否则返回false&#xff0c;* 使用哈希表记录每个数出现…

考研经验总结——目录

文章目录 一、写作顺序二、个人情况说明三、读评论四、一些小牢骚 一、写作顺序 我将准备从三个阶段开始介绍吧 考研前考研中考研后&#xff08;也就是现在我的这种情况&#xff09; 考研前我会分为&#xff1a;数学、专业课、政治、英语 四个部分来写 我应该会涉及&#xf…

AI赋能建筑设计 | VERYCLOUD睿鸿股份与亚马逊云科技协力为AIRI lab. 打造生成式AI应用案例

近年来&#xff0c;很多研究都致力于探索如何让建筑师借助人工智能的力量来促进并简化设计流程。生成式AI全球爆火以来&#xff0c;建筑设计领域也掀起了一场全新的思维变革。 AI为建筑设计带来更多可能 作为一家面向全球提供设计服务的企业&#xff0c;AIRI lab.计划推出一种…