cesium-球体透明

在开发的过程,要求cesium加载的地球透明

只是地表透明还不能满足要求,只加载部分区域的方式来解决的

代码如下:

<template>
	<div id="cesiumContainer" style="height: 100vh;"></div>
	<div id="toolbar" style="position: fixed;top:20px;left:220px;">
		<span style="color:#fff">球体透明</span>
	</div>
	<div class="slider-demo-block" style="width:200px;color:#fff;position: fixed;top:50px;left:220px;">
		<span class="demonstration">透明度</span>
		<el-slider v-model="value4" :format-tooltip="formatTooltip"/>
	</div>
</template>
<script setup>
import {ref, onMounted, nextTick} from 'vue'
import * as Cesium from 'cesium'

let viewer = null;
let value4 = ref(100);

// 倾斜摄影
onMounted(async () => {
	// token
	Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlNWM5ZjhhYi1iNDJhLTQ0OTMtYmQyOC1kYzhhNWVmYmMyZjMiLCJpZCI6MTUzOTk1LCJpYXQiOjE2ODkzNDgxNjN9.ar6bCmmT63fP9nBriZMfbAfPlRDKqIoCCl-ioDSeVN0'
	// 初始化
	viewer = new Cesium.Viewer('cesiumContainer', {
		orderIndependentTranslucency: false,
		contextOptions: {
			webgl: {
				alpha: true,
			}
		}
	});

	viewer.imageryLayers.removeAll();
	let imgLayer = new Cesium.UrlTemplateImageryProvider({
		url: "https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}",
		minimumLevel: 3,
		maximumLevel: 18
	})
	viewer.imageryLayers.addImageryProvider(imgLayer);

	// 地表透明
	viewer.scene.backgroundColor = Cesium.Color.BLACK.withAlpha(0);
	viewer.scene.globe.baseColor = Cesium.Color.BLACK.withAlpha(0); //修改地图蓝色背景
	viewer.scene.skyAtmosphere.show = false;
	viewer.scene.globe.translucency.enabled = true;
	viewer.scene.globe.undergroundColor = undefined;
	// 地表透明

	// 只显示部分地图  开始
	const globe = viewer.scene.globe;

	let clippingPlanesEnabled = true;
	let edgeStylingEnabled = false;

	const position = Cesium.Cartographic.toCartesian(
		new Cesium.Cartographic.fromDegrees(113.06785738392063, 22.643743971034342, 100)
	);
	const distance = 200000.0;
	const boundingSphere11 = new Cesium.BoundingSphere(position, distance);

	globe.clippingPlanes = new Cesium.ClippingPlaneCollection({
		modelMatrix: Cesium.Transforms.eastNorthUpToFixedFrame(position),
		planes: [
			new Cesium.ClippingPlane(
				new Cesium.Cartesian3(1.0, 0.0, 0.0),
				distance
			),
			new Cesium.ClippingPlane(
				new Cesium.Cartesian3(-1.0, 0.0, 0.0),
				distance
			),
			new Cesium.ClippingPlane(
				new Cesium.Cartesian3(0.0, 1.0, 0.0),
				distance
			),
			new Cesium.ClippingPlane(
				new Cesium.Cartesian3(0.0, -1.0, 0.0),
				distance
			),
		],
		unionClippingRegions: true,
		edgeWidth: edgeStylingEnabled ? 1.0 : 0.0,
		edgeColor: Cesium.Color.WHITE,
		enabled: clippingPlanesEnabled,
	});
	globe.backFaceCulling = false;
	globe.showSkirts = false;
	// 只显示部分地图  结束

	let tileset = await Cesium.Cesium3DTileset.fromUrl('/src/assets/tileset/12/tileset.json', {});

	update3dtilesMaxtrix(tileset);

	viewer.scene.primitives.add(tileset);
	await viewer.flyTo(tileset)

	//更新倾斜摄影位置
	function update3dtilesMaxtrix(tileSet) {
		//调整参数
		let params = {
			// tx: 113.06265738392063, //模型中心X轴坐标(经度,单位:十进制度)谷歌
			// ty: 22.646803971034342, //模型中心Y轴坐标(纬度,单位:十进制度)谷歌
			tx: 113.06785738392063, //模型中心X轴坐标(经度,单位:十进制度)高德
			ty: 22.643743971034342, //模型中心Y轴坐标(纬度,单位:十进制度)高德
			tz: 40, //模型中心Z轴坐标(高程,单位:米)
			rx: 0, //X轴(经度)方向旋转角度(单位:度)
			ry: 0, //Y轴(纬度)方向旋转角度(单位:度)
			rz: 2, //Z轴(高程)方向旋转角度(单位:度)
			scale: 1.3, //缩放比例
		};
		//旋转
		const mx = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(params.rx));
		const my = Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(params.ry));
		const mz = Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(params.rz));
		const rotationX = Cesium.Matrix4.fromRotationTranslation(mx);
		const rotationY = Cesium.Matrix4.fromRotationTranslation(my);
		const rotationZ = Cesium.Matrix4.fromRotationTranslation(mz);
		//平移
		const position = Cesium.Cartesian3.fromDegrees(
			params.tx,
			params.ty,
			params.tz
		);
		const m = Cesium.Transforms.eastNorthUpToFixedFrame(position);
		//旋转、平移矩阵相乘
		Cesium.Matrix4.multiply(m, rotationX, m);
		Cesium.Matrix4.multiply(m, rotationY, m);
		Cesium.Matrix4.multiply(m, rotationZ, m);
		//比例缩放
		const scale = Cesium.Matrix4.fromUniformScale(params.scale);
		Cesium.Matrix4.multiply(m, scale, m);
		console.log("矩阵m:", m);
		//赋值给tileset
		tileSet._root.transform = m;
	}
})

const formatTooltip = (val) => {
	nextTick(() => {
		// 地球球体透明
		var _layers = viewer.imageryLayers._layers;
		for (let i = 0, len = _layers.length; i < len; i++) {
			_layers[i].alpha = val / 100;
		}
	})
	// 地球球体透明
	return val / 100
}
</script>
<style scoped>
#cesiumContainer {
	overflow: hidden;
}

</style>

效果如图

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++进阶08】哈希的应用(位图and布隆过滤器)

一、位图 1.1 位图的概念 面试题 给40亿个不重复的无符号整数&#xff0c;没排过序 给一个无符号整数&#xff0c;如何快速判断一个数是否在 这40亿个数中。【腾讯】 能想到的解决思路&#xff1a; 遍历&#xff0c;时间复杂度O(N)排序(O(NlogN)) 利用二分查找: logN放到哈…

centos搭建ftp踩坑记录

ftp服务器搭建参考b站视频 第1坑&#xff0c;开放端口后仍然无法连接&#xff1a; 这里不仅需要在防火墙打开20和21端口&#xff0c;还需要打开被动访问所使用的端口&#xff0c;也就是在配置文件vsftpd.conf中指定的被动访问接收端口。 pasv_enableYES pasv_min_port40000 p…

小红书论文刷新 SOTA:人体动作预测再升级,能精准到指尖

想象一下&#xff0c;你在玩一款 VR 游戏&#xff0c;准备伸手拿起一个虚拟杯子喝水。‍​​‌​‌​‎‎ 在传统的交互系统中&#xff0c;这通常需要你按下控制器上的特定按钮。但如果游戏集成了 EAI 框架&#xff0c;这一过程将变得无比自然。当你的手缓缓接近虚拟杯子时&…

数据库基础知识(一)

数据库基础知识&#xff08;一&#xff09; 一、数据库基本概念 1.1 数据 数据&#xff08;Data&#xff09;是指对客观事物进行描述并可以鉴别的符号&#xff0c;这 些符号是可识别的、抽象的。它不仅指狭义上的数字&#xff0c;而是有多 种表现形式&#xff1a;字母、文…

如何开通GitHub Copilot

GitHub Copilot 是由GitHub 和OpenAI共同开发的人工智能代码辅助工具&#xff0c;可以自动地生成高质量代码片段、上下文信息等。 通过自然语言处理和机器学习技术&#xff0c;能够通过分析程序员编写的代码、注释和上下文信息&#xff0c;自动生成代码&#xff0c;减轻程序员的…

在线摸头GIF生成系统源码

在线摸头GIF在线生成器html网页源码&#xff0c;可以点击选择文件按钮&#xff0c;或者直接将图片拖入&#xff0c;即可生成导出

Python爬虫---Scrapy框架---CrawlSpider

CrawlSpider 1. CrawlSpider继承自scrapy.Spider 2. CrawlSpider可以定义规则&#xff0c;再解析html内容的时候&#xff0c;可以根据链接规则提取出指定的链接&#xff0c;然后再向这些链接发送请求&#xff0c;所以&#xff0c;如果有需要跟进链接的需求&#xff0c;意思就是…

Code - VQ-VAE (Vector Quantised Variational AutoEncoder) 的实现源码

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/135936848 VQ-VAE&#xff0c;即Vector Quantized Variational AutoEncoder&#xff0c;向量量化变分自编码器。VQ-VAE 的创新之处是引入了一个向…

ArcGIS学习(二)属性表的基本操作

ArcGIS学习(二)属性表的基本操作 1.查看属性表 ArcGIS是处理空间数据的平台。对于空间数据,大家可以理解成它是由两个部分构成:1.一个是空间形体,也就是点、线、面三种。线又可以分为直线、曲线,面又分为圆形、正方形、不规则形体等;2.另外一个部分是空间形体所附带的…

Unix/Linux上的五种IO模型

a.阻塞 blocking 调用者调用了某个函数&#xff0c;等待这个函数返回&#xff0c;期间什么也不做&#xff0c;不停的去检查这个函数有没有返回&#xff0c;必须等这个函数返回才能进行下一步动作。 注意&#xff1a;阻塞并不是函数的行为&#xff0c;而是跟文件描述符有关。通…

离谱题 3236:练39.1 书香阁座位

3236正常写法 #include<bits/stdc.h> using namespace std; int main() {int sum,a,b;a1;b10;sumb;cout<<a<<" "<<b;cout<<" "<<sum<<endl;do{a;b2;sumx;cout<<a<<" "<<b<<&…

uniapp本地存储日志

uniapp本地存储日志 背景实现代码实现使用查看生成log读取 注意事项尾巴 背景 我们的APP开发完成之后&#xff0c;在我们测试环境或者自测的时候都好好的&#xff0c;但是发布到生产环境客户使用总会出现一些奇奇怪怪的问题。这时候因为没在开发环境&#xff0c;我们无法查看到…

力扣hot100 买卖股票的最佳时机 贪心 经典题

Problem: 121. 买卖股票的最佳时机 文章目录 思路复杂度Code 思路 假设今天卖出&#xff0c;那怎么样收益最大呢&#xff1f;之前买入价是最低的 复杂度 ⏰ 时间复杂度: &#xff1a; O ( n ) O(n) O(n) &#x1f30e; 空间复杂度: O ( 1 ) O(1) O(1) Code class Solut…

c++之IO流

1.C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键 盘)读取数据&#xff0c;并将值存放在变量中。printf(): 将指定的文字/字符串输出到标准输出设备(屏幕)。 注意宽度输出和精度输出控制。C语言借助了相应的缓…

tsmc12: m0po max length问题(H384.M0_PO.L.1)

更多学习内容请关注「拾陆楼」知识星球 拾陆楼知识星球入口 在pt eco之后会有一些m0po max length问题出现,大部分问题都可以通过替换decap来解决,少部分由于局部density过高,需要手动调整。

2023强网杯复现

强网先锋 SpeedUp 要求2的27次方的阶乘的逐位之和 在A244060 - OEIS 然后我们将4495662081进行sha256加密 就得到了flag flag{bbdee5c548fddfc76617c562952a3a3b03d423985c095521a8661d248fad3797} MISC easyfuzz 通过尝试输入字符串判断该程序对输入字符的验证规则为9…

【C++】类和对象之构造函数、析构函数、拷贝构造函数(二)

前言&#xff1a;在上一篇我们对于C中类和对象有了一个初步的了解&#xff0c;今天我们将进一步的学习&#xff0c;今天我们目标是对构造函数、析构函数、拷贝构造函数进行一个初步学习在后面也会进一步的学习&#xff0c;一起加油呐&#xff01; &#x1f496; 博主CSDN主页:卫…

代码随想录 Leetcode669. 修剪二叉搜索树

题目&#xff1a; 代码(首刷看解析 2024年1月31日&#xff09;&#xff1a; class Solution { public:TreeNode* trimBST(TreeNode* root, int low, int high) {if (!root) return root;if (root->val < low) {TreeNode* node trimBST(root->right,low,high);return…

Flutter canvas 画一条波浪线 进度条

之前用 Flutter Canvas 画过一个三角三角形&#xff0c;html 的 Canvas 也画过一次类似的&#xff0c; 今天用 Flutter Canvas 试了下 感觉差不多&#xff1a; html 版本 大致效果如下&#xff1a; 思路和 html 实现的类似&#xff1a; 也就是找出点的位置&#xff0c;使用二阶…

山东第四次文物普查启动,全面开展不可移动文物预防性保护

一、山东进行全面普查不可移动文物资源 近日&#xff0c;山东省政府下发了《关于做好第四次全国文物普查工作通知》&#xff0c;根据调查充分摸清山东不可移动文物资源状况。这是我国时隔16年再次启动文物普查&#xff0c;也是“十四五”期内最大的文物保护行动&#xff0c;以…