Cesium Fabric —— 材质JSON规范

Fabric 介绍

Fabric 是 Cesium 中用于描述材质的一种 JSON 规定。
材质表现了多边形、折线、椭圆等形状的外观。
使用 Fabric 和 GLSL,可以完全自定义材质

通过几何对象的 material 属性可以创建材质,这个属性是 Cesium.Material 对象。

可以这么用:

// 假设 polygon 是一个 primitive
polygon.appearance.material = Cesium.Material.fromType('color');

这就创建了一个只有颜色的材质,包括透明度的颜色。Cesium.Material.fromType() 方法是一个简写,完整的写法是:

polygon.appearance.material = new Cesium.Material({fabric: {type: 'Color' // 大写}
})

每一个 Material 都可以有 0 ~ N 个 uniform,这个参数在创建时指定,也可以在渲染后修改。例如,color 类型的 Material 就有格式为 rgba 的颜色 uniform:

polygon.appearance.material = new Cesium.Material({fabric: {type: 'Color',uniforms: {color: new Cesium.Color(1.0, 0.0, 0.0, 0.5)}}
})// 修改颜色
polygon.appearance.material.uniforms.color = Cesium.Color.WHITE

内置材质(23种)

Cesium 有几个内置的材质。列举两个比较常用的

材质类型描述
type: ‘Color’一个简单的颜色,包括透明通道
type: ‘Image’jpg 或 png 贴图类型的材质

所有的内置材质可以简单地使用 Cesium.Material.fromType() 方法创建:

polygon.appearance.material = Cesium.Material.fromType('Image')
polygon.appearance.material.uniforms.image = 'image.png'

或者用全写法:

polygon.appearance.material = new Cesium.Material({fabric: {type: 'Image',uniforms: {image: 'image.png'}}
})

机器生成的规律纹理

材质类型描述
type: ‘Checkerboard’国际象棋格子
type: ‘Stripe’竖条纹旗帜
type: ‘Dot’行列点阵
type: ‘Grid’线状网格,显示一些网状结构的图形

基础材质

材质类型描述
type: ‘DiffuseMap’漫反射贴图,即最常见的贴图,通常是 rgb 三个颜色
type: ‘SpecularMap’单通道贴图,表示的是入射光强度贴图
type: ‘AlphaMap’单通道的不透明度贴图
type: ‘NormalMap’三通道贴图,表示的是法线贴图
type: ‘BumpMap’单通道的凹凸贴图
type: ‘EmissionMap’三通道的自发光贴图

折线材质

材质类型描述
type: ‘PolylineArrow’箭头线,终点在折线末端
type: ‘PolylineGlow’发光线
type: ‘PolylineOutline’描边线

Misc 材质

材质类型描述
type: ‘Water’水面贴图,看起来有水波动效
type: ‘RimLighting’发边缘会比较亮

自定义材质

使用 fabric 对象 + GLSL 代码和其他素材,就可以创建材质。

如果一个材质不想被复用,那么就不要指定它的 type 属性。

let fabric = {// ...
}polygon.appearance.material = new Cesium.Material({fabric: fabric
})

当 fabric 对象中的 type 属性之前是没有指定过的,那么在第一次调用 new Cesium.Material() 时,这个新的 fabric 材质将被缓存,随后再次 new Material 或 Material.fromType() 时将从缓存中取用。

let fabric = {type : 'MyNewMaterial',// ...其他 fabric JSON 的属性
}
polygon.appearance.material = new Cesium.Material({fabric : fabric
});
// ... 然后在另一处需要这个 fabric
anotherPolygon..appearance.material = Material.fromType('MyNewMaterial');

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

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

相关文章

RankLLM:RAG架构下通过重排序实现精准信息检索

一、前言 在检索增强生成(Retrieval-Augmented Generation, RAG)的框架下,重排序(Re-Rank)阶段扮演着至关重要的角色。该阶段的目标是对初步检索得到的大量文档进行再次筛选和排序,以确保生成阶段能够优先…

特征融合篇 | RTDETR引入基于内容引导的特征融合方法 | IEEE TIP 2024

本改进已集成到 RT-DETR-Magic 框架。 摘要—单幅图像去雾是一个具有挑战性的不适定问题,它从观察到的雾化图像中估计潜在的无雾图像。一些现有的基于深度学习的方法致力于通过增加卷积的深度或宽度来改善模型性能。卷积神经网络(CNN)结构的学习能力仍然未被充分探索。本文提…

一周年纪念

文章目录 机缘:命运之门收获---知识之心日常---灵魂之窗成就 — 自我之光憧憬 — 未来之路 机缘:命运之门 “人生是由一连串的选择组成,而真正的成长,往往始于最具挑战性的决定。” —— 这句话恰如其分地概括了我选择跨考计算机的…

移动点的函数

题目已经定义了一个点类Point&#xff0c;要求编写一个移动点的函数move&#xff0c;能完成满足main函数的调用&#xff0c;并完成点的移动。 函数说明&#xff1a; 完成move函数的编写。 裁判测试程序样例&#xff1a; #include<iostream> using namespace std; clas…

【C++】map set 底层刨析

文章目录 1. 红黑树的迭代器2. 改造红黑树3. map 的模拟实现4. set 的模拟实现 在 C STL 库中&#xff0c;map 与 set 的底层为红黑树&#xff0c;那么在不写冗余代码的情况下使用红黑树同时实现 map 与 set 便是本文的重点。 1. 红黑树的迭代器 迭代器的好处是可以方便遍历&…

数据结构--树和二叉树

树和二叉树 1.树概念及结构树的概念树的相关概念树的表示 2.二叉树概念及结构概念特殊的二叉树二叉树的性质 3.二叉树顺序结构及实现4.二叉树链式结构及实现二叉树的顺序结构二叉树的前&#xff0c;中&#xff0c;后序遍历层序遍历 1.树概念及结构 树的概念 树是一种非线性的…

C++初级---模板初阶

1.泛型编程 在C语言中&#xff0c;如果要实现一个通用的交换函数需要将不同类型的函数进行重载&#xff0c;让他们可以进行交换&#xff0c;但这样的函数仅仅只有类型不同&#xff0c;函数的复用率很低&#xff0c;而且只要有新类型出现&#xff0c;就需要写一个新的相对应的函…

SSL协议是什么?有什么作用?

SSL协议是一种让互联网上的数据传输变得更安全的技术。它的主要作用是&#xff1a; 保密性&#xff1a; 使用加密手段&#xff0c;让别人偷看不了你在网上发的信息&#xff08;比如密码、聊天内容、银行卡号等&#xff09;。完整性&#xff1a;防止你的信息在传输途中被偷偷修…

九州金榜|孩子叛逆,家长应该怎么办?

孩子是父母的宝贝&#xff0c;孩子快乐&#xff0c;作为父母就会快乐&#xff0c;每位家长都希望自己的孩子健康快乐长大。孩子在成长的过程中&#xff0c;随着年龄以及阅历的增长&#xff0c;都会出现叛逆&#xff0c;孩子出现叛逆&#xff0c;对于父母来说是一种挑战&#xf…

恶劣条件下GNSS定位的鲁棒统计

全球导航卫星系统&#xff08;GNSS&#xff09;作为定位信息的主要来源&#xff0c;在智慧工厂、智慧能源、智慧交通的未来应用中发挥着重要作用。此外&#xff0c;GNSS为电网或股市等关键应用提供定时同步功能。然而&#xff0c;GNSS的性能很容易因自然现象和信号反射而降低。…

JavaScript实现扁平数组与树结构的相互转换

扁平数组转为树结构 题目描述&#xff1a; 给定以下数据格式的扁平数组&#xff1a; const flatArray [{ id: 1, parentId: null, name: root1 },{ id: 2, parentId: 1, name: child1 },{ id: 3, parentId: 1, name: child2 },{ id: 4, parentId: 2, name: grandchild1 },{…

《LeetCode力扣练习》代码随想录——二叉树(合并二叉树---Java)

《LeetCode力扣练习》代码随想录——二叉树&#xff08;合并二叉树—Java&#xff09; 刷题思路来源于 代码随想录 617. 合并二叉树 二叉树-前序遍历 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode…

【THM】Exploit Vulnerabilities(利用漏洞)-

介绍 在这个房间里,我们将讨论一些识别漏洞的方法,并结合我们的研究技能来了解这些漏洞是如何被滥用的。 此外,您还会发现一些公开可用的资源,这些资源是您在执行漏洞研究和利用时的技能和工具的重要补充。然后,您将在房间的最后将所有这些应用到实际挑战中。 自动化与…

HTML5.Canvas简介

1. Canvas.getContext getContext(“2d”)是Canvas元素的方法&#xff0c;用于获取一个用于绘制2D图形的绘图上下文对象。在给定的代码中&#xff0c;首先通过getElementById方法获取id为"myCanvas"的Canvas元素&#xff0c;然后使用getContext(“2d”)方法获取该Ca…

STM3定时器输入捕获、超声波测距

1、超声波测距模块介绍 1、HC-SR04共四个引脚&#xff1a;VCC、GND、Trig、Echo&#xff0c;如下图 2、使用 1、通过gpio口向Trig引脚发送一个脉冲信号。 2、HC-SR04接收到脉冲信号后&#xff0c;就会向外发送一段超声波&#xff0c;模块会将echo拉高。 …

pandas 数据排序.sort_index()和.sort_values()使用教程

import pandas as pd df pd.DataFrame(……) 说明&#xff1a;以下“df”为DataFrame对象。 1. df. sort_values() 作用&#xff1a;既可以根据列数据&#xff0c;也可根据行数据排序。 注意&#xff1a;必须指定by参数&#xff0c;即必须指定哪几行或哪几列&#xff1b;无法…

rpm、yum和编译安装软件

一、rpm 1.rpm包管理工具 建立统一的数据库文件&#xff08;一张对应表将信息写入&#xff09; 详细记录软件包安装、卸载等变化信息&#xff0c;自动分析软件包依赖关系 2.rpm一般命令格式 bash-4.1.2-15.el6_4.x86_64.rpm bash&#xff08;shell软件名称&#xff09; …

STM32CubeIDE基础学习-定时器PWM实验

STM32CubeIDE基础学习-定时器PWM实验 文章目录 STM32CubeIDE基础学习-定时器PWM实验前言第1章 硬件介绍第2章 工程配置2.1 基础工程配置部分2.2 生成工程代码部分 第3章 代码编写3.1 查看PWM波3.2 设置单个比较值3.3 呼吸灯 第4章 实验现象总结 前言 在平时单片机开发时&#…

JQuery(一)---【JQuery简介、安装、初步使用、各种事件】

零.前言 在学习JQuery前&#xff0c;您需要具备以下知识&#xff1a; HTML相关知识(DOM)CSS相关知识JavaScript相关知识 一.JQuery 1.1JQuery简介 JQuery是一个JavaScript的“函数库”&#xff0c;不是JavaScript的一个框架&#xff0c;与“VUE、REACT”有本质区别&#x…

字符串匹配问题(strs)(栈)

字符串匹配问题(strs) 【题目描述】 字符串中只含有括号 (),[],<>,{},判断输入的字符串中括号是否匹配。如果括号有互相包含的形式&#xff0c;从内到外必须是<>,(),[],{}&#xff0c;例如。输入: [()] 输出:YES&#xff0c;而输入([])&#xff0c;([)]都应该输出…