Cesium Vue(六)— 材质(Material)

1. 设置entity材质

  • 添加棋盘纹理材质

    // 棋盘纹理
    let material = new Cesium.CheckerboardMaterialProperty({
    evenColor: Cesium.Color.RED,
    oddColor: Cesium.Color.YELLOW,
    repeat: new Cesium.Cartesian2(2, 2),
    });
    
  • 添加条纹纹理材质

    // 条纹纹理
    let material = new Cesium.StripeMaterialProperty({
    evenColor: Cesium.Color.WHITE,
    oddColor: Cesium.Color.YELLOW,repeat: 8,
    });
    
  • 添加网格纹理材质

    // 网格纹理
    let material = new Cesium.GridMaterialProperty({
    color: Cesium.Color.YELLOW,
    cellAlpha: 0.2,
    lineCount: new Cesium.Cartesian2(4, 4),
    lineThickness: new Cesium.Cartesian2(4.0, 4.0),
    });
    

    请添加图片描述

  • 添加虚线材质

    // 设置虚线材质
    let material = new Cesium.PolylineDashMaterialProperty({dashLength: 30,color: Cesium.Color.RED,
    });
    
  • 设置箭头材质

    let material = new Cesium.PolylineArrowMaterialProperty(Cesium.Color.RED);
    
  • 设置发光飞线效果

    let material = new Cesium.PolylineGlowMaterialProperty({// 设置发光程度glowPower: 0.8,// 尾椎缩小程度taperPower: 0.7,color: Cesium.Color.RED,
    });
    

2. 编写着色器自定义材质

// 编写着色器修改材质// https://cesium.com/downloads/cesiumjs/releases/b28/Documentation/let material1 = new Cesium.Material({fabric: {uniforms: {uTime: 0,},source: `czm_material czm_getMaterial(czm_materialInput materialInput){// 生成默认的基础材质czm_material material = czm_getDefaultMaterial(materialInput);// material.diffuse = vec3(materialInput.st+uTime, 0.0);float strength = mod((materialInput.s-uTime) * 10.0, 1.0);material.diffuse = vec3(strength, 0.0, 0.0);return material;}`,},});//添加补间动画gsap.to(material1.uniforms, {uTime: 1,duration: 2,repeat: -1,ease: "linear",});// 图元let primitive = new Cesium.Primitive({geometryInstances: [instance, instance2],appearance: appearance,show: true,});// 添加到viewerviewer.scene.primitives.add(primitive);

3. Appearance编写着色器修改外观

 let appearance = new Cesium.EllipsoidSurfaceAppearance({fragmentShaderSource: `in vec3 v_positionMC;in vec3 v_positionEC;in vec2 v_st;uniform float uTime;void main(void){czm_materialInput materialInput;out_FragColor = vec4(v_st,uTime, 1.0);}`,});console.log(appearance);appearance.uniforms = {uTime: 0,};gsap.to(appearance.uniforms, {uTime: 1,duration: 2,repeat: -1,yoyo: true,ease: "linear",});// 04-图元let primitive = new Cesium.Primitive({geometryInstances: [instance, instance2],appearance: appearance,});

4. 自定义materialProperty材质

//创建自定义材质class CustomMaterialPropery {constructor() {this.definitionChanged = new Cesium.Event();Cesium.Material._materialCache.addMaterial("CustomMaterial", {fabric: {type: "CustomMaterial",uniforms: {uTime: 0,},source: `czm_material czm_getMaterial(czm_materialInput materialInput){// 生成默认的基础材质czm_material material = czm_getDefaultMaterial(materialInput);material.diffuse = vec3(materialInput.st, uTime);return material;}`,},});this.params = {uTime: 0,};gsap.to(this.params, {uTime: 1,duration: 2,repeat: -1,yoyo: true,});}getType() {// 返回材质类型return "CustomMaterial";}getValue(time, result) {result.uTime = this.params.uTime;// 返回材质值return result;}}let material = new CustomMaterialPropery();

请添加图片描述

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

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

相关文章

Java利用反射和读取xml实现迷你容器

由于需要框架能实现多态,达到控制反转解耦。所以容器还是需要的,容器的存在可以简化对象获取工作,但是容器也不是万能的。合理使用即可,Spring对我来说太庞大了,用不着,为此给框架写一个迷你版容器。 容器…

Qt中Json的操作

在 Json的两种格式中介绍了Json的格式以及应用场景。由于这种数据格式与语言无关,下面介绍一下Json在Qt中的使用。 从Qt 5.0开始提供了对Json的支持,我们可以直接使用Qt提供的Json类进行数据的组织和解析。相关的类常用的主要有四个,具体如下: Json类介绍 QJsonDocument |…

【vSphere 8 自签名证书】企业 CA 签名证书替换 vSphere Machine SSL 证书Ⅰ—— 生成 CSR

目录 替换拓扑图证书关系示意图说明 & 关联博文 1. 默认证书截图2. 使用certificate-manager生成CSR2.1 创建存放CSR的目录2.2 记录PNID和IP2.3 生成CSR2.4 验证CSR 参考资料 替换拓扑图 证书关系示意图 默认情况下,VMCA 与 Machine SSL的关系是 本系列博文要…

UE5--物体卡片与材质入门

参考资料: 《Unreal Engine5 入门到精通》--左央 虚幻引擎5.2文档:https://docs.unrealengine.com/5.2/zh-CN/ 前言: 跟着左央老师的《Unreal Engine5 入门到精通》学习制作AI版胡闹厨房,把学习过程与学习到的东西归纳总结起来。 …

【网络协议】聊聊网关 NAT机制

