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 入門教程 -系列文章列表

  • Cesium 入門教程(一):應該如何學習Cesium
  • Cesium 入門教程(二):界面的基礎配置
  • Cesium 入門教程(三):加載不同的地圖底圖
  • Cesium 入門教程(四):利用entity顯示圖形
  • Cesium 入門教程(五):利用Primitive生成圖形
  • Cesium 入門教程(六):不同的材質設置
  • Cesium 入門教程(七):加載、導出2D文件數據
  • Cesium 入門教程(八):加載3D瓦片及模型
  • Cesium 入門教程(九):通過鼠標繪制圖形
  • Cesium 入門教程(十):利用shader、后處理重構圖形
  • Cesium 入門教程(十一):camera相機功能展示
  • Cesium 入門教程(十二):時間動畫實例
  • Cesium 入門教程(十三):粒子系統實例
  • Cesium 入門教程(十四):鼠標鍵盤交互

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/920791.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/920791.shtml
英文地址,請注明出處:http://en.pswp.cn/news/920791.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

go語言基本排序算法

package mainimport "fmt"func main() {BubbleSort()SelectSort()InsertSort()MergeSort()QuickSort()HeapSort()ShellSort() }//冒泡排序 func BubbleSort() {str : []int{9, 1, 5, 8, 3, 7, 4, 6, 2}for i : 0; i < len(str)-1; i {flag : falsefor j : len(str…

一步完成CalDAV賬戶同步,日歷服務助力釘釘日歷日程集中管理

在信息爆炸節奏飛快的今天&#xff0c;高效的管理時間已經成為我們工作和生活中的核心競爭力&#xff0c;復雜紛繁的日程安排&#xff0c;無處不在的提醒需求以及跨設備同步的困擾&#xff0c;這些問題仿佛都在呼喚著一個更智能、更便捷、更可靠的解決方案。 而華為日歷App&am…

企業內部機密視頻安全保護|如何防止企業內部機密視頻泄露?

在企業數字化進程飛速發展的今天&#xff0c;視頻內容已成為承載企業內部培訓、戰略會議、產品機密和核心技術的關鍵載體。一次意外的泄露&#xff0c;不僅可能導致知識產權流失&#xff0c;更會讓企業聲譽和市場競爭力遭受重創。面對無孔不入的安全威脅&#xff0c;企業該如何…

C# Deconstruct | 簡化元組與對象的數據提取

官方文檔&#xff1a;析構元組和其他類型 - C# | Microsoft Learn 標簽&#xff1a;Deconstruct、Tuple、record、模式匹配 PS&#xff1a;record相關內容后續還會繼續更新&#x1f504; 模式匹配可以查看我的另一篇&#x1f449;模式匹配 目錄1. 概述2. 基本用法2.1 元組解…

R 語言 ComplexUpset 包實戰:替代 Venn 圖的高級集合可視化方案

