Cesium关于3Dtiles的细节分享

news2024/11/16 22:00:29

介绍

介绍一下Cesium中有关3dTiles的奇淫技巧,存在一些埋坑的地方,以下内容仅为自己摸索的细节和方法,仅供参考,若有更好的办法欢迎讨论

通用快速获取feature中包含的属性信息

有时候需要快速获得3dTiles中的feature中的属性信息,例如城市白膜的每一幢数据、或者BIM模型中每一层中的数据,此时直接调用该方法即可获取内部的数据
PS:这里有一个坑点,就是3dTilestFeature旧版本获取所有Property是叫getPropertyNames,但是现在最新版本1.99的文档中则改变为getPropertyIds

function printProperties(feature) {
console.log("Properties:",feature);
const propertyIds = feature.getPropertyIds();
const length = propertyIds.length;
for (let i = 0; i < length; ++i) {
    const propertyId = propertyIds[i];
    console.log(
    `  ${propertyId}: ${feature.getProperty(propertyId)}`
    );
}
}

调整颜色透明度

3dTiles的颜色与透明度同样可以进行调整,如下代码所示
这里需要注意的是条件的引号双引号和单引号要区分开,不然容易出现问题(此处踩过坑)
其次需要注意的是透明度,只需要再颜色后面加上逗号即可,颜色也可以通过Cesium.Color.fromCssColorString来传值,设置自己需要的颜色

  Tileset.style = new Cesium.Cesium3DTileStyle({
    color: {
      conditions: [
        [
          "${feature['building']} === 'apartments' || ${feature['building']} === 'residential'",
          "color('cyan', 0.9)",
        ],
        [true, "color('white')"],
      ],
    },
  });

3dTiles中的包围球和包围体

先看一下数据结构,如下图所示


包围球和包围体的中心都是一致的,一般来说就是整个包围体的中心(中间的位置)

包围体即最小外接矩阵如下图所示

如需要计算包围体的顶面的其中一个点如下代码所示,若要计算底面的点亦同理,此处不再赘述
这里的逻辑点在于矩阵与向量的几何意义,此处也不赘述,因为这里一旦展开就有非常多的东西可以讲了

const boundingVolumePoint = new Cesium.Cartesian3(1, 1, 1);
//相当于把起始点根据当前包围体的位置做了一次线性变换
const point = Cesium.Matrix3.multiplyByVector(
boundingVolume.halfAxes,
boundingVolumePoint,
new Cesium.Cartesian3()
);
const topFacePoint = Cesium.Cartesian3.add(boundingVolume.center, point, new Cesium.Cartesian3());

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

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

相关文章

deb文件如何安装到iphone方法分享

Cydia或同类APT管理软件在线安装 Cydia或同类APT管理软件在线安装,这个是最佳的安装方式,因为通常无需考虑依赖关系,但缺点是对网络的要求比较高;命令行中以dpkg-iXXX.deb的形式安装,好处是可以以通配符一次性安装多个deb,而且也可以直接看到脚本的运行状况和安装成功/失…

执行命令行程序测试自动化

这几天有一个小工具需要做测试&#xff0c;是一个命令行工具&#xff0c;这个命令行工具有点类似mdbg等命令行工具&#xff0c;即程序运行后&#xff0c;在命令行等待用户敲入的命令&#xff0c;处理命令并显示结果&#xff0c;再继续等待用户敲入新的命令。 原来的测试用例都…

Vue实现自动化平台(五)--用例编辑页面

上一章&#xff1a;Vue实现自动化平台&#xff08;四&#xff09;--接口管理页面的实现_做测试的喵酱的博客-CSDN博客 github地址&#xff1a;https://github.com/18713341733/vuemiaotest 这个目前只是用来练手的&#xff0c;项目还没成型。等以后我写完了&#xff0c;再更…

公网远程访问局域网SQL Server数据库【无公网IP内网穿透】

目录 1.前言 2.本地安装和设置SQL Server 2.1 SQL Server下载 2.2 SQL Server本地连接测试 2.3 Cpolar内网穿透的下载和安装 2.3 Cpolar内网穿透的注册 3.本地网页发布 3.1 Cpolar云端设置 3.2 Cpolar本地设置 4.公网访问测试 5.结语 转发自CSDN远程穿透的文章&…

不用但一定要懂 ---- iOS 之 响应链、传递链 与 手势识别

iOS 事件的主要由&#xff1a;响应连 和 传递链 构成。一般事件先通过传递链&#xff0c;传递下去。响应链&#xff0c;如果上层不能响应&#xff0c;那么一层一层通过响应链找到能响应的UIResponse。 响应链&#xff1a;由最基础的view向系统传递&#xff0c;first view ->…

c/c++:原码,反码,补码和常见的数据类型取值范围,溢出

c/c&#xff1a;原码&#xff0c;反码&#xff0c;补码和常见的数据类型取值范围&#xff0c;溢出 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;此时学会c的话&#xff0c; 我所知道的周边的会c的同学&#xff0c;可手握…

前脚我的 GPT4 被封,后脚收到了文心一言的邀请账号

