primitive 编写着色器材质

在这里插入图片描述

import { nextTick, onMounted, ref } from 'vue'
import * as Cesium from 'cesium'
import gsap from 'gsap'onMounted(() => { ... })// 1、创建矩形几何体,`Cesium.RectangleGeometry`:几何体,`Rectangle`:矩形
let rectGeometry = new Cesium.RectangleGeometry({rectangle: Cesium.Rectangle.fromDegrees(115, // 西边的经度20, // 南边维度135, // 东边经度30 // 北边维度),height: 0, // 矩形的高度:0,意味着,它紧贴地球表面`vertexFormat:顶点格式,这里使用`PerInstanceColorAppearance`的顶点格式,允许每个实例有独立的颜色`// vertexFormat: Cesium.PerInstanceColorAppearance.VERTEX_FORMAT`如果使用【Cesium.Material.fromType】这里的【vertexFormat】就必须用这个EllipsoidSurfaceAppearance`vertexFormat: Cesium.EllipsoidSurfaceAppearance.VERTEX_FORMAT
})// 2、创建几何体实例,`Cesium.GeometryInstance`:几何体实例
let instance = new Cesium.GeometryInstance({id: 'redRect',geometry: rectGeometry, // 将,矩形几何体`rectGeometry`,赋给实例// 定义实例的属性attributes: {// 设置颜色为红色,透明度为0.5color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.RED.withAlpha(0.5))}
})let rectGeometry_1 = new Cesium.RectangleGeometry({rectangle: Cesium.Rectangle.fromDegrees(140, // 西边的经度20, // 南边的纬度160, // 东边的经度30 // 北边的纬度),height: 0 // 矩形的高度:0,意味着,它紧贴地球表面
})
let instance_1 = new Cesium.GeometryInstance({id: 'blueRect',geometry: rectGeometry_1,attributes: {color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.BLUE.withAlpha(0.5))},vertexFormat: Cesium.EllipsoidSurfaceAppearance.VERTEX_FORMAT
})// 3、设置外观
let material_1 = new Cesium.Material({fabric: {type: 'Color',uniforms: {color: new Cesium.Color(1.0, 0.0, 0.0, 0.5)}}
})
let material_1 = new Cesium.Material({fabric: {type: 'Image',uniforms: {image: '../public/texture/logo.png'}}
})
console.log('material_1=', material_1)
console.log('material_1=', material_1.shaderSource)`【编写着色器材质】`
let material_1 = new Cesium.Material({``fabric`属性,是Cesium材质的核心,它允许你使用GLSL(OpenGL Shading Language)代码来自定义材质的行为】`fabric: {uniforms: {uTime: 0},// source:GLSL源代码source: `// czm_getMaterial(), 是GLSL函数的开始, 是Cesium材质系统的核心czm_material czm_getMaterial(czm_materialInput materialInput){// 调用 czm_getDefaultMaterial 函数, 初始化为Cesium的默认材质, 这允许你在默认材质的基础上进行修改czm_material material = czm_getDefaultMaterial(materialInput); // 官方默认// ----------- 自定义内容-start -----------// 效果一// 将材质的, 漫反射颜色, 设置为红色(RGB: 1.0, 0.0, 0.0), 这意味着对象将显示为红色// material.diffuse = vec3(1.0, 0.0, 0.0);// 效果二: materialInput.st ,是一个包含纹理坐标的二维向量// material.diffuse = vec3(materialInput.st, 0.0);// 效果三material.diffuse = vec3(materialInput.st+uTime, 0.0);// 效果四:条纹效果// float strength = mod((materialInput.st.s+uTime) * 10.0, 1.0); // 加减的作用:调整方向// float strength = mod((materialInput.st.s-uTime)*10.0, 1.0);// float strength = mod((materialInput.st.t-uTime)*10.0, 1.0);// material.diffuse = vec3(strength, 0.0, 0.0);// ----------- 自定义内容-end -----------return material; // 官方默认}`}
})gsap.to(material_1.uniforms, {uTime: 1,duration: 2,repeat: -1,ease: 'linear'
})``EllipsoidSurfaceAppearance`:设置,几何体都是与地球的椭球体平行,假定,几何体 与 地球的椭球体 平行,就可以,在计算大量顶点属性的时候节省内存。`
let appearance = new Cesium.EllipsoidSurfaceAppearance({material: material_1,aboveGround: true, // true:几何体将渲染在地面之上;false:几何体可能部分或全部嵌入地面以下translucent: true
})// 4、创建图元:`Cesium.Primitive`:创建一个图元,它是Cesium中用于渲染的最基本单位 `
let primitive = new Cesium.Primitive({geometryInstances: [instance, instance_1], // 将之前创建的几何体实例赋给图元appearance: appearance, // 将之前创建的外观赋给图元show: true
})nextTick(() => {setView()// 5、添加到Viewerviewer.value.scene.primitives.add(primitive)
})

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

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

相关文章

提供的 IP 地址 10.0.0.5 和子网掩码位 /26 来计算相关的网络信息

网络和IP地址计算器 https://www.sojson.com/convert/subnetmask.html提供的 IP 地址 10.0.0.5 和子网掩码位 /26 来计算相关的网络信息。 子网掩码转换 子网掩码 /26 的含义二进制表示:/26 表示前 26 位是网络部分,剩下的 6 位是主机部分。对应的子网掩码为 255…

Linux 服务器挖矿木马防护实战:快速切断、清理与加固20250114

Linux 服务器挖矿木马防护实战:快速切断、清理与加固 引言 挖矿木马作为一种常见的恶意软件,对服务器资源和安全构成严重威胁。据安全机构统计,2023 年全球约 45%的 Linux 服务器遭受过挖矿木马攻击,平均每台被感染服务器每月造…

6.1 MySQL数字函数和条件函数

以前我们在课程中使用过一些mysql的内置函数,比如说四舍五入的round函数,做日期计算的data, datediff函数等等。那么本次课程咱们就来系统的学习一下mysql的这些内置函数,我们使用编程语言写程序的时候,通常会把某一项业务功能封装…

【如何从0到1设计测试用例使用Fiddler完成弱网测试】

🌈个人主页:努力学编程’ ⛅个人推荐: c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 ⭐⭐⭐测试用…

Oracle EBS GL定期盘存WIP日记账无法过账数据修复

系统环境 RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.6 问题症状 用户反映来源为“定期盘存”和类别为“WIP”的日记账无法过账,标准日记账的界面上的过账按钮灰色不可用。但是,在超级用户职责下,该日记账又可以过账,细心检查发现该业务实体下有二个公司段值15100和…

【Axure视频教程】中继器表格——拖动排序

今天教大家在Axure用中继器制作拖动排序效果的原型模板,我们可以通过拖动的方式,将对应的行摆放到任意位置,效果如下图所示: 这个原型模板是用中继器制作的,所以使用也很简单,只需要在中继器表格里填写对应…

python学opencv|读取图像(三十一)缩放图像的三种方法

【1】引言 前序学习进程中,我们至少掌握了两种方法,可以实现对图像实现缩放。 第一种方法是调用cv2.resize()函数实现,相关学习链接为: python学opencv|读取图像(三)放大和缩小图像_python opencv 读取图…

Elasticsearch:使用全文搜索在 ES|QL 中进行过滤 - 8.17

8.17 在 ES|QL 中引入了 match 和 qstr 函数,可用于执行全文过滤。本文介绍了它们的作用、使用方法、与现有文本过滤方法的区别、当前的限制以及未来的改进。 ES|QL 现在包含全文函数,可用于使用文本查询过滤数据。我们将回顾可用的文本过滤方法&#xf…

Java 0114学习总结

1.如何解决线程安全问题 当多个线程共享一个资源时,则可能出现线程安全问题。java中解决线程安全的方式有三种: ①同步代码快 ②同步方法 ③Lock锁 1.1同步代码块 synchronized(锁对象){ 需要同步的代码。 } ①synchronized 同步的意思; ②锁…

【Unity-Animator】通过 StateMachineBehaviour 实现回调

StateMachineBehaviour 简介 StateMachineBehaviour是一个基类,所有状态脚本都派生自该类。它可以在状态机进入、退出或更新状态时执行代码,而无需编写自己的逻辑来测试和检测状态的变化。这使得开发者可以更方便地处理状态转换时的逻辑,例…

解决 VSCode 调试时 Python 文件出现相对路径报错问题‘FileNotFoundError’

文章目录 1. 问题描述2. 解决方法 1. 问题描述 在使用 VSCode 进行 Python 开发时,遇到一个的问题:在调试模式下,程序无法读取文件或路径,导致File Not Found Error 错误。然而,当不使用调试模式而是直接运行 Python 文…

OpenCV的TIF红外可见光融合算法

一、简介 首先TIF是Two-Scale Image Fusion的缩写,论文《Two-Scale Image Fusion of Infrared and Visible Images Using Saliency Detection (TIF)》,作者在论文中提到TIF算法主要通过以下三个步骤实现融合: 图像分解,图像分解使…

scrapy爬取图片

scrapy 爬取图片 环境准备 python3.10scrapy pillowpycharm 简要介绍scrapy Scrapy 是一个开源的 Python 爬虫框架,专为爬取网页数据和进行 Web 抓取而设计。它的主要特点包括: 高效的抓取性能:Scrapy 采用了异步机制,能够高效…

Sentaurus TCAD学习笔记:transform指令

目录 一、transform指令简介二、transform指令的实现1.cut指令2.flip指令3.rotate指令4.stretch指令5.translate指令6.reflect指令 三、transform指令示例 一、transform指令简介 在Sentaurus中,如果需要对器件进行翻转、平移等操作,可以通过transform指…

国内源快速在线安装qt5.15以上版本。(10min安装好)(图文教程)

参考文章:Qt6安装教程——国内源-CSDN博客 1、在国内源上下载qt在线安装工具 NJU Mirror 2、 将下载好的在线安装工具,放到C盘根目录, 2.1 打开windows Powershell(WinX),下边那个最好。 输入两条指令&a…

LSA更新、撤销

LSA的新旧判断&#xff1a; 1.seq&#xff0c;值越大越优先 2.chksum&#xff0c;值越大越优先 3.age&#xff0c;本地的LSA age和收到的LSA age作比较 如果差值<900s&#xff0c;认为age一致&#xff0c;保留本地的&#xff1a;我本地有一条LSA是100 你给的是400 差值小于…

istio-proxy oom问题排查步骤

1. 查看cluster数量 cluster数量太多会导致istio-proxy占用比较大的内存&#xff0c;此时需检查是否dr资源的host设置有配置为* 2. 查看链路数据采样率 若采样率设置过高&#xff0c;在压测时需要很大的内存来维护链路数据。可以调低采样率或增大istio-proxy内存。 检查iop中…

nexus搭建maven私服

说到maven私服每个公司都有&#xff0c;比如我上一篇文章介绍的自定义日志starter&#xff0c;就可以上传到maven私服供大家使用&#xff0c;每次更新只需deploy一下就行&#xff0c;以下就是本人搭建私服的步骤 使用docker安装nexus #拉取镜像 docker pull sonatype/nexus3:…

【声音场景分类--论文阅读】

1.基于小波时频图特征在声音场景分类 基于小波时频图特征在声音场景分类任务中的表现 2.增强增强高效音频分类网络 https://arxiv.org/pdf/2204.11479v5 https://github.com/Alibaba-MIIL/AudioClassfication 音频分类网络如图4所示。在此阶段&#xff0c;主要重点是建立一…

基于springboot果蔬供应链信息管理平台

基于Spring Boot的果蔬供应链信息管理平台是一种集成了先进信息技术和果蔬供应链管理理念的综合性系统。 一、背景与意义 随着人们生活水平的提高和对健康饮食的重视&#xff0c;果蔬市场需求不断增长。然而&#xff0c;果蔬供应链涉及多个环节&#xff0c;包括种植、采摘、加…