摘要 在生物信息學、數據挖掘等領域的集合分析中,傳統 Venn 圖在多維度數據展示時存在信息擁擠、可讀性差等問題。本文基于 R 語言的 ComplexUpset 包,以基因表達研究為場景,從包安裝、數據準備到可視化實現,完整演示如何制作正刊級別的集合交集圖,解決多條件下差異基因(…

?導游|基于SprinBoot+vue的在線預約導游系統

在線預約導游系統 基于SprinBootvue的在線預約導游系統 一、前言 二、系統設計 三、系統功能設計 前臺功能實現 后臺功能實現 管理員模塊實現 導游模塊實現 用戶模塊實現 四、數據庫設計 五、核心代碼 六、論文參考 七、最新計算機畢設選題推薦 八、源碼獲取&am…

SQL server 異常 出現錯誤 824

2025-08-27 01:36:37,324 ERROR c.z.i.w.DatabaseUtils [Scheduled-7] Error executeStoredProcedure SQL script: sp_RefreshDWDByDateFive警告: 在 08 27 2025 1:36AM 出現錯誤 824。請記錄該錯誤和時間&#xff0c;并與您的系統管理員聯系。 2025-08-27 01:36:37,332 ERROR …

制造業生產線連貫性動作識別系統開發

制造業生產線連貫性動作識別系統開發 第一部分&#xff1a;項目概述與理論基礎 1.1 項目背景與意義 在現代智能制造環境中&#xff0c;盡管自動化程度不斷提高&#xff0c;但人工操作仍然在復雜裝配任務中扮演著不可替代的角色。研究表明&#xff0c;人機協作被視為打破傳統人機…

什么是Jmeter? Jmeter工作原理是什么?

&#x1f345; 點擊文末小卡片&#xff0c;免費獲取軟件測試全套資料&#xff0c;資料在手&#xff0c;漲薪更快 第一篇 什么是 JMeter&#xff1f;JMeter 工作原理 1.1 什么是 JMeter Apache JMeter 是 Apache 組織開發的基于 Java 的壓力測試工具。用于對軟件做壓力測試&a…

Linux網絡基礎1(一)之計算機網絡背景

文章目錄計算機網絡背景網絡發展認識 "協議"高小琴例子方言例子計算機網絡背景 網絡發展 獨立模式: 計算機之間相互獨立; 網絡互聯: 多臺計算機連接在一起, 完成數據共享; 局域網LAN: 計算機數量更多了, 通過交換機和路由器連接在一起; 廣域網WAN: 將遠隔千里的計算…

如何在數學建模賽中實現模型創新?

模型創新性在國賽數學建模中&#xff0c;完備性是論文的基本要求&#xff0c;而創新性則是決定論文能否脫穎而出的關鍵因素。所謂創新&#xff0c;并不僅僅指提出完全新穎的數學理論&#xff0c;而是能夠在已有方法的基礎上&#xff0c;通過新的問題切入點、假設修正、模型優化…

【重磅發布】flutter_chen_updater-版本升級更新

Flutter Chen Updater 一個功能強大的Flutter應用內更新插件&#xff0c;支持Android APK自動下載、安裝和iOS跳轉App Store。 ? 特性 ? 跨平臺支持: Android APK自動更新&#xff0c;iOS跳轉App Store? 智能下載: 支持斷點續傳、文件校驗、多重備用方案? 權限管理: 自動處…

docker 1分鐘 快速搭建 redis 哨兵集群

使用 docker-compose 1 分鐘搭建好 1主2從3哨兵的 redis 哨兵集群 目錄結構 redis-sentinel-cluster ├── check_redis.sh ├── docker-compose.yml ├── redis │ └── redis.conf ├── sentinel │ └── sentinel.confdocker-compose.yml 配置 version: 3…

Git與DevOps實戰:從版本控制到自動化部署

一、版本控制1.什么是版本控制&#xff1f;版本控制用于高效追蹤和管理項目開發中的代碼、配置及文檔變更歷史&#xff0c;確保團隊成員始終使用正確版本&#xff0c;并支持版本回溯、差異比較和文件恢復。它能帶來以下優勢&#xff1a;通過歷史記錄保障數據安全與完整性&#…

大模型——利用RAG構建智能問答平臺實戰

利用RAG構建智能問答平臺實戰 目前公司的智能問答平臺利用RAG技術構建,現給大家分享下通RAG技術構建智能問平臺的具體流程和原理。 一、什么是RAG RAG是檢索增強生成技術(Retrieval-Augmented Generation),目前是構建智能問答的重要技術。RAG相比傳統的檢索可以可以減少…

flume事務機制詳解:保障數據可靠性的核心邏輯

flume事務機制詳解&#xff1a;保障數據可靠性的核心邏輯 在數據采集過程中&#xff0c;“不丟數據、不重數據” 是核心需求。Flume 之所以能在分布式環境下保證數據可靠性&#xff0c;關鍵在于其內置的事務機制。Flume 通過在 “Source → Channel” 和 “Channel → Sink” …

第四十九天(springboot模版注入ThymeleafFreemarkerVelocity)

開發框架-SpringBoot 參考&#xff1a;Spring Boot 中文文檔 新建一個spring Boot 項目&#xff0c;修改服務器url為 aliyun.com 不然沒有與jdk8版本對應的java 選擇一個spring web 庫&#xff0c;點擊創建即可 來到這個頁面點擊運行 啟動的是8080端口&#xff0c;用127.0.0.1…

Spring MVC 九大組件源碼深度剖析(六):HandlerExceptionResolver - 異常處理的藝術

文章目錄一、異常處理的核心價值二、核心接口設計三、四大內置實現類源碼解析1. ExceptionHandlerExceptionResolver&#xff08;現代異常處理核心&#xff09;2. ResponseStatusExceptionResolver&#xff08;HTTP狀態碼處理&#xff09;3. DefaultHandlerExceptionResolver&a…

MCP(Model Context Protocol,模型上下文協議)介紹

1. 背景 隨著大語言模型&#xff08;LLM, Large Language Model&#xff09;的應用越來越廣泛&#xff0c;一個核心問題逐漸凸顯&#xff1a; 模型在對話或推理時&#xff0c;往往只能依賴有限上下文窗口。外部工具、知識庫、應用接口如何統一接入模型&#xff0c;缺乏標準協議…

synchronized的鎖對象 和 wait,notify的調用者之間的關系

誰調用了wait和notify方法&#xff0c;會決定這兩個方法的控制范圍嗎&#xff1f;你的問題非常深入&#xff0c;涉及到 wait() 和 notify() 方法的控制范圍和作用域。讓我們詳細分析一下&#xff1a;? 核心概念&#xff1a;控制范圍由“鎖對象”決定wait() 和 notify() 的控制…