Cesium Primitive报错:Appearance/Geometry mismatch

2023-10-23 08:40

本文主要是介绍Cesium Primitive报错:Appearance/Geometry mismatch,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Cesium 在用Primitive创建对象时报错:Appearance/Geometry mismatch

An error occurred while rendering.  Rendering has stopped.
DeveloperError: Appearance/Geometry mismatch.  The appearance requires vertex shader attribute input 'color', which was not computed as part of the Geometry.  Use the appearance's vertexFormat property when constructing the geometry.

错误的大致意思就是实体的顶点和材质不匹配,导致渲染出错;

解决方案:

①类似BoxOutlineGeometry这类几何,不能使用光照,需要将appearance中的flat属性设置为true,即关闭光照。

正常代码:

      // 创建boxOutline的几何实例let boxOutlineInstance = new Cesium.GeometryInstance({geometry: boxOutlineGeometry,modelMatrix: Cesium.Matrix4.multiplyByTranslation(Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(120, 40)),new Cesium.Cartesian3(0.0, 0.0, 1000.0),new Cesium.Matrix4()),id: "boxOutline",attributes: {color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.RED),},});// 创建图元let primitive = new Cesium.Primitive({geometryInstances: boxOutlineInstance,appearance: new Cesium.PerInstanceColorAppearance({flat: true,faceForward: true,translucent: false,closed: false,}),show: true,modelMatrix: Cesium.Matrix4.IDENTITY,vertexCacheOptimize: false,interleave: false,compressVertices: true,releaseGeometryInstances: true,allowPicking: true,cull: true,asynchronous: true,debugShowBoundingVolume: false,shadows: Cesium.ShadowMode.DISABLED,});viewer.scene.primitives.add(primitive);

②绘制Primitive实体时,几何图形的vertexFormat确定它是否可以与其他几何图形组合。两个几何图形不必是相同的类型,但它们需要匹配的顶点格式。我们可以理解成实体的vertexFormat需要与他的appearance定义的材质形式一致。

错误代码:

      let primitive = new Cesium.Primitive({geometryInstances: new Cesium.GeometryInstance({geometry: new Cesium.PolylineGeometry({positions: Cesium.Cartesian3.fromDegreesArray(positions),width: 3.0,vertexFormat: Cesium.PolylineColorAppearance.VERTEX_FORMAT,}),}),appearance: new Cesium.PolylineMaterialAppearance({flat: true,material: Cesium.Material.fromType(Cesium.Material.PolylineDashType, {color: Cesium.Color.CYAN, //线条颜色gapColor: Cesium.Color.TRANSPARENT, //间隔颜色dashLength: 20, //短划线长度}),}),});viewer.scene.primitives.add(primitive);

 正确代码:注意vertexFormat形式更改为PolylineMaterialAppearance

      let primitive = new Cesium.Primitive({geometryInstances: new Cesium.GeometryInstance({geometry: new Cesium.PolylineGeometry({positions: Cesium.Cartesian3.fromDegreesArray(positions),width: 3.0,vertexFormat: Cesium.PolylineMaterialAppearance.VERTEX_FORMAT,}),}),appearance: new Cesium.PolylineMaterialAppearance({material: Cesium.Material.fromType(Cesium.Material.PolylineDashType, {color: Cesium.Color.CYAN, //线条颜色gapColor: Cesium.Color.TRANSPARENT, //间隔颜色dashLength: 20, //短划线长度}),}),});viewer.scene.primitives.add(primitive);

这篇关于Cesium Primitive报错:Appearance/Geometry mismatch的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/266753

相关文章

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文

【Python报错已解决】AttributeError: ‘list‘ object has no attribute ‘text‘

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查属性名2.2 步骤二:访问列表元素的属性 三、其他解决方法四、总结 前言 在Python编程中,属性错误(At

DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed

DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed 文章目录 DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed问题解决办法 问题 使用 DBeaver 连接 MySQL 数据库的时候, 一直报错下面的错误 Public Key Retrieval is

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef‘ of undefined“

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef’ of undefined” 最近用vue做的一个界面,引入了一个子组件,在父组件中调用子组件的方法时,报错提示: [Vue warn]: Error in v-on handler: “TypeError: Cannot read property ‘methods

Vue3上传图片报错:Current request is not a multipart request

当你看到错误 "Current request is not a multipart request" 时,这通常意味着你的服务器或后端代码期望接收一个 multipart/form-data 类型的请求,但实际上并没有收到这样的请求。在使用 <el-upload> 组件时,如果你已经设置了 http-request 属性来自定义上传行为,并且遇到了这个错误,可能是因为你在发送请求时没有正确地设置

QT 编译报错:C3861: ‘tr‘ identifier not found

问题: QT 编译报错:C3861: ‘tr’ identifier not found 原因 使用tr的地方所在的类没有继承自 QObject 类 或者在不在某一类中, 解决方案 就直接用类名引用 :QObject::tr( )

笔记本电脑开机报错故障的原因及解决办法

笔记本电脑开机报错故障是指笔记本电脑开机自检时或启动操作系统前停止启动,在显示屏 出现一些错误提示的故障。   笔记本电脑开机报错故障的原因及解决办法   造成此类故障的原因一般是笔记本电脑在启动自检时,检测到硬件设备不能正常工作或在自 检通过后从硬盘启动时,出现硬盘的分区表损坏、硬盘主引导记录损坏、硬盘分区结束标志丢失 等故障,笔记本电脑出现相应的故障提示。   维修此类故障时

Allegro PCB--报错

1。 走线上打孔 问题:在走线上打的Via,我通过"Assign net to Via", 给与网络。成功后。 跑Tools\Database check\ Update all DRC(including batch), Via 网络又没有了 原因& 解决方法: VIA没有和走线完全重合 换个方法: 直接在线上打孔 或者走线change成shape, 或者用细导线把孔连到线路上。

python imshow报错怎么解决

实例如下所示: import matplotlib.pyplot as pltplt.imshow(img)#控制台打印出图像对象的信息,而图像没有显示 解决方法: #引入pylab解决import matplotlib.pyplot as pltimport pylabplt.imshow(img)pylab.show()

我成功在本地打开了Cesium啦!

1首先下载Node.js,我是跟着这篇下载的,https://zhuanlan.zhihu.com/p/77594251,不过这后面的我没弄对Cesium环境配置也没影响。 另外:我看其他推文说,在终端写node -v和npm-v查node和npm的版本可以检测node和npm是否下载成功。 2然后我在CesiumB站官号看的教学视频,跟着下载Cesium源代码。 Cesium基础入门1-零