前端~三維地圖(cesium)動態材質飛線

自定義飛線材質 FlyLineMaterial.ts
import * as Cesium from "cesium";// 修改:新增流動區域顏色和速率參數
const FlyLineShaderSource = `
uniform vec4 color;
uniform vec4 flowColor; 
uniform float percent;
uniform float speed;czm_material czm_getMaterial(czm_materialInput materialInput) {vec4 outColor = color;czm_material material = czm_getDefaultMaterial(materialInput);vec2 st = materialInput.st;float time = fract(czm_frameNumber * speed / 144.0);float startPosition = time;if(st.s > startPosition - percent && st.s < startPosition) {float value = (st.s - (startPosition - percent)) / percent;outColor.rgb = mix(color.rgb, flowColor.rgb, value);}material.diffuse = czm_gammaCorrect(outColor.rgb);material.alpha = outColor.a;return material;
}`;type FlyLineOptions = {color: Cesium.Color; // 線主體顏色flowColor: Cesium.Color; // 流動線顏色percent: number; //流動區域占整個線段的比例(0~1)speed: number; //流動速度
};export class FlyLineMaterial extends Cesium.Material {constructor(options: FlyLineOptions) {const { color, flowColor, percent, speed } = options; // 解構參數super({translucent: false,fabric: {type: "FlyLine",uniforms: {color,flowColor, // 新增:流動區域顏色percent,speed, // 新增:流動速度},source: FlyLineShaderSource, // 使用抽離的著色器代碼},});}
}
使用飛線材質
 const positions = Cesium.Cartesian3.fromDegreesArray([125.321753, 43.810582, 126.554969, 43.834361,]);// 創建幾何const geometry = new Cesium.PolylineGeometry({positions: positions,width: 1,});const instance = new Cesium.GeometryInstance({geometry: geometry,});const appearance = new Cesium.PolylineMaterialAppearance({material: new FlyLineMaterial({color: Cesium.Color.fromCssColorString("#2d7367"),flowColor: Cesium.Color.fromCssColorString("#2ddcab"),percent: 0.1,speed: 0.5,}),});const primitive = new Cesium.Primitive({geometryInstances: instance,appearance: appearance,});viewer.scene.primitives.add(primitive);

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

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

相關文章

[Spring AOP 8] Spring AOP 源碼全流程總結

Spring AOP總結 更美觀清晰的版本在&#xff1a;Github 前面的章節&#xff1a; [Spring AOP 1] 從零開始的JDK動態代理 [Spring AOP 2] 從零開始的CGLIB動態代理 [Spring AOP 3] Spring選擇代理 [Spring AOP 4] Spring AOP 切點匹配 [Spring AOP 5] 高級切面與低級切面&#…

C#高級編程:加密解密

在數字化時代,數據安全是每個應用程序都必須重視的環節。無論是用戶的個人信息、敏感的商業數據,還是重要的系統配置,都需要得到妥善的保護。C# 作為一種廣泛應用的編程語言,提供了豐富且強大的加密解密功能,幫助開發者構建安全可靠的應用。本文將深入探討 C# 高級編程中的…

基于運動補償的前景檢測算法

這段代碼實現了基于運動補償的前景檢測算法。 主要功能包括&#xff1a; 運動補償模塊&#xff1a;使用基于網格的 KLT 特征跟蹤算法計算兩幀之間的運動&#xff0c;然后通過單應性變換實現幀間運動補償。前景檢測模塊&#xff1a;結合兩幀運動補償結果&#xff0c;通過幀間差…

使用matlab進行數據擬合

目錄 一、工作區建立數據 二、曲線擬合器(在"APP"中) 三、曲線擬合函數及參數 四、 在matlab中編寫代碼 一、工作區建立數據 首先&#xff0c;將數據在matlab工作區中生成。如圖1所示&#xff1a; 圖 1 二、曲線擬合器(在"APP"中) 然后&#xff0c;…

Playwright 安裝配置文件詳解

Playwright 安裝&配置文件詳解 環境準備 Node.js 14.0&#xff08;推薦 LTS 版本&#xff09;npm&#xff08;推薦使用最新版&#xff09;支持 Windows、macOS、Linux 一步到位的官方推薦安裝方式 1. 進入你的項目目錄 # Windows cd 路徑\到\你的項目 # macOS/Linux cd…

中國古代史4

東漢 公元25年&#xff0c;劉秀建立東漢&#xff0c;定都洛陽&#xff0c;史稱光武中興 白馬寺&#xff1a;漢明帝時期建立&#xff0c;是佛教傳入中國后興建的第一座官辦寺院&#xff0c;有中國佛教的“祖庭”和“釋源”之稱&#xff0c;距今1900多年歷史 班超—西域都護—投…

springboot + mysql8降低版本到 mysql5.7

springboot mysql8降低版本到 mysql5.7 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.49</version></dependency>spring:datasource:driverClassName: com.mysql.jdbc.D…

4.4java常用類

在 Java 中&#xff0c;System 和 Runtime 類都是 java.lang 包下非常重要的類&#xff0c;它們提供了與系統交互以及管理 Java 虛擬機&#xff08;JVM&#xff09;運行時環境的功能。 System 類 System 類包含了一些有用的類字段和方法&#xff0c;它不能被實例化&#xff0…

【嵌入式筆記】Modbus TCP

1.概述 定義&#xff1a;Modbus TCP 是 Modbus 協議的變體&#xff0c;基于 TCP/IP 協議棧&#xff0c;用于通過以太網實現工業設備間的通信。 背景&#xff1a;由施耐德電氣&#xff08;原 Modicon 公司&#xff09;在 1999 年發布&#xff0c;將傳統的 Modbus RTU/ASCII 適配…

《解鎖React Native與Flutter:社交應用啟動速度優化秘籍》

React Native和Flutter作為當下熱門的跨平臺開發框架&#xff0c;在優化應用啟動性能方面各有千秋。今天&#xff0c;我們就深入剖析它們獨特的策略與方法。 React Native應用的初始包大小對啟動速度影響顯著。在打包階段&#xff0c;通過精準分析依賴&#xff0c;去除未使用的…

R語言學習--Day02--實戰經驗反饋

最近在做需要用R語言做數據清洗的項目&#xff0c;在網上看再多的技巧與語法&#xff0c;都不如在項目中實戰學習的快&#xff0c;下面是我通過實戰得來的經驗。 判斷Rstudio是否卡死 很多時候&#xff0c;我們在運行R語言代碼時&#xff0c;即使只是運行框選的幾行代碼&#…

How Sam‘s Club nudge customers into buying more

Here’s how Sam’s Club (or similar warehouse memberships) nudge customers into buying more: It’s a classic psychological strategy rooted in sunk cost fallacy and loss aversion. 1. Prepaid Membership Creates a “Sunk Cost” Once you’ve paid the annual …

OpenHarmony系統HDF驅動開發介紹(補充)

一、HDF驅動簡介 HDF&#xff08;Hardware Driver Foundation&#xff09;驅動框架&#xff0c;為驅動開發者提供驅動框架能力&#xff0c;包括驅動加載、驅動服務管理、驅動消息機制和配置管理。 簡單來說&#xff1a;HDF框架的驅動和Linux的驅動比較相似都是由配置文件和驅動…

自然語言處理 (NLP) 入門:NLTK 與 SpaCy 的初體驗

自然語言處理入門&#xff1a;NLTK 與 SpaCy 的初體驗 在當今數字化飛速發展的浪潮中&#xff0c;自然語言處理&#xff08;NLP&#xff09;已經成為了極具熱度的技術領域。自然語言處理的核心目標是讓計算機能夠理解、分析并生成人類語言&#xff0c;其應用場景極為廣泛&…

LLaVA:開源多模態大語言模型深度解析

一、基本介紹 1.1 項目背景與定位 LLaVA(Large Language and Vision Assistant)是由Haotian Liu等人開發的開源多模態大語言模型,旨在實現GPT-4級別的視覺-語言交互能力。該項目通過視覺指令微調技術,將預訓練的視覺編碼器與語言模型深度融合,在多個多模態基準測試中達到…

如何利用大模型對文章進行分段,提高向量搜索的準確性?

利用大模型對文章進行分段以提高向量搜索準確性,需結合文本語義理解、分塊策略優化以及向量表示技術。以下是系統性的解決方案: 一、分塊策略的核心原則 語義完整性優先 分塊需確保每個文本單元在語義上獨立且完整。研究表明,當分塊內容保持單一主題時,向量嵌入的語義表征能…

Java高頻面試之并發編程-17

volatile 和 synchronized 的區別 在 Java 并發編程中&#xff0c;volatile 和 synchronized 是兩種常用的同步機制&#xff0c;但它們的適用場景和底層原理有顯著差異。以下是兩者的詳細對比&#xff1a; 1. 核心功能對比 特性volatilesynchronized原子性不保證復合操作的原…

技術債務積累,如何進行有效管理

識別和評估技術債務、明確技術債務的優先級、制定系統的還債計劃、持續監控與預防技術債務產生是有效管理技術債務積累的重要策略。其中尤其要注重識別和評估技術債務&#xff0c;只有準確識別技術債務的種類和嚴重程度&#xff0c;才能制定出高效且有針對性的解決方案&#xf…

安裝windows版本的nacos

一、下載nacos安裝包 瀏覽器搜索nacos&#xff0c;進入nacos官網 https://nacos.io/docs/latest/overview/ 選擇下載windows版本的nacos 二、解壓縮 三、進入bin目錄&#xff0c;cmd命令行窗口 四、啟動nacos 查看日志 五、打開可視化頁面查看 以上&#xff0c;就是安裝wind…

小結:Android系統架構

https://developer.android.com/topic/architecture?hlzh-cn Android系統的架構&#xff0c;分為四個主要層次&#xff1a;應用程序層、應用框架層、庫和運行時層以及Linux內核層。&#xff1a; 1. 應用程序層&#xff08;Applications&#xff09; 功能&#xff1a;這一層包…