- 博客(43)
- 收藏
- 关注
原创 Cesium中实现GPU计算的泥石流地形侵蚀
通过模拟分析,可以提前识别可能发生泥石流的区域,为防灾减灾提供依据,及时发布预警,避免或减少人员伤亡和财产损失。:在建设公路、桥梁、水库等基础设施时,通过泥石流模拟分析,可以预测泥石流可能对这些设施的影响,帮助工程设计者采取合适的防护措施,确保设施的安全性。:模拟分析有助于为灾后救援工作提供科学依据,确定受灾区域的范围、救援难度等,为救援队伍制定合理的行动方案,提升救援效率。:泥石流是山区常见的地质灾害之一,通过模拟分析可以评估某一地区发生泥石流的风险,指导土地使用规划、人口迁移等决策。
2025-02-25 18:04:05
442
原创 Cesium中实现根据最高地形瓦片生成高度图
如果你实现了上面的计算方法,会发现,由于 Cesium 的地形瓦片之间并不是严丝合缝的,因此两个相邻的地形瓦片之前可能会有一行或者一列像素是冲突的或者没有高程值的。在 Cesium 中,我们制作流体模拟、地形侵蚀、物理碰撞等功能,基本都是通过高度图来进行计算模拟的,可以说高度生成的质量会直接影响到模拟的效果。我们其实可以换个思路,创建一个与给定四至范围相同的正交相机,从上往下看并渲染所有的地形瓦片,最终渲染出的内容就是我们所需的高度图。由于高度图的表现形式是图片,因此生成高度图的范围一定是一个矩形。
2025-02-19 11:06:57
1005
原创 Cesium中实现体积云和大气美化效果
因此第一步当然是先计算从相机出发的视线,是否与大气外层球体相交。如果不相交,说明该视线方向上不会发生大气散射,此时,直接返回透明色即可。
2025-02-14 08:28:45
1017
1
原创 Cesium中实现仿ArcGIS三维的动态图层加载方式
并将切割出来的内容更新至瓦片的缓存中。如果不更新缓存,那么当重新显示已缓存的瓦片时,其内容会和当前的图片对应不上 )如果你在 Cesium 中加载过 ArcGIS 的动态图层,你会发现,Cesium 对于动态图层仍然采用类似切片图层的逻辑进行加载。事实上,我尝试过,但是由于需要同时更新的瓦片比较多,就会导致 export 请求回来的两张图片都需要复制一份到各自的 WebWorker 中,这样会导致更严重的内存问题。,需要做的额外操作只有在第二张大的图片中,挖去和小图片相交的部分。
2024-12-11 10:06:49
1125
原创 Cesium中实现图层组
其实 ImageryLayer.js 中做的东西并不算复杂,上级的地形四叉树在渲染时,会为每块地形瓦片查找他的贴图(附着在地形上的影像),这一步操作最终会进入到 _createTileImagerySkeletons 方法,然后就是请求瓦片和判断是否需要重投影的操作。由于目前图层组管理的是多个imageryProvider,而不是多个 imageryLayer, 因此实际上只能做到一层嵌套,也就是图层组里面只能放图层,而不能放图层组。不同,虽然两者都会在 Cesium 初始化时创建一个默认的对象,
2024-07-11 11:16:36
763
1
原创 Cesium中实现SPH流体模拟
起源于20世纪70年代,是一种基于拉格朗日观点的无网格数值模拟技术。该方法的发展历程可以追溯至天文学中的复杂问题求解,并逐渐扩展到包括工程、计算机图形学以及多物理场耦合模拟在内的多个领域。事实上,SPH 在 Web 端的实现有很多,这里是采用将其他 Web 端的方法进行移植,来在 Cesium 中实现的。中,提到过,常见的流体模拟方式有网格方法、粒子方法、边界元方法和体积随机法。,核函数使得粒子间的相互作用力随着距离的增加而平滑地减小。每个粒子代表流体的一部分,并。在 SPH 方法中,流体被。
2024-06-19 09:41:28
1705
原创 Cesium中实现镜头光晕
镜头光晕 (Lens Flares) 是模拟相机镜头内的折射光线的效果,主要作用就是让太阳光/其他光源更加真实,和为您的场景多增添一些气氛。其实 Cesium 里面也是有实现一个镜头光晕效果的,添加方式如下,只是效果嘛,就那样。上有很多成熟的案例,找个喜欢的直接用后处理移植上去就行了。其实实现这个并不复杂,Cesium镜头光晕。
2024-04-19 17:41:21
943
1
原创 Cesium中加载GaussianSplatting模型
Gaussian Splatting 在保持有竞争力的训练时间的同时实现最先进的视觉质量,重要的是允许在 1080p 分辨率下实现高质量的实时(≥30 fps)的新视图合成。基于 3D Gaussian Splatting 的 SLAM 不仅全面继承了 NeRF-based SLAM 方法的优点,而且全面补足了其短板(渲染速度慢、图像质量不高、定位精度欠佳等),实现了更好的实时性、更好的渲染质量、更精确的定位精度。遗憾的是 Cesium 是没有相关的渲染库的。
2024-04-08 10:42:42
2031
1
原创 Cesium中实现流体模拟
体积随机方法将流体看作是由大量微小的体积元素组成的系统,每个体积元素具有随机的速度和位置。:粒子方法,如经典的分子动力学方法(Molecular Dynamics, MD)和格子Boltzmann方法(Lattice Boltzmann Method, LBM),将流体看作由大量微观粒子组成的系统。它将模拟区域划分为一个或多个离散的网格单元,并根据流体的性质和运动方程,在网格点上进行数值计算。:边界元方法是一种基于势函数和其法向导数在流体边界上的离散化表示,以求解流体行为的方法。
2024-01-26 10:27:42
3546
原创 Cesium中实现全球体积云
体积云的密度计算比较简单,只需要在 RayMarching 的过程中,采样相应的噪声图,并累加噪声结果,直到达到噪声最大值或者结束步进。体渲染通常对性能消耗是很大的,因此为了保证帧数,体积云的渲染会采用较低的步进次数,这样做会导致云渲染出现分层。从该点向摄像机方向做步进,累加噪声值得到该点在摄像机方向的“深度”,深度越大损失的光能越多。与其他渲染云的方式不同,体积云是真正具有体积感的云,一个最简单的区分方式是,在某点向光源方向做 8 次步进,前 3 次在云的内部,后 5 次在云的外部。
2023-12-18 15:28:02
4050
1
原创 Cesium中使用IndexDB缓存数据
是一个简单的操作浏览器数据库的库,它有一个优雅降级策略,若浏览器不支持 IndexedDB 或 WebSQL,则使用 localStorage。IndexedDB 简单的说就是一个运行在浏览器的本地数据库,允许网页在用户的浏览器中存储结构化数据,并且可以高效地进行检索、查询和修改。因此我们只需要将请求回来的数据存储到 IndexDB 中,并且下次请求之前,先尝试从 IndexDB 中获取,如果获取得到,就用 IndexDB 的数据,如果不行才发起请求。这里还是本着会做才是自己的想法,尝试模仿着写了一个。
2023-11-10 10:56:59
2127
原创 Cesium中实现顶点吸附
相信大家在 Cesium 应用过程中会遇到过类似这样的问题:如果大家用过CAD或者3DMAX等设计软件,就会发现在这些设计软件里面,我们可以很轻松的拾取到物体的顶点,这是因为开启了软件内置了顶点吸附的功能。简单地说就是鼠标靠近物体的顶点一定范围时,会将鼠标吸附到顶点上,让用户更加精确地点击到顶点的位置。由于在前端,我们很难修改鼠标显示的位置,因此在 Cesium 中我们不使用修改鼠标位置的方式来展示吸附效果。而是通过鼠标靠近时,返回一定范围内的最近顶点来实现。那么怎么获取鼠标位置的最近顶点呢?要解决这个问题
2023-11-08 16:23:53
807
原创 Cesium中实现高度雾效果
高度雾效果是一种在三维建模和渲染中广泛使用的技术,主要用于模拟现实世界中的雾气、烟雾等氛围效果。通过在场景中添加高度雾,可以增加场景的深度感、真实感和立体感,使渲染结果更加接近现实环境。由于csdn无法放置html文件,因此如果想体验效果,请移步。由于采用后处理方式实现,因此适用于场景中所有可见的物体。在Cesium中可以通过后处理的方式实现高度雾效果。Cesium中实现后处理高度雾之《迷雾下的阿美利坚》这里只是简单的使用线性雾的方式实现高度雾效果。
2023-10-20 10:11:07
1333
原创 Cesium中实现仿超图的开敞度分析
该功能主要是仿照超图的实现的。开敞度分析实际上就是可视域分析的改版,主要实现思路是绘制球面,并计算球面上每个像素是否在球心位置可见,并根据可见性设置颜色。实现思路很简单,直接看效果。
2023-06-02 18:01:46
780
1
原创 Cesium中绘制仿超图的天际线体
该功能主要是仿照超图的实现的。超图的功能分为获取天际线以及绘制天际线体,这两个功能点唯一需要解决的技术难题是如何提取天际线。而事实上提取天际线的方式非常简单,即获取场景的深度图,从深度图上提取天际线的世界坐标,最后按顺序连接这些坐标点即可。
2023-06-02 18:01:40
553
1
原创 Cesium中实现限高分析
该功能主要是仿照超图的实现的。限高分析实际上就只是对ClassificationPrimitive的应用罢了,直接看效果。
2023-06-02 17:57:19
808
2
原创 Cesium中实现阴影率分析
看到群里有人在研究这个,所以看了一下。主要是模仿超图的,实现原理超图有做回答:但其实超图的这个实现方式还是过于复杂,原因是:既然是获取太阳的日照阴影,而Cesium中原本就存在太阳,且能投射阴影,因此其实并不需要再次计算太阳位置并计算视锥获取深度图,直接使用Cesium原生的太阳深度图即可。
2023-04-18 10:02:47
1724
6
原创 Cesium 中实现影像贴 3Dtiles
Cesium中我们经常使用的图层服务除了常见的遥感影像,还会包括一些矢量数据(如宗地范围、规划用地、道路信息等),这些图层服务通常经过GeoServer之类的服务器渲染、切片供Cesium展示。但在实际应用中会发现,这些图层服务的内容会被3DTiles遮盖(特别是渲染大片倾斜数据时),这个时候,如果我们想获取这些图层上面的信息,就必须将上层的3DTiles隐藏。如下图所示(没有合适的矢量图层,用代替)影像有贴3DTiles选项吗?。
2023-04-13 10:05:47
2531
原创 Cesium加载ArcGIS的PBF矢量切片服务
即在服务端渲染好图片并进行切片,客户端请求获取图片后直接显示。而矢量切片则有别于传统的栅格切片,它在服务端切片存储的是矢量数据的描述文件,最终的渲染在服务端完成。事实上矢量切片技术目前已成为互联网地图的主流技术,无论是 Mapbox 还是高德地图、百度地图,如今打开控制台看到的数据源请求不是当年传统的一张张图片切片,而是经过压缩的二进制数据。
2023-03-16 16:36:58
4514
9
原创 Cesium中实现地形压平
遇到新需求:地形与倾斜精度不一致,导致部分地形会压盖倾斜。虽然关闭地形深度测试能够解决,但是又会引发新的问题,所以决定对范围内的地形做压平处理。地形压平与倾斜压平类似,目的是将指定范围内的地形顶点修改成设定的高程。
2023-01-16 11:49:17
4327
5
原创 Cesium中对3D数据集进行体渲染展示
传统意义上我们构建模型都是通过构建物体的外表面去实现的,例如通过三角面构建模型,或者通过方程的形式构建隐式的表面模型。而体渲染则是通过 3d 数据集渲染物体的一种方式,典型的 3D 数据集是医学领域上的 CT,CT 是一组 2d 的切片图像(例如,每毫米深度进行一次切片),因此 3D 数据集也可以理解成一组存放 2d 贴图的数组。通过 3D 数据集可以渲染出具有内部信息的模型。
2022-10-27 08:17:21
3343
1
原创 Cesium中离屏渲染的应用
离屏渲染(Off-Screen Rendering)顾名思义,指的是定义另外一个相机,并让GPU在当前屏幕缓冲区之外再开辟一个新的缓冲区,通过自定义的另一个相机进行渲染操作。这一块新的frame buffer可以用来作为画面输出,也可以用于参与计算。...
2022-06-22 17:08:14
2162
原创 树莓派开机自动发送IP至QQ邮箱
我的树莓派都是通过wifi进行网络连接的。树莓派会经常挪动位置,且每次重新连接WiFi(不同地方),IP地址都会改变。那么这里就提供一种解决方案。在每次树莓派开机并且连接WiFi成功后就发送邮件到QQ邮箱中。具体操作方式如下:1、首先开启QQ邮箱的SMTP协议。进入邮箱点击设置点击账户开启服务开启时需要发送短信,获取授权码,授权码就是密码,要记下来。2、编写Python脚本mail.py获取IP信息,并发送邮件import smtplibfrom email.mime.te
2021-02-26 14:39:15
904
1
原创 利用docker部署angualr项目到Linux服务器
打包angualr项目:ng build --prod编写Dockerfile文件:# 使用nginx-1.18.0的镜像FROM nginx:1.18.0# 拷贝前端代码到nginx容器中ADD threejs /usr/share/nginx/html# 暴露80端口EXPOSE 80# 容器启动命令CMD ["nginx", "-g", "daemon off;"]将打包完成的项目和Dockerfile文件一起上传至服务器:ssh连接服务器,并cd到的项目和Dockerf
2021-01-07 13:50:33
192
原创 SpringBoot连接MySQL,并通过docker部署至Linux服务器
首先需要在服务器上安装MySQL并且配置好远程连接,安装及配置方式可参考:Ubuntu 20.x 安装 MySQL8.x 并配置远程连接我的MySQL表结构如下:创建SpringBoot项目,并添加下列依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-we
2021-01-07 10:28:07
429
原创 Ubuntu 20.x 安装 MySQL8.x 并配置远程连接
安装MySQL8.x#命令1sudo apt-get update#命令2sudo apt-get install mysql-server配置MySQL开始初始化sudo mysql_secure_installation#1VALIDATE PASSWORD PLUGIN can be used to test passwords...Press y|Y for Yes, any other key for No: N (我的选项) #2Please set the pas
2020-12-28 17:13:29
2469
2
原创 Cesium获取模型姿态的方法
想要获取Cesium中的模型姿态,首先需要获取模型的旋转矩阵。模型矩阵的获取方式如下:glb/gltf类型的模型,模型矩阵为模型对象的modelMatrix字段。3DTileset类型的模型,模型矩阵为模型对象的_clippingPlanesOriginMatrix字段。模型缩放比例:var scale= Cesium.Matrix4.getScale( modelMatrix, new Cesium.Cartesian3() );模型位置:var position = Cesium.Mat
2020-12-09 16:39:32
1861
2
原创 NgRx/Store 使用示例
创建已下文件:index.tsexport * from './video-gis.selector';export * from './video-gis.actions';export * from './video-gis.reducer';export * from './video-gis.module';video-gis.actions.tsimport { Action } from '@ngrx/store';import {VideoInfo } from './vid
2020-09-08 16:41:40
512
原创 在Angular框架中配置Cesium
1).首先我们安装cesium,在webstorm中的Termianl中输入npm install --save cesium2).再安装类型描述文件,让TypeScript认识Cesiumnpm install @types/cesium --save3 )修改内容 打开angular.json文件,添加如下信息4).在main.ts中配置Cesium的环境路径 main.ts中添加以下语句 window['CESIUM_BASE_URL'] = 'src/assets/ces
2020-09-08 16:24:37
659
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人