再宿舍的时候,其实只能通过局域网进行处理,但是如果接入互联网,一般是配置路由器当然还有网关。 MAC头和IP头的细节 一旦配置了IP地址和网关,就可以制定目标地址进行访问。 MAC头主要信息目标和源MAC地址,以及协议类…

【试题040】多个逻辑或例题2

1.题目:设int n0;,执行表达式n ||(n-1) ||(n0)||(n1)||(n2)后n的值是 ? 2.代码解析: 逻辑或 || 运算符是一个短路运算符,它从左到右依次计算表达式,如果遇到一个为真(非零)的值&am…

uCOSIII实时操作系统 十 事件标志组

目录 事件标志组: 事件标志组API函数: 创建事件标志组: 等待事件标志组: 向事件标志组发送标志: 事件标志组实验: 事件标志组: 有时候一个任务可能需要和多个事件同步这个时候就需要使用事…

39.克鲁斯卡尔(Kruskal)算法

一言 已知n个顶点,选n-1条最短的边,不可成环。 概述 克鲁斯卡尔(Kruskal)算法是用来求加权连通图的最小生成树的算法。其基本思想是按照权值从小到大的顺序选择n-1条边,保证这n-1条边不构成回路。 这就要求要首先构…

一百九十一、Flume——Flume配置文件各参数含义(持续完善中)

一、目的 在实际项目的开发过程中,不同Kafka主题的数据规模、数据频率,需要配置不同的Flume参数,而这一切的调试、配置工作,都要建立在对Flume配置文件各参数含义的基础上 二、Flume各参数及其含义 (一)…

集成学习方法(随机森林和AdaBoost)

释义 集成学习很好的避免了单一学习模型带来的过拟合问题 根据个体学习器的生成方式,目前的集成学习方法大致可分为两大类: Bagging(个体学习器间不存在强依赖关系、可同时生成的并行化方法) 流行版本:随机森林(random forest)Boosting(个体…

springboot缓存篇之mybatis一级缓存和二级缓存

前言 相信很多人都用过mybatis,这篇文章主要是介绍mybatis的缓存,了解一下mybatis缓存是如何实现,以及它在实际中的应用 一级缓存 什么是mybatis一级缓存?我们先看一个例子: GetMapping("/list") public…

【Mysql】B+树索引的使用(七)

前言 每个索引都对应一棵 B 树, B 树分为多层,最下边一层是叶子节点,其余的是内节点(非叶子节点)。所有用户记录都存储在 B 树的叶子节点,所有目录项记录都存储在内节点。 InnoDB 存储引擎会自动为主键&am…

Node学习笔记之包管理工具

一、概念介绍 1.1 包是什么 『包』英文单词是package ,代表了一组特定功能的源码集合 1.2 包管理工具 管理『包』的应用软件,可以对「包」进行 下载安装 , 更新 , 删除 , 上传 等操作 借助包管理工具,可…

推理引擎之模型压缩浅析

目录 前言1. 模型压缩架构和流程介绍2. 低比特量化原理2.1 量化基础介绍2.2 量化方法2.3 量化算法原理2.4 讨论 3. 感知量化训练QAT原理3.1 QAT原理3.2 量化算子插入3.3 QAT训练流程3.4 QAT衍生研究3.5 讨论 4. 训练后量化PTQ4.1 动态PTQ4.2 静态PTQ4.3 KL散度实现静态PTQ4.4 量…

最详细STM32,cubeMX 定时器

这篇文章将详细介绍 STM32,cubeMX 定时器的配置和使用。 文章目录 前言一、定时器基础知识二、cubeMX 配置三、定时时长四、自动生成代码讲解五、实验程序总结 前言 实验开发板:STM32F103C8T6。所需软件:keil5 , cubeMX 。实验目的&#xff…

无人机UAV目标检测与跟踪(代码+数据)

前言 近年来,随着无人机的自主性、灵活性和广泛的应用领域,它们在广泛的消费通讯和网络领域迅速发展。无人机应用提供了可能的民用和公共领域应用,其中可以使用单个或多个无人机。与此同时,我们也需要意识到无人机侵入对空域安全…

牛客:NC59 矩阵的最小路径和

牛客:NC59 矩阵的最小路径和 文章目录 牛客:NC59 矩阵的最小路径和题目描述题解思路题解代码 题目描述 题解思路 动态规划,递推公式:matrix[i][j] min(matrix[i-1][j], matrix[i][j-1]) 题解代码 func minPathSum( matrix [][…

【数据科学赛】2023全球智能汽车AI挑战赛 #¥95000 #LLM文档问答 #视频理解

CompHub[1] 最新的比赛会第一时间在群里通知,欢迎加群交流比赛经验!(公众号回复“加群”即可) 以下内容由AI辅助生成,可能存在错误,可进入比赛主页[2]查看更多(文末阅读原文) 比赛主办方 吉利汽车集团、阿…

【C++】:类和对象(中)之拷贝构造函数+赋值运算符重载

拷贝构造函数 概念 在现实生活中,可能存在一个与你一样的自己,我们称其为双胞胎 那在创建对象时,可否创建一个与已存在对象一某一样的新对象呢? 拷贝构造函数:只有单个形参,该形参是对本类类型对象的引用…

FPGA的斐波那契数列Fibonacci设计verilog,代码和视频

名称:斐波那契数列Fibonacci设计verilog 软件:Quartus 语言:Verilog 代码功能: 设计一个产生斐波那契数列(也叫黄金分割数列)的硬件电路: 斐波那契数列中每个数为其相邻前两个数的和:即FNFN1FN2,(数列…