cesium 自定义顶点属性

news2024/11/23 14:58:38

在这里插入图片描述

// 创建平面
    const planeGeometry = new Cesium.PlaneGeometry({
      vertexFormat: Cesium.VertexFormat.POSITION_AND_ST, // 位置和UV
    });

    const geometry = Cesium.PlaneGeometry.createGeometry(planeGeometry);

    // [3]-----[2]
    //  |       |
    // [0]-----[1]
    geometry.attributes.colors = new Cesium.GeometryAttribute({
      componentDatatype: Cesium.ComponentDatatype.FLOAT,
      componentsPerAttribute: 3,
      values: [
        1,0,0,
        0,1,0,
        1,1,0,
        0,0,1,
      ],
    });

    // 创建材质
    const material = new Cesium.Material({
      fabric: {
        uniforms: {
          // color2: new Cesium.Color(.0, 1.0, 0.0, 1.0),
          // image: "../../public/images/marker.png"
        },
        source: `
        czm_material czm_getMaterial(czm_materialInput materialInput){
          czm_material material = czm_getDefaultMaterial(materialInput);

          // vec2 st = materialInput.st;
          // vec4 colorImage = texture(image, st);

          // material.alpha = colorImage.a;
          // material.diffuse = colorImage.rgb;
          return material;
        }`
      },

    });

    const center = Cesium.Cartesian3.fromDegrees(106, 26, 10)
    const translateMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(center);

    const dimensions = new Cesium.Cartesian3(400.0, 400.0, 1.0);
    const scaleMatrix = Cesium.Matrix4.fromScale(dimensions);

    const modelMatrix = new Cesium.Matrix4();
    Cesium.Matrix4.multiply(translateMatrix, scaleMatrix, modelMatrix);

    const plane = new Cesium.Primitive({
      asynchronous: false,
      geometryInstances: new Cesium.GeometryInstance({
        geometry: geometry,
        attributes: {
          color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.BLUE)
        },
        modelMatrix
      }),
      appearance: new Cesium.MaterialAppearance({
        material: material,
        vertexShaderSource: `
          in vec3 position3DHigh;
          in vec3 position3DLow;
          in vec3 normal;
          in vec2 st;
          in float batchId;

          // instance attribute
          in vec4 color;

          // geometry attribute
          in vec4 colors;

          out vec3 v_positionEC;
          out vec3 v_normalEC;
          out vec2 v_st;
          out vec4 v_color;

          void main() {
            vec4 p = czm_computePosition();

            v_positionEC = (czm_modelViewRelativeToEye * p).xyz;
            v_normalEC = czm_normal * normal;
            v_st = st;
            v_color = colors;
            gl_Position = czm_modelViewProjectionRelativeToEye * p;
          }
        `,
        fragmentShaderSource: `
          in vec2 v_st;
          in vec4 v_color;

          void main() {
            out_FragColor = vec4(v_color.rgb, 1.);
          }
        `
      }),
      show: true,
    })
    viewer.scene.primitives.add(plane);

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

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

相关文章

Django 的国际化与本地化详解

概要 随着全球化的发展,为 Web 应用提供多语言支持变得日益重要。Django 作为一个功能强大的 Web 框架,提供了一套完整的国际化(i18n)和本地化(l10n)工具,使得开发多语言应用变得简单。本文将详…

Sui上TVL突破1.28亿美金,浅谈DeFi续创新高背后的基础知识

根据财富商业洞察研究,DeFi市场预计从2022年的555.8亿美元增长到2030年的3370.4亿美元。推动这一增长的活动包括对token的交易、借贷和借款,这通常是点对点的,无需传统金融机构的参与。随着Sui网络于今年五月份启动主网和其SUI token&#xf…

稳定扩散 img2img 的工作原理

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 3D数字孪生场景编辑器 在本教程中,我将介绍: 这种技术在实践中有用的几种方式当您提供输入图像时,模型内部实际发生的…

第二章 (导数与微分)

导数简介 路程与时间关系函数 就是 速度与时间关系函数 的 原函数。 路程与时间关系函数 求导 (或者叫导函数) —————求导—————> 就是 vt关系的导数 求导得到》导函数 导函数积分 得到 原函数 你一开始速度为0,然后速度不断…

绘图软件 OmniGraffle mac中文版特点说明

OmniGraffle mac是一款图形绘制和图表设计软件,主要面向 macOS 和 iOS 平台。它适用于用户创建流程图、组织结构图、原型设计、网站线框图、地图等各种类型的图形。该软件的界面直观,用户友好,让用户能够轻松地创建和编辑复杂的图形。 OmniGr…

计算图片中两个任意形状多边形相交部分的大小

一张图片中两个任意多边形相交的面积计算方法。本文参考https://blog.csdn.net/PanYHHH/article/details/110940428;加了一个简单的示例,也对代码做了一点清淅化。原博客中还有其他链接,是C代码,没有看原理,但以下代码…

