【CesiumJS-3】加载倾斜模型数据(3DTilest)以及修改位置

引入倾斜模型数据

  // 加载3DTiles数据let tileset;try {tileset = await Cesium.Cesium3DTileset.fromUrl("/api/3DTiles/b3dm_qx/tileset.json");viewer.value.scene.primitives.add(tileset); // 倾斜模型添加到场景中viewer.value.zoomTo(tileset); // 视角定位到倾斜模型的位置} catch (error) {console.log(`Error loading tileset: ${error}`);}

await Cesium.Cesium3DTileset.fromUrl("/api/3DTiles/b3dm_qx/tileset.json")

倾斜模型的数据通过nginx代理本地文件夹以接口的形式获取;如果倾斜模型数据较小可直接放到项目文件Public目录下,以绝对路径的形式引入即可;

nginx代理本地文件夹相关操作链接

效果展示

调整倾斜模型位置

  let tileset;try {tileset = await Cesium.Cesium3DTileset.fromUrl("/api/3DTiles/b3dm_qx/tileset.json");viewer.value.scene.primitives.add(tileset);viewer.value.zoomTo(tileset);// +++++++++// 原始点let boundingSphere = tileset.boundingSphere;let cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center);let longitude = cartographic.longitude;let latitude = cartographic.latitude;let height = cartographic.height;// 世界坐标let origin = Cesium.Cartesian3.fromRadians(cartographic.longitude,cartographic.latitude,cartographic.height);// 偏移后点let offset = Cesium.Cartesian3.fromRadians(longitude,latitude,height - 10);// 计算向量let translate = Cesium.Cartesian3.subtract(offset,origin,new Cesium.Cartesian3());tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translate);viewer.value.scene.globe.depthTestAgainstTerrain = false; // 开启深度测试} catch (error) {console.log(`Error loading tileset: ${error}`);}

完整代码

<template><div id="cesiumContainer"></div>
</template><script setup>
import { onMounted, ref } from "vue";
const viewer = ref(null);const initCesium = async () => {// 1.引入tokenCesium.Ion.defaultAccessToken = "xxxxxxxxx";// 2.三维地球初始化viewer.value = new Cesium.Viewer("cesiumContainer", {animation: true, //是否创建动画小器件,左下角仪表shouldAnimate: true,fullscreenButton: false, //是否显示全屏按钮geocoder: false, //是否显示geocoder小器件,右上角查询按钮homeButton: false, //是否显示Home按钮infoBox: false, //是否显示信息框sceneModePicker: false, //是否显示3D/2D选择器scene3DOnly: false, //如果设置为true,则所有几何图形以3D模式绘制以节约GPU资源selectionIndicator: false, // 是否显示选取指示器组件timeline: false, // 是否显示时间轴navigationHelpButton: false,// 是否显示右上角的帮助按钮baselLayerPicker: false, // 将图层选择的控件关掉,才能添加其他影像数据shadows: false, // 是否显示背影baseLayerPicker: false, // 是否显示图层选择器orderIndependentTranslucency: false, //去掉大气层黑圈});// 加载3DTiles数据let tileset;try {tileset = await Cesium.Cesium3DTileset.fromUrl("/api/3DTiles/b3dm_qx/tileset.json");viewer.value.scene.primitives.add(tileset);viewer.value.zoomTo(tileset);// 原始点let boundingSphere = tileset.boundingSphere;let cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center);let longitude = cartographic.longitude;let latitude = cartographic.latitude;let height = cartographic.height;// 世界坐标let origin = Cesium.Cartesian3.fromRadians(cartographic.longitude,cartographic.latitude,cartographic.height);// 偏移后点let offset = Cesium.Cartesian3.fromRadians(longitude,latitude,height - 10);// 计算向量let translate = Cesium.Cartesian3.subtract(offset,origin,new Cesium.Cartesian3());tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translate);viewer.value.scene.globe.depthTestAgainstTerrain = false; // 开启深度测试} catch (error) {console.log(`Error loading tileset: ${error}`);}//缩放viewer.value.scene.screenSpaceCameraController.zoomEventTypes = [Cesium.CameraEventType.WHEEL,Cesium.CameraEventType.PINCH,];//视图视角切换viewer.value.scene.screenSpaceCameraController.tiltEventTypes = [Cesium.CameraEventType.PINCH,Cesium.CameraEventType.RIGHT_DRAG,];}onMounted(() => {initCesium();
})
</script><style scoped>
#cesiumContainer {position: relative;width: 100vw;height: 100vh;
}
</style>

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

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

相关文章

【音视频处理】使用ffmpeg实现多个视频合成一个视频(按宫格视图)

先上结果 环境 硬件&#xff1a;通用PC 系统&#xff1a;Windows 测试有效 软件&#xff1a;ffmpeg 解决 0、命令 ffmpeg.exe -i input1.mp4 -i input2.mp4 -i input3.mp4 -i input4.mp4 -filter_complex "[0:v]scaleiw/2:ih/2,pad2*iw:2*ih[a]; [1:v]scaleiw/2:ih/2…

BioTech - 大分子药物设计 概述

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/136302202 大分子药物设计领域主要包括3个方面&#xff0c;即大环类药物设计、蛋白质与多肽类药物设计、核酸药物设计等&#xff0c;具体如下&…

DolphinScheduler——奇富科技的调度实践

目录 一、技术架构 二、业务挑战 2.1 调度任务量大 2.2 运维复杂 2.3 SLA要求高 三、调度优化实践 3.1 重复调度 3.2 漏调度 3.3 Worker服务卡死 3.4 任务重复运行 四、服务监控 4.1 方法耗时监控 4.2 任务调度链路监控 五、用户收益 原文大佬的这篇调度系统案例…

nginx使用详解--缓存

Nginx 是一个功能强大的 Web 服务器和反向代理服务器&#xff0c;它可以用于实现静态内容的缓存&#xff0c;缓存可以分为客户端缓存和服务端缓存。 客户端缓存 客户端缓存指的是浏览器缓存, 浏览器缓存是最快的缓存, 因为它直接从本地获取(但有可能需要发送一个协商缓存的请…

【XR806开发板试用】全网首发,对接腾讯云平台的血泪史

1.前面的话 在上次连夜肝出了华为云平台的帖子:https://aijishu.com/a/1060000000287434 之后,论坛里的反响平平,好评没有,点赞更无,抱着已完成任务成功白嫖一块板子的心态,把板子收在了盒子里,第二天,助手小姐姐跟我说为何不把腾讯云的做了,对于这个要求我其实是拒绝的,但是小…

Three.js-04轨道控制器

1.导入 说明&#xff1a;相机围绕目标进行轨道运动。也就是可以通过鼠标拖拽进行移动视角。 import { OrbitControls } from three/addons/controls/OrbitControls.js; 2.使用 说明&#xff1a;构造controls对象&#xff0c;再调用update方法&#xff1b;为了使效果更为明显…

十二、Qt自定义Widget组件、静态库与动态库

一、自定义Widget组件 1、自定义Widget组件 使用步骤采用提升法&#xff08;promotion&#xff09;重新定义paintEvent事件 2、实现程序 &#xff08;1&#xff09;创建项目&#xff0c;基于QWidget &#xff08;2&#xff09;添加类&#xff0c;为Widget组件提升类 #inclu…

Vue3 在SCSS中使用v-bind

template 先创建一个通用的页面结构 <template><div class"v-bubble-bg"></div> </template>js 在JS中先对需要用的数据进行定义&#xff1a; 可以是参数&#xff0c;也可以是data <script setup>const props defineProps({bgCol…

gpt批量原创文章生成器,不限制内容的生成器

在当今的数字化时代&#xff0c;内容创作是网站持续发展的重要组成部分。然而&#xff0c;对于拥有大量内容需求的网站来说&#xff0c;手动创作文章可能会耗费大量时间和精力。为了解决这一问题&#xff0c;许多GPT&#xff08;生成式预训练模型&#xff09;文章生成软件应运而…

【重温设计模式】外观模式及其Java示例

设计模式及外观模式介绍 在编程世界中&#xff0c;设计模式就如同自然界的法则&#xff0c;是一种反复出现在各种情况下的通用解决方案。设计模式可以分为创建型、结构型和行为型三大类&#xff0c;每一类都有其独特的应用场景和解决问题的方式。今天&#xff0c;我们要重点解…

【HbuilderX】 uniapp实现 android申请权限 和 退出app返回桌面

目录 android申请权限&#xff1a; 监听用户是否开启权限或关闭权限&#xff1a; 退出app返回桌面&#xff1a; android申请权限&#xff1a; 首先在 manifest.json 内添加你所需要用到权限 添加权限插件 permission.js 一次就好1/权限插件 - Gitee.comhttps://gitee.co…

数据库分库分表中间件选择

目前分库分表的中间件有三种设计思路&#xff0c;分别是&#xff1a; 采用分散式架构&#xff0c;适用于用Java开发的高性能轻量级OLTP应用程序&#xff0c;以Sharding-JDBC为代表。采用中间层Proxy架构&#xff0c;提供了静态输入和所有语言支持&#xff0c;适用于OLAP应用程…

MATLAB环境下基于小波和滤波器组的音频信号处理

音频分类研究的重点&#xff0c;一方面在于音频特征的提取和选择&#xff0c;通常来说数据集和特征集在分类系统中有着极为重要的作用&#xff0c;离开了对数据集的处理、对特征集中特征的提取和选择&#xff0c;分类结果必将产生巨大误差。对于提高音频分类系统的分类准确度和…

vulnhub-----Hackademic靶机

文章目录 1.C段扫描2.端口扫描3.服务扫描4.web分析5.sql注入6.目录扫描7.写马php反弹shell木马 8.反弹shell9.内核提权 1.C段扫描 kali:192.168.9.27 靶机&#xff1a;192.168.9.25 ┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0,…

Docker容器(3)单容器管理

一、单容器 1.1概念简介 Docker三个重要概念: 仓库(Repository); 镜像(Image); 容器(Container). *Docker的三个重要概念是仓库(Repository)、镜像(Image)和容器(Container)**。具体如下&#xff1a; **镜像(Image)**&#xff1a;Docker镜像是创建容器的基础&#xff0c;它类似…

Maven面试题

以下是一些关于Maven的经典面试题以及它们的答案&#xff1a; 1、什么是Maven&#xff1f; Maven是一个项目管理工具&#xff0c;用于构建、管理、发布Java项目。 2、为什么要使用Maven而不是手动管理项目依赖&#xff1f; Maven提供了依赖管理、统一的构建、打包、文档生…

Google索引脚本:快速索引你的网站

公众号&#xff1a;【可乐前端】&#xff0c;每天3分钟学习一个优秀的开源项目&#xff0c;分享web面试与实战知识。 每天3分钟开源 hi&#xff0c;这里是每天3分钟开源&#xff0c;很高兴又跟大家见面了&#xff0c;今天介绍的开源项目简介如下&#xff1a; 仓库名&#xff1…

园区停车管理系统的设计与实现

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一 、设计说明 1.1 选题…

【前端素材】推荐优质在线通用果蔬商城电商网页eStore平台模板(附源码)

一、需求分析 1、系统定义 通用果蔬网站是指专门提供各类果蔬产品展示和销售的在线平台。它将不同种类的新鲜水果、蔬菜、干果、坚果等聚集在一起&#xff0c;为消费者提供方便、快捷的购物渠道。 2、功能需求 通用果蔬网站是指专门提供各类果蔬产品展示和销售的在线平台。…

面试数据库篇(mysql)- 08事务

原理 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 ACID是什么?可以详细说一下吗? 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全…