大家好&#xff0c;我是二哥呀。 一早醒来&#xff0c;我的 ChatGPT Plus 账号就惨遭封禁&#xff0c;很不幸&#xff0c;我刚冲的 Plus 会员&#xff0c;用了不到一周的时间&#xff08;&#x1f62d;&#xff09;。 我没用亚洲的IP&#xff0c;所以网上传的那些不使用亚洲IP…

vuex中的 mapState, mapMutations

vuex中的 mapState&#xff0c; mapMutations Start 今天使用vuex的过程中&#xff0c;遇到 mapState&#xff0c; mapMutations 这么两个函数&#xff0c;今天学习一下这两个函数。 本文介绍的vuex基于 vuex3.0 1. 官方文档说明 1.1 mapState 官方解释 点击这里&#xff1…

深入理解IP地址

我们在浏览器中直接输入IP地址就可以访问某一个神秘的网站&#xff0c;那么这个IP地址是如何划分的呢&#xff1f; IP&#xff0c;英文全写为Internet Protocol&#xff0c;指TCP/IP网络体系中的网际互联协议&#xff0c;工作在OSI模型的网络层(简单了解即可)。 更多内容欢迎访…

数据分析之Matplotilb数据可视化

文章目录1.Matplotilb 基础plt.show()函数plt.plot()函数基本用法例子坐标轴显示的范围传入Numpy数组传入多组数据线条属性使用plt.plot()的返回值来设置线条属性plt.setp()修改线条性质子图plt. subplot (numrows, numcols,fignum)形式3.电影数据绘图(1)绘制每个国家或地区的电…

Python的输入与输出

✅作者简介&#xff1a;CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1&#x1f3c6; &#x1f4c3;个人主页&#xff1a;hacker707的csdn博客 &#x1f525;系列专栏&#xff1a;零基础入门篇 &#x1f4ac;个人格言&#xff1a;不断的翻越一座…

力扣-刷题记录

189. 轮转数组 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 力扣https://leetcode.cn/problems/rotate-array/description/ void rotate(int* nums, int numsSize, int k){if(k > numsSize){k % numsSize;}if(k0){f…

GlusterFS(GFS)分布式文件系统

目录 一.文件系统简介 1.文件系统的组成 2.文件系统的作用 3.文件系统的挂载使用 二.GlusterFS概述 1.GlusterFS是什么&#xff1f; 2.GlusterFS的特点 3.GlusterFS术语介绍 3.1 Brick&#xff08;存储块&#xff09; 3.2 Volume&#xff08;逻辑卷&#xff09; 3.3…

Qt Quick - 菜单综述

Qt Quick - 菜单综述使用总结一、概述二、菜单控件三、MenuBar 控件一、概述 菜单这一类&#xff0c;给我们提供了很多的便捷封住。 控件名功能Menu弹出式菜单&#xff0c;可以用作上下文菜单或弹出式菜单&#xff0c;也就是可以单独菜单上用&#xff0c;或者在鼠标右键&…

新能源汽车的充电、电池包的组成、充电的设备

一、新能源汽车的电池包 1、电动汽车电池包的组成 电动汽车的电池包主要由电池单体、模组构成。 电池单体指的是单个独立的锂电池&#xff0c;将多个电池单体组合在一起就成了模组&#xff0c;再把多个模组组合起来最终构成电池包。 不过这里有个特例&#xff0c;那就是比亚…

数据挖掘(2.4)--数据归约和变换

目录 1.数据归约 1.1数据立方体聚合 1.2特征选择 1.3数据压缩 1.4其他数据归约方法 回归分析 直方图 聚类 简单随机采样&#xff08;SAS&#xff09; 2.数据离散化 2.1基于信息增益的离散化 2.2基于卡方检验的离散化 2.3基于自然分区的离散化 3.概念层次生成 1.数…

3款免费好用的电脑录屏工具

案例&#xff1a;电脑录屏工具哪款免费又好用&#xff1f; “我想要挑选一款适合自己的好用的电脑录屏软件&#xff0c;但是我尝试了很多款录屏软件结果都不尽人意。免费版的软件功能少&#xff0c;录制效果差&#xff0c;想要高级功能需要付费解锁。想问问大家有没有免费好用…

如何搭建chatGPT4.0模型-国内如何用chatGPT4.0

国内如何用chatGPT4.0 在国内&#xff0c;目前可以通过以下途径使用 OpenAI 的 ChatGPT 4.0&#xff1a; 自己搭建模型&#xff1a;如果您具备一定的技术能力&#xff0c;可以通过下载预训练模型和相关的开发工具包&#xff0c;自行搭建 ChatGPT 4.0 模型。OpenAI提供了相关的…

day81【leetcode】打家劫舍专题

文章目录前言一、打家劫舍&#xff08;力扣198&#xff09;【相邻两间房不能偷】二、打家劫舍 II&#xff08;力扣213&#xff09;【围成一圈 相邻两间房不能偷】三、打家劫舍 III&#xff08;力扣337&#xff09;【树形DP】每日一题day81&#xff1a;链表中的下一个更大节点&a…

Java:jdk的安装以及hello world

由于本人头发较多&#xff0c;常常被认为是不用功的程序员&#xff1b;故&#xff0c;我来学学Java&#xff0c;希望我变秃了也变强了&#xff01; 首先是java的安装&#xff0c;根据我司java的建议&#xff0c;安装了jdk8与jdk17&#xff01;因为在众多的版本中&#xff0c;只…