漏洞复现--IP-guard flexpaper RCE

免责声明: 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

亚马逊、Shein、lazada自养号测评如何解决支付和环境问题?

年底旺季,平台风控都会大规模持续升级,针对风控升级如果测评环境没有进行相对应的更新可能会导致大批量砍单,或者F号,严重的店铺还会被关联。有人以为是支付卡的问题,也有人觉得是IP被关联了。其实他们讲的也没错&…

Vue computed 计算属性

1.计算属性的相关知识 概念 :基于现有的数据,计算出来的新属性。依赖数据的变化,自动重新计算。 语法: ① 声明在 computed 配置项 中,一个计算属性对应一个函数 ② 使用起来和普通属性一样使用 {{ 计算属性名 …

从搜索到社交,跨境电商独立站引流全攻略!

不少跨境电商卖家除了入驻电商平台外,还会搭建自己的独立站,独立站相对于其他平台,限制比较少,而且操作也是比较自由,但是也有卖家在做独立站的时候,不知道要怎么做引流。现在为卖家们分享独立站引流方法&a…

跟踪工作时间如何使企业节省资金?

企业主都希望自己的员工每天都为公司的利益而高效工作。 但随着公司的发展壮大,要了解每个人都在做什么、把时间花在哪就变得更加困难了。而不清楚员工每天在做什么可能会容易造成公司运营效率低下且浪费。 为了确保这种情况不会发生,企业主可以让员工…

2023年【汽车驾驶员(高级)】复审模拟考试及汽车驾驶员(高级)实操考试视频

题库来源:安全生产模拟考试一点通公众号小程序 汽车驾驶员(高级)复审模拟考试参考答案及汽车驾驶员(高级)考试试题解析是安全生产模拟考试一点通题库老师及汽车驾驶员(高级)操作证已考过的学员…

一起学docker系列之一为什么要学习docker--从混乱到协调:Docker在开发和运维中的崭露头角

目录 1 常见的开发场景2 保持环境一致性的传统做法3 Docker与传统容器虚拟机的比较3.1 虚拟化技术3.2 资源消耗3.3 启动时间3.4 管理和部署3.5 隔离3.6 移植性 4 Docker技术的优势5 结语 1 常见的开发场景 在软件开发中,开发人员和运维人员之间的合作是至关重要的。…

sqlserver查询时去除1900-01-01

在下图示例中“chk_date”字段在数据中显示的是默认时间,如何将这个时间在SQL查询时设为空? cast(nullif(a.chk_date,) as datetime) 确认日期 以上是我的方法。 select chk_date as 日期 from Ixa_payment_req 运行结果是:1900-01-01 00:0…

java导出excel思路

1、构建导出的数据模型, 这个模型可以自己画,也可以读取一个自己制作好的模板,根据模板填充数据,然后flush到一个新的excel文件。 1)、自己画 GetMapping("/exportTemplate") public void exportTemp…

交直流钳式电流探头的功能介绍

有三种常用技术可用于测量电流,包括串联电阻测量法(也称为分流电阻测量法)、电流互感器测量法和电流探头测量法。这些方法都要求被测电流通过测量传感器,因此它们属于侵入式测量技术。 电流探头是一种非侵入性技术,可以用来测量导线电流&…

Android面试官の小抄,可能是东半球最好的

面试官的小抄,Android面试&进阶一网打尽,让一部分人先学起来 背景 作为一名客户端开发者,能够明显的感觉到小程序这些年对原生市场带来的压迫感,比如现在的创业公司都是小程序探路,成熟了再推进客户端&#xff0…

管理类联考——数学——汇总篇——知识点突破——代数——函数、方程——记忆——一元二次函数

——一元二次函数——【图像→交点】 ——【 a x 2 b x c y ax^2bxcy ax2bxcy二次函数核心在于“图像”:整体可以由: 图像(形状,上下,交点) ⟹ \Longrightarrow ⟹ △ △ △ ⟹ \Longrightarrow ⟹ 抛…

青少年编程学习 等级考试 信奥赛NOI/蓝桥杯/NOC/GESP等比赛资料合集

一、博主愚见 在当今信息技术高速发展的时代,编程已经成为了一种必备的技能。随着社会对于科技人才的需求不断增加,青少年编程学习正逐渐成为一种趋势。为了更好地帮助青少年学习编程,提升他们的技能和素质,博主结合自身多年从事青…

景联文科技:驾驭数据浪潮,赋能AI产业——全球领先的数据标注解决方案供应商

根据IDC相关数据统计,全球数据量正在经历爆炸式增长,预计将从2016年的16.1ZB猛增至2025年的163ZB,其中大部分是非结构化数据,被直接利用,必须通过数据标注转化为AI可识别的格式,才能最大限度地发挥其应用价…