当前位置: 首页 > news >正文

Cesium 入门教程(十一):Camera相机功能展示

文章目录

  • 一,Cesium 实际示例(含源代码)
      • 1,vue+cesium: 围绕一个固定点自动左右旋转
      • 2,vue+cesium: flyto一个具体的实体位置
      • 3,vue+cesium: flyto一个具体的点位置
      • 4,vue+cesium: 利用setView 动画定位到特定点和特定区域
      • 5,vue+cesium: lookAtTransform围绕一个固定点上下左右旋转查看
  • 二,Camera基础知识
      • 1. Camera 基本概念
      • 2. 常用操作方法
        • (1)设置相机位置和方向
        • (2)平滑飞行到目标位置
        • (3)围绕目标旋转(视角控制)
      • 3. 视锥体(Frustum)参数
      • 4. 相机控制事件
      • 5. 常用坐标转换
      • 6. 关键注意事项
  • 三、Cesium 入门教程 -系列文章列表

Cesium 中的 Camera(相机)是控制场景视图的核心组件,用于定义用户在 3D 场景中的观察位置、方向和视角。

一,Cesium 实际示例(含源代码)

1,vue+cesium: 围绕一个固定点自动左右旋转

https://dajianshi.blog.csdn.net/article/details/131106456

2,vue+cesium: flyto一个具体的实体位置

https://dajianshi.blog.csdn.net/article/details/131080372

3,vue+cesium: flyto一个具体的点位置

https://dajianshi.blog.csdn.net/article/details/131073605
在这里插入图片描述

4,vue+cesium: 利用setView 动画定位到特定点和特定区域

https://dajianshi.blog.csdn.net/article/details/145736119
在这里插入图片描述

5,vue+cesium: lookAtTransform围绕一个固定点上下左右旋转查看

https://dajianshi.blog.csdn.net/article/details/131106086

二,Camera基础知识

1. Camera 基本概念

  • 作用:决定场景中可见的区域,类似于现实世界中相机的取景范围。
  • 核心属性
    • position:相机在三维空间中的位置(Cartesian3 坐标)。
    • direction:相机的观察方向(单位向量)。
    • up:相机的上方向(单位向量,通常为 (0,0,1) 即垂直向上)。
    • frustum:视锥体参数(决定视野范围、近/远裁剪面等)。

2. 常用操作方法

(1)设置相机位置和方向
// 设置相机位置(WGS84经纬度:经度116°,纬度40°,高度1000米)
viewer.camera.setView({destination: Cesium.Cartesian3.fromDegrees(116, 40, 1000),orientation: {heading: Cesium.Math.toRadians(0),   // 水平旋转(0表示向北)pitch: Cesium.Math.toRadians(-30),   // 俯仰角(-90°为俯视,0°为平视)roll: 0                              // 翻滚角(0表示无倾斜)}
});
(2)平滑飞行到目标位置
// 平滑飞行到指定位置
viewer.camera.flyTo({destination: Cesium.Cartesian3.fromDegrees(116, 40, 5000),  // 目标位置duration: 3,                                               // 飞行时间(秒)orientation: {heading: Cesium.Math.toRadians(90),                      // 最终朝向(向东)pitch: Cesium.Math.toRadians(-45)}
});
(3)围绕目标旋转(视角控制)
// 围绕某个点旋转相机(例如围绕一个地标)
const center = Cesium.Cartesian3.fromDegrees(116, 40); // 旋转中心
viewer.camera.lookAt(center, new Cesium.Cartesian3(1000, 1000, 500) // 相机相对中心点的偏移量
);// 更新旋转角度(例如鼠标拖动时)
viewer.camera.lookAtTransform(Cesium.Transforms.eastNorthUpToFixedFrame(center),new Cesium.Cartesian3(1000, 1000, 500)
);

3. 视锥体(Frustum)参数

视锥体定义了相机可见的空间范围,常用参数:

  • fov:垂直视野角度(Field of View),默认 60°。
  • aspectRatio:宽高比(场景宽度/高度)。
  • near:近裁剪面距离(小于此值的物体不可见)。
  • far:远裁剪面距离(大于此值的物体不可见)。
// 自定义相机视锥体
viewer.camera.frustum.fov = Cesium.Math.toRadians(90); // 扩大视野到90°
viewer.camera.frustum.near = 1.0;                     // 近裁剪面1米
viewer.camera.frustum.far = 1000000.0;                // 远裁剪面1000公里

4. 相机控制事件

Cesium 提供了默认的相机交互(鼠标拖拽旋转、滚轮缩放、右键平移),也可自定义事件:

// 禁用默认相机控制
viewer.scene.screenSpaceCameraController.enableRotate = false; // 禁用旋转
viewer.scene.screenSpaceCameraController.enableZoom = false;   // 禁用缩放// 监听相机移动事件
viewer.camera.moveEnd.addEventListener(() => {console.log("相机移动结束,新位置:", viewer.camera.position);
});

5. 常用坐标转换

相机位置通常需要在不同坐标系统间转换:

// 笛卡尔坐标(Cartesian3)转经纬度高度
const cartographic = Cesium.Cartographic.fromCartesian(viewer.camera.position);
const longitude = Cesium.Math.toDegrees(cartographic.longitude); // 经度
const latitude = Cesium.Math.toDegrees(cartographic.latitude);   // 纬度
const height = cartographic.height;                              // 高度

6. 关键注意事项

  • 性能影响:相机的 far 值过大会导致渲染性能下降,应根据场景需求合理设置。
  • 视角限制:避免极端俯仰角(如接近 90°)可能导致的渲染异常。
  • 动画控制flyTo 方法可通过 complete 回调处理飞行结束后的逻辑。

通过灵活控制 Camera,可实现漫游、聚焦、环绕等多样化的场景浏览效果。

三、Cesium 入门教程 -系列文章列表

http://www.dtcms.com/a/354823.html

相关文章:

  • SplinePSF——应用于光学成像中的 PSF 建模
  • 【贪心 或 DFS - 面试题】小于n最大数
  • 记一次雪花算法 ID 精度丢失的Bug:前端接收到的 Long 被“四舍五入”了?
  • Java HTTP 请求:Unirest 使用指南及与 HttpClient 对比
  • 数据湖与数据仓库
  • 「数据获取」25年最新安徽省路网数据安徽省路网分类数据(获取方式看绑定的资源)
  • 自动化三维测量仪工业零件自动外观三维测量-中科米堆CASAIM
  • 三维视频融合驱动视频孪生创新:智汇云舟引领数字孪生产业新范式
  • Kubernetes一EFK日志架构
  • 在 Ubuntu 24.04 上安装二进制文件(逐步指南)
  • HCIA备考知识点总结:第二章华为VRP系统知识点
  • 嵌入式学习日记(36)TCP并发服务器构建——epoll
  • leetcode算法刷题的第二十天
  • 力扣18:四数之和
  • CodeSouler v2.4.0 版本更新
  • 生成式推荐模型的长序列特征:离线存储
  • 超越文本:深入剖析多模态AI的架构原理
  • c++ 观察者模式 订阅发布架构
  • FFmpeg05:编解码实战
  • 机器学习框架下:金价近3400关口波动,AI量化模型对PCE数据的动态监测与趋势预测
  • 企业通讯软件以安全为基,搭建高效的通讯办公平台
  • RA4M2环境搭建与新建工程
  • 新手向:Python开发简易股票价格追踪器
  • Linux内核IPv4 RAW套接字深度解析:从数据包构造到可靠传输的挑战
  • Dify 和 LangChain 区别对比总结
  • 【实操教学】ArcGIS 如何进行定义坐标系
  • Python实现点云基于法向量、曲率和ISS提取特征点
  • 【GM3568JHF】FPGA+ARM异构开发板 使用指南:显示与触摸
  • 第二章:Cesium 视图控制与相机操作
  • Java集合操作:Apache Commons Collections4启示录