cesium入门学习二

      之前学习了cesium的一些基本操作,现在学习cesium怎么加载模型,以及一些其他操作。

1.学习汇总目录

第一篇:cesium入门学习一-CSDN博客

2.cesium效果显示以及代码

2.1  加载模型并显示

效果:

js代码:

// 创建 Cesium Viewer
var viewer = new Cesium.Viewer('cesiumContainer');// 模型的经度、纬度、高度
var position = Cesium.Cartesian3.fromDegrees(-107.0, 40.0, 300.0); // 单位:经度、纬度、高度(米)// 添加 GLTF 模型
var model = viewer.entities.add({name: "GLTF Model",position: position,model: {uri: "/model/scene.gltf", // 替换为你的 GLTF 模型文件路径scale: 2.0, // 模型缩放比例minimumPixelSize: 128, // 模型的最小像素大小(防止缩放过远消失)maximumScale: 200, // 模型最大缩放比例(可选)color: Cesium.Color.WHITE.withAlpha(0.8) // 模型颜色和透明度}
});// 将视角缩放到模型
viewer.zoomTo(viewer.entities);

cesium支持三维模型的格式是gltf格式,我自己在网上下载了一个gltf格式的飞机文件,这里的uri路径是相对于html的路径。

路径显示图:

模型:

js文件的路径:

代码是在index.js里面写的。

2.2  飞机移动

效果:

另外一个时刻:

代码:

// // 创建 Cesium Viewer
var viewer = new Cesium.Viewer('cesiumContainer');// 模型的初始位置
var initialPosition = Cesium.Cartesian3.fromDegrees(-107.0, 40.0, 300.0);// 添加 GLTF 模型
var model = viewer.entities.add({name: "GLTF Model",position: initialPosition,model: {uri: "/model/scene.gltf", // 替换为你的 GLTF 模型路径scale: 2.0,minimumPixelSize: 128,color: Cesium.Color.WHITE.withAlpha(0.8)}
});// 定义轨迹点数组(初始包含模型的初始位置)
var positions = [initialPosition];// 添加轨迹线
var polyline = viewer.entities.add({name: "Flight Path",polyline: {positions: positions, // 动态更新轨迹点width: 3, // 线的宽度material: Cesium.Color.RED, // 线的颜色clampToGround: false // 轨迹线是否贴地}
});// 动态更新模型位置和轨迹
var startTime = Cesium.JulianDate.now();
viewer.clock.onTick.addEventListener(function () {// 计算时间间隔var currentTime = Cesium.JulianDate.now();var elapsedSeconds = Cesium.JulianDate.secondsDifference(currentTime, startTime);// 动态计算模型位置(模拟飞行轨迹)var longitude = -107.0 + elapsedSeconds * 0.01; // 模拟经度变化var latitude = 40.0 + Math.sin(elapsedSeconds * 0.1) * 0.1; // 模拟纬度变化var height = 300.0 + Math.cos(elapsedSeconds * 0.1) * 50; // 模拟高度变化var newPosition = Cesium.Cartesian3.fromDegrees(longitude, latitude, height);// 更新模型位置model.position = newPosition;// 更新轨迹点数组positions.push(newPosition);polyline.polyline.positions = positions; // 更新轨迹线
});// 将视角缩放到模型和轨迹
viewer.zoomTo(viewer.entities);

2.3 飞机移动显示轨迹线

效果:

有线,但是不是我最终要的效果

js代码:

//创建 Cesium Viewer
var viewer = new Cesium.Viewer('cesiumContainer');// 规划路径的经纬度、高度点
var plannedPositions = [Cesium.Cartesian3.fromDegrees(-107.0, 40.0, 300.0),Cesium.Cartesian3.fromDegrees(-106.9, 40.1, 350.0),Cesium.Cartesian3.fromDegrees(-106.8, 40.2, 400.0),Cesium.Cartesian3.fromDegrees(-106.7, 40.3, 450.0),Cesium.Cartesian3.fromDegrees(-106.6, 40.4, 500.0)
];// 绘制规划的轨迹线
var plannedPolyline = viewer.entities.add({name: "Planned Path",polyline: {positions: plannedPositions,width: 3, // 线的宽度material: Cesium.Color.GREEN, // 规划路径为绿色clampToGround: false // 是否贴地}
});// 初始化飞机模型位置(起点)
var model = viewer.entities.add({name: "GLTF Model",position: plannedPositions[0], // 起始点model: {uri: "/model/scene.gltf", // 替换为你的 GLTF 模型路径scale: 2.0,minimumPixelSize: 128,color: Cesium.Color.WHITE.withAlpha(0.8)}
});// 已经过的轨迹点
var passedPositions = [plannedPositions[0]];// 绘制已走的轨迹线
var passedPolyline = viewer.entities.add({name: "Passed Path",polyline: {positions: passedPositions,width: 3,material: Cesium.Color.RED, // 已走的路径为红色clampToGround: false}
});// 动态移动飞机并更新已走的轨迹线
var startTime = Cesium.JulianDate.now();
var totalSteps = plannedPositions.length - 1; // 总段数
var stepDuration = 5; // 每段的飞行时间(秒)viewer.clock.onTick.addEventListener(function () {// 当前时间var currentTime = Cesium.JulianDate.now();var elapsedSeconds = Cesium.JulianDate.secondsDifference(currentTime, startTime);// 计算当前所在段及进度var segmentIndex = Math.floor(elapsedSeconds / stepDuration);var segmentProgress = (elapsedSeconds % stepDuration) / stepDuration;if (segmentIndex < totalSteps) {// 当前段的起点和终点var startPoint = plannedPositions[segmentIndex];var endPoint = plannedPositions[segmentIndex + 1];// 计算飞机的当前位置(线性插值)var currentPosition = Cesium.Cartesian3.lerp(startPoint,endPoint,segmentProgress,new Cesium.Cartesian3());// 更新飞机模型位置model.position = currentPosition;// 更新已走的轨迹if (segmentProgress === 0 && !passedPositions.includes(startPoint)) {passedPositions.push(startPoint); // 添加段起点到已走轨迹}passedPositions.push(currentPosition); // 动态添加当前位置passedPolyline.polyline.positions = passedPositions; // 更新已走轨迹线} else {// 飞机到达终点后停止更新model.position = plannedPositions[totalSteps];}
});// 将视角缩放到路径范围
viewer.zoomTo(viewer.entities);

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

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

相关文章

路由策略

控制层流量 --- 路由协议传递路由信息时产生的流量 数据层流量 --- 设备访问目标地址时产生的流量 所谓的路由策略----在控制层面转发流量的过程中&#xff0c;截取流量&#xff0c;之后修改流量再转发或不转发的技术&#xff0c;最终达到影响路由器路由表的生成&#xff0c…

网络安全 - Cross-site scripting

1.1.1 摘要 在本系列的第一篇博文中&#xff0c;我向大家介绍了SQL Injection常用的攻击和防范的技术。这个漏洞可以导致一些非常严重的后果&#xff0c;但幸运的是我们可以通过限制用户数据库的权限、使用参数化的SQL语句或使用ORM等技术来防范SQL Injection的发生&#xff0c…

一、Hadoop概述

文章目录 一、Hadoop是什么二、Hadoop发展历史三、Hadoop三大发行版本1. Apache Hadoop2. Cloudera Hadoop3. Hortonworks Hadoop四、Hadoop优势1. 高可靠性2. 高扩展性3. 高效性4. 高容错性五、Hadoop 组成1. Hadoop1.x、2.x、3.x区别2. HDFS 架构概述3. YARN 架构概述4. MapR…

信息安全管理与评估赛题第9套

全国职业院校技能大赛 高等职业教育组 信息安全管理与评估 赛题九 模块一 网络平台搭建与设备安全防护 1 赛项时间 共计180分钟。 2 赛项信息 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段 网络平台搭建与设备安全防护 任务1 网络平台搭建 XX:XX- XX:XX 50 任务2…

低代码开发中 DDD 领域驱动的页面权限控制

在低代码开发的领域中&#xff0c;应用安全与灵活性是两大关键考量因素。领域驱动设计&#xff08;DDD&#xff09;作为一种在软件设计领域广泛应用且颇具影响力的方法论&#xff0c;正逐渐在低代码开发的页面权限控制方面展现出其独特的价值与潜力。本文旨在客观地探讨如何借助…

目录jangow-01-1.0.1靶机

靶机 ip&#xff1a;192.168.152.155 把靶机的网络模式调成和攻击机kali一样的网络模式&#xff0c;我的kali是NAT模式, 在系统启动时(长按shift键)直到显示以下界面 ,我们选第二个&#xff0c;按回车。 继续选择第二个&#xff0c;这次按 e 进入编辑页面 接下来&#xff0c;…

微信小程序 不同角色进入不同页面、呈现不同底部导航栏

遇到这个需求之前一直使用的小程序默认底部导航栏&#xff0c;且小程序默认入口页面为pages/index/index&#xff0c;要使不同角色呈现不同底部导航栏&#xff0c;必须要在不同页面引用不同的自定义导航栏。本篇将结合分包&#xff08;subPackages&#xff09;展开以下三步叙述…

【GeekBand】C++设计模式笔记15_Proxy_代理模式

1. “接口隔离” 模式 在组件构建过程中&#xff0c;某些接口之间直接的依赖常常会带来很多问题&#xff0c;甚至根本无法实现。采用添加一层间接&#xff08;稳定&#xff09;接口&#xff0c;来隔离本来互相紧密关联的接口是一种常见的解决方案。典型模式 FacadeProxyAdapte…

网络安全之接入控制

身份鉴别 ​ 定义:验证主题真实身份与其所声称的身份是否符合的过程&#xff0c;主体可以是用户、进程、主机。同时也可实现防重放&#xff0c;防假冒。 ​ 分类:单向鉴别、双向鉴别、三向鉴别。 ​ 主题身份标识信息:密钥、用户名和口令、证书和私钥 Internet接入控制过程 …

UE5 崩溃问题汇总!!!

Using bundled DotNet SDK version: 6.0.302 ERROR: UnrealBuildTool.dll not found in "..\..\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll" 在你遇到这种极奇崩溃的BUG &#xff0c;难以解决的时候。 尝试了N种方法&#xff0c;都不行的解决方法。…

docker 搭建集群

准备3台机器&#xff1a; #dockermaster 192.168.31.150 sudo hostnamectl set-hostname dockermaster #初始化主节点 docker swarm init --advertise-addr 192.168.31.150 #查看集群是否搭建成功 docker node ls #dockernode1 192.168.31.151 sudo hostnamectl set-hostname …

关于埃斯顿机器人文件导出或者系统日志导出

关于埃斯顿机器人文件导出或者日志导出&#xff0c;登录模式&#xff0c;选择高级设置&#xff0c;控制器备份恢复 选择U盘导入地址&#xff0c;点击导出&#xff0c;等待时间30秒就可以查看文件格式和系统日志

golang标准库SSH操作示例

文章目录 前言一、了解SSH二、重要知识点1.安装ssh库2.ssh库重要知识牢记 三、模拟连接远程服务器并执行命令四、SSH与os/exec标准库下执行命令的几种方式对比五、SSH库下三种执行命令方式演示5.1. session.CombinedOutput()示例5.2. session.Run()示例5.3. session.Start()、s…

嵌入式轻量级开源操作系统:HeliOS的使用

嵌入式轻量级开源操作系统:HeliOS的使用 &#x1f4cd;项目地址&#xff1a;https://github.com/heliosproj/HeliOS HeliOS项目是一个社区交付的开源项目&#xff0c;用于构建和维护HeliOS嵌入式操作系统&#xff08;OS&#xff09;。HeliOS是一个功能齐全的操作系统&#xff0…

解决:excel鼠标滚动幅度太大如何调节?

在excel里为什么滚动一次跳过很多行呢&#xff1f;很不方便。。。 1. 问题&#xff1a; 一开始单元格从第1行开始&#xff1a; 鼠标轻轻滚动一下后&#xff0c;直接跳到第4行&#xff1a; 鼠标在word和浏览器里都是好好的。在excel里为什么不是滚动一次跳过一行呢&#xff…

kubernetes Gateway API-部署和基础配置

文章目录 1 部署2 最简单的 Gateway3 基于主机名和请求头4 重定向 Redirects4.1 HTTP-to-HTTPS 重定向4.2 路径重定向4.2.1 ReplaceFullPath 替换完整路径4.2.2 ReplacePrefixMatch 替换路径前缀5 重写 Rewrites5.1 重写 主机名5.2 重写 路径5.2.1 重新完整路径5.2.1 重新部分路…

Docker服务发现新纪元:探索Consul的无限魅力

作者简介&#xff1a;我是团团儿&#xff0c;是一名专注于云计算领域的专业创作者&#xff0c;感谢大家的关注 •座右铭&#xff1a; 云端筑梦&#xff0c;数据为翼&#xff0c;探索无限可能&#xff0c;引领云计算新纪元个人主页&#xff1a;团儿.-CSDN博客 目录 前言&…

湖南引力:低代码助力实现智慧养老管理系统

“低代码开发宛如一座神奇的桥梁&#xff0c;它以简洁高效的方式连接起创意与应用&#xff0c;降低了开发门槛&#xff0c;为企业和开发者带来前所未有的便捷与可能&#xff0c;开启了快速实现软件梦想的新征程。” ——王港&#xff0c;湖南引力科技有限公司 湖南引力科技有…

mongodb和Cassandra

mongodb的一致性问题&#xff1a; 15.MongoDB的一致性(读关注与写关注)_mongo w选项-CSDN博客 孤儿节点问题&#xff1a; 技术干货 | MongoDB 偶遇孤儿文档及处理方法-腾讯云开发者社区-腾讯云 分片集群MongoDB迁移前清除孤儿文档 由数据迁移至MongoDB导致的数据不一致问题…

4.3 数据库HAVING语句

having子句要和group by子句联合起来才能使用&#xff0c;不能单独去使用&#xff0c;接下来咱们看一下为什么要引入having子句语法呢&#xff1f;引入having子句也是出于无奈&#xff0c;因为有些条件查询&#xff0c;用group by子句并不能满足要求&#xff0c;比如说查询部门…