【Cesium开发实战】地下模型功能的实现,可设置透明度及显示隐藏

Cesium有很多很强大的功能,可以在地球上实现很多炫酷的3D效果。今天给大家分享一个可自定义高度的电子围栏。

1.话不多说,先展示

地下模型

2.设计思路

按项目需求,需要对加载在地下部分的模型控制显示隐藏,以及透明度的设置。增加控制面板,是否可查看地下掩埋模型、是否按距离衰减、透明度的设置。

3.具体代码

<template><div id="toolbar" class="page"><table><tbody><tr><td>是否可查看地下掩埋模型</td><td><input type="checkbox" v-model="viewModel.translucencyEnabled"></td></tr><tr><td>按距离衰减</td><td><input type="checkbox" v-model="viewModel.fadeByDistance"></td></tr><tr><td>透明度</td><td><input type="range" min="0.0" max="1.0" step="0.1" v-model="viewModel.alpha"><input type="text" size="5" v-model="viewModel.alpha"></td></tr></tbody></table></div>
</template><script setup lang="ts">import { onMounted, onUnmounted, reactive, watch } from 'vue';
import { Cesium } from '/@/utils/cesium';
const props = defineProps(['viewer']);const scene = props.viewer.scene;
const globe = scene.globe;scene.screenSpaceCameraController.enableCollisionDetection = false;
globe.translucency.frontFaceAlphaByDistance = new Cesium.NearFarScalar(400.0,0.0,800.0,1.0
);const longitude = 112.396876;
const latitude = 37.934629;
const height = 1100;
const position = Cesium.Cartesian3.fromDegrees(longitude,latitude,height
);
const url = "/src/assets/cesium/ParcLeadMine.glb";const entity = props.viewer.entities.add({name: url,position: position,model: {uri: url,},
});props.viewer.flyTo(entity);const polygon = props.viewer.entities.add({polygon: {hierarchy: new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArrayHeights([-3.8152789692233817,53.124521420389996,200.20779492422255,-3.8165955002619016,53.12555934545405,205.85834336951655,-3.8201599842222054,53.12388420656903,230.82362697069453,-3.8198667503545027,53.123748567587455,225.53297006293968,-3.8190548496317476,53.1240486000822,221.82677773619432,-3.817536387097508,53.122763476393764,209.94136782255705,-3.8169125359199336,53.12285547981627,210.96626238861327,-3.8166873871853073,53.12299403424474,211.02223937734595,-3.8163695374580873,53.12300505277307,211.25942926271824,-3.8162743040622313,53.12281471203994,212.35109129094147,-3.8159746138174193,53.12280996651767,214.87977416348798,-3.815429896849304,53.1236135347983,209.72496223706005,])),material: Cesium.Color.LIME.withAlpha(0.5),classificationType: Cesium.ClassificationType.TERRAIN,},
});const polyline = props.viewer.entities.add({polyline: {positions: Cesium.Cartesian3.fromDegreesArrayHeights([-3.8098444201746373,53.1190304262546,286.1875170545701,-3.8099801237370663,53.119539531697576,288.7733884242394,-3.810165716635671,53.11979180761567,290.9294630315179,-3.8104840812145357,53.12007534956926,292.6392327626228,-3.8105689502073554,53.120259094792196,292.222036965774,-3.811027311824268,53.120409248874196,289.61356291617307,-3.811530473295422,53.12063281057782,284.01098712543586,-3.8120545342562693,53.120742539082435,280.118191867836,-3.812444493044727,53.120813289759326,276.0400221387852,-3.812779626711285,53.12094275348024,271.1187399484896,-3.8133560322579494,53.12104757866638,263.3495497598578,-3.8137266493960085,53.12120789867194,257.73878624321316,-3.8142552291751133,53.121321248522904,251.87265828778177,-3.814322603988525,53.12174170121103,238.7082749547689,-3.8143764268391314,53.1219492923309,235.0371831845662,-3.8148156514145786,53.12210819668669,230.2458816627467,-3.8155394721966163,53.1222990144029,221.33319292262706,-3.8159828072920927,53.12203093429715,223.66664756982703,-3.816678108944717,53.12183939425214,223.8787312412801,-3.817466081093726,53.121751900508535,224.52293229989735,-3.8183082996527955,53.12173266141031,223.3672181535749,]),width: 8,material: new Cesium.PolylineOutlineMaterialProperty({color: Cesium.Color.YELLOW,outlineWidth: 2,outlineColor: Cesium.Color.BLACK,}),clampToGround: true,},
});var viewModel = reactive({translucencyEnabled: true,fadeByDistance: true,showVectorData: false,alpha: 0.5,
});function update() {globe.translucency.enabled = viewModel.translucencyEnabled;let alpha = Number(viewModel.alpha);alpha = !isNaN(alpha) ? alpha : 1.0;alpha = Cesium.Math.clamp(alpha, 0.0, 1.0);globe.translucency.frontFaceAlphaByDistance.nearValue = alpha;globe.translucency.frontFaceAlphaByDistance.farValue = viewModel.fadeByDistance? 1.0: alpha;polygon.show = viewModel.showVectorData;polyline.show = viewModel.showVectorData;
}//监听高程
watch(viewModel, (val) => {if (val) {update();}
});onMounted(() => {//开启高程props.viewer.terrainProvider = new Cesium.CesiumTerrainProvider({url: window.__env__.VITE_TERRAIN_PROVIDER_URL,});update();
});onUnmounted(() => {props.viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider();
});
</script><style scoped>.page {position: absolute;right: 10px;top: 10px;color: #fff;background: #fff;padding: 10px;border-radius: 5px;width: 400px;
}
#toolbar {color: rgba(42, 42, 42, 0.8);padding: 4px;border-radius: 4px;
}#toolbar input {vertical-align: middle;padding-top: 2px;padding-bottom: 2px;
}#toolbar .header {font-weight: bold;
}
</style>

项目需要加载自己的高程数据,大家可以开启Cesium中的高程。

4.3D模型资源

管道3D模型,点击可查看下载

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

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

相关文章

仕考网:公务员考试的录取流程

公务员考试的录取流程分很多个阶段&#xff0c;以下是流程介绍&#xff1a; 1. 报名阶段&#xff1a;考生需根据公布的招聘信息和岗位要求进行报名。 2. 笔试阶段&#xff1a;公务员笔试&#xff0c;包括申论和行测两部分。 3. 成绩公布与面试资格&#xff1a;笔试合格者将获…

编译原理:词法分析器 Flex工具的使用(简单易懂)

目录 词法分析器 & Flex工具的使用背景&#xff1a;编译器和解释器概念区别编译器的实现 词法分析器(Lexer)工具(Flex)安装Flex目标程序&#xff1a;verilog代码Flex程序格式DeclarationsDefinitionsRulesUser subroutines如何通过flex读入文件&#xff1f; 完整程序编译&a…

最小生成树(算法篇)

算法之最小生成树 最小生成树 概念&#xff1a; 最小生成树是一颗连接图G所有顶点的边构成的一颗权最小的树&#xff0c;最小生成树一般是在无向图中寻找。最小生成树共有N-1条边(N为顶点数)。 算法&#xff1a; Prim算法 概念&#xff1a; Prim(普里姆)算法是生成最小生…

每天两道Java面试题(一)

1、this关键字和super关键字的区别及联系 this关键字用在本类中。 在类的内部&#xff0c;可以在任何方法中使用this引用当前对象。 this关键字是用来解决全局变量和局部变量之间的冲突。 this()可以调用同类中重载的构造方法&#xff0c;并且需要放在第一行。 super关键字…

Unity入门之重要组件和API(3) : Transform

前言 Transform类主要处理游戏对象(GameObject)的位移、旋转、缩放、父子关系和坐标转换。 1.位置和位移 1.1必备知识点&#xff1a;Vector3 Vector3 主要用来表示三维坐标系中的一个点或者一个向量。 【声明】 Vector3 v1 new Vector3(); Vector3 v2 new Vector3(10, 10…

ScrapySharp框架:小红书视频数据采集的API集成与应用

引言 随着大数据时代的到来&#xff0c;数据采集成为了互联网企业获取信息的重要手段。小红书作为一个集社交和电商于一体的平台&#xff0c;其丰富的用户生成内容&#xff08;UGC&#xff09;为数据采集提供了丰富的资源。本文将介绍如何使用ScrapySharp框架进行小红书视频数…

对话AI原生 | 千帆AppBuilder重构企业AI原生应用开发体验

人工智能和大模型正在引领当前最重要的科技创新趋势。在过去的一年中&#xff0c;行业关注点已从大模型研发转向实际应用&#xff0c;正成为推动创新和转型的关键力量。百度智能云千帆AppBuilder作为基于大模型的企业级AI原生应用开发工作台&#xff0c;支持应用的快速开发和发…

便携式气象站的应用领域

在气象观测的广阔天地中&#xff0c;便携式气象站不仅集便携性、多功能性和高精度于一身&#xff0c;还以其快速部署、实时监测和数据传输等特点&#xff0c;在科研教学、环境监测、农业生产和灾害预警等多个领域发挥着重要作用。 便携式气象站的基本概念 便携式气象站&#…

高智能土壤养分检测仪:农业生产的科技新助力

在科技日新月异的今天&#xff0c;农业领域也迎来了革命性的变革。其中&#xff0c;高智能土壤养分检测仪作为现代农业的科技新助力&#xff0c;正逐渐改变着传统的农业生产方式&#xff0c;为农民带来了前所未有的便利与效益。 高智能土壤养分检测仪&#xff0c;是一款集高科技…

职场必备神器!图片提取文字!OCR文字识别助手:让灵感自由流动!

Hey&#xff0c;创意达人们&#xff01;是否曾在网页上看到令人心动的设计灵感&#xff0c;却因无法复制粘贴而苦恼&#xff1f;别担心&#xff0c;今天我要给你们安利一个办公小秘密——OCR文字识别助手&#xff0c;让你的灵感自由流动&#xff0c;创意无限&#xff01; 功能…

深入了解代理IP常见协议:区别与选择

代理服务器在网络使用中扮演着重要的角色&#xff0c;是您设备和互联网之间的中间层。它不仅可以增强网络访问的安全性和隐私保护&#xff0c;还可以提供许多灵活的应用。使用代理时&#xff0c;不同的协议类型对数据交换具有不同的规则和特征。常见的代理协议包括HTTP代理、HT…

轻松掌握图片压缩技巧,释放存储空间!

前言 在这个充满视觉冲击的时代&#xff0c;我们每天都在创造和分享图片。但你是否发现&#xff0c;手机和电脑的存储空间越来越不够用了&#xff1f;图片文件过大&#xff0c;不仅占用空间&#xff0c;还影响传输速度和网页加载。今天&#xff0c;就让我来教你几招&#xff0…

政安晨【零基础玩转各类开源AI项目】基于Ubuntu系统部署MuseV (踩完了所有的坑):基于视觉条件并行去噪的无限长度和高保真虚拟人视频生成

目录 下载项目 创建虚拟环境 启动虚拟环境&执行项目依赖 基于DOCKER的尝试 A. 安装引擎 B. 下载桌面安装包 C. 安装桌面包 用Docker运行MuseV 1. 拉取镜像 ​编辑 2. 运行Docker镜像 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收…

Android APT实战

Android开发中,注解平时我们用的比较多,也许我们会比较好奇,注解的背后是如何工作的,这篇文章帮大家一步步创建一个简单的注解处理器。 简介 APT(Annotation Processing Tool)即注解处理器,在编译的时候可以处理注解然后搞一些事情,也可以在编译时生成一些文件之类的。…

问题解决:“Cannot search on field [show_num] since it is not indexed.

找的解决方案&#xff0c;因为索引字段已经有数据 1. 新建索引&#xff0c;将mappings的show_num字段&#xff0c;index设置为true 2. 将旧索引的数据&#xff0c;复制到新索引 3. 删除旧索引 没采用新建索引&#xff0c;使用新增字段解决 1. 查询mapping&#xff0c;检测里…

Android Studio音频视频播放器课程设计

这个项目适合刚刚学习Android studio的初学者&#xff0c;实现音视频的基本播放功能&#xff0c;各项功能的页面都做的比较简单&#xff0c;特别适用于初学者&#xff0c;其特点在于本项目抛开了各种花里胡哨的制作&#xff0c;以最接近初学者的样式画面呈现&#xff0c;完全不…

20240711 每日AI必读资讯

&#x1f3a8;Runway Gen-3 Alpha 详细使用教程以及提示词指南大全 - 7月9日&#xff0c;著名生成式AI平台Runway在官网公布了&#xff0c;最新发布的文生视频模型Gen-3 Alpha的文本提示教程。 - 从技术层面来说&#xff0c;输入的文本提示会被转换成“向量”&#xff0c;这些…

深入理解Python密码学:使用PyCrypto库进行加密和解密

深入理解Python密码学&#xff1a;使用PyCrypto库进行加密和解密 引言 在现代计算领域&#xff0c;信息安全逐渐成为焦点话题。密码学&#xff0c;作为信息保护的关键技术之一&#xff0c;允许我们加密&#xff08;保密&#xff09;和解密&#xff08;解密&#xff09;数据。P…

通过Umijs从0到1搭建一个React项目

有一阵时间没写react了&#xff0c;今天通过umi搭建一个demo项目复习一下react&#xff1b;umi是一个可扩展的企业级前端应用框架&#xff0c;在react市场中还是比较火的一个框架。 Umi官方文档&#xff1a;Umi 介绍 (umijs.org) 一、构建项目。 1、安装包管理工具。 官方推…

力扣题解(设计跳表)

1206.设计跳表 已解答 不使用任何库函数&#xff0c;设计一个 跳表 。 跳表 是在 O(log(n)) 时间内完成增加、删除、搜索操作的数据结构。跳表相比于树堆与红黑树&#xff0c;其功能与性能相当&#xff0c;并且跳表的代码长度相较下更短&#xff0c;其设计思想与链表相似。 …