Cesium入门之十:Cesium加载3DTiles数据

这篇具有很好参考价值的文章主要介绍了Cesium入门之十:Cesium加载3DTiles数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

3DTiles介绍

3DTiles是一种面向网格化、可展示的大规模三维空间数据格式,专门为流式传输和渲染海量3D地理空间数据而设计的,用于存储和管理基于网格的三维模型数据。其数据结构基于B3DM和PNTS格式,可以支持多个级别的LOD,并使用Tilesets(瓦片集合)来组织和管理数据。3DTiles具有以下特点:

  • 支持大规模、高精度的三维模型数据展示。
  • 采用标准的json格式描述数据结构和元数据。
  • 使用DRACO和LZMA等压缩算法,提高数据传输和存储效率。
  • 支持多级别的LOD,并支持快速开启、关闭不同级别的数据层。

3DTiles数据结构

在3DTiles中,一个瓦片集(Tileset)是由一组瓦片(Tile)按照空间数据结构(树状结构)组织而成的,它至少包含一个用于描述瓦片集的JSON文件(包含瓦片集的元数据和瓦片对象),其中每一个瓦片对象可以引用下面的其中一种格式,用于渲染瓦片内容:
cesium加载3dtiles,Cesium,3d,javascript,vue.js,html5,前端
b3dm和i3dm格式是基于glTF构建的,它们的瓦片内容在二进制体中嵌入了glTF资源,包含模型的几何和纹理信息;pnts格式则没有嵌入glTF资源。
在3DTiles数据结构,Tileset(瓦片集)是3DTiles的主要管理单元,包括Tileset全局信息、Tileset资源路径、Tileset根Tile等。每个Tileset包含多个Tile,表示不同的数据层级和视野级别,每个Tile内部又包含多个子Tile。最底层的Tile可包含具体的3D模型数据,称为Leaf Tile。

Cesium中与3DTiles相关的类

1.Cesium3DTileset类

Cesium3DTileset类是3DTiles数据的主要管理类,负责加载和渲染Tileset。Cesium3DTileset类允许该3D瓦片集的多个3D瓦片在不同的细节级别之间互相切换,从而实现在不同距离和观察角度下提供适当的细节。该类还提供了一个易于使用的接口来控制3D瓦片集的可见性、样式、位置和旋转等方面,以及管理预加载、缓存和卸载等功能,可用于开发高效、可靠且具有交互性的3D地球应用程序。

常用属性:

  • url:3D瓦片数据的URL地址。
  • modelMatrix:该3D瓦片集的模型矩阵。
  • boundingSphere:3D瓦片集的边界球体(bounding sphere),用于计算和处理可见性和碰撞检测等。
  • root:3D瓦片集的根瓦片(root tile)。
  • ready: 一个Boolean类型的属性,用于指示3D瓦片是否已准备好渲染。

常用方法:

  • destroy():销毁3D瓦片及其内容。
  • getProperty(name):根据属性名称获取3D瓦片的属性值。
  • setProperty(name, value):设置3D瓦片的属性值。
  • hasProperty(name):判断3D瓦片是否包含指定名称的属性。
  • makeStyleDirty():通知3D瓦片集需要重新应用样式。
  • show:设置3D瓦片集的可见性。

2.Cesium3DTileStyle类

Cesium3DTileStyle是用于指定和应用3D瓦片集的样式的类;它可以控制3D瓦片的颜色、点大小、标签风格和文本内容等;它可以对3D瓦片进行分类和着色,以及创建基于属性(如高度、分类或时间)的动态样式。

常用属性:

  • color:3D瓦片的颜色,可以是rgba、rgb或16进制颜色值。
  • pointSize:3D瓦片中点的大小。
  • labelStyle:3D瓦片中的标签的样式。
  • labelText:3D瓦片中标签的文本内容。
  • show:3D瓦片的可见性。
  • style:3D瓦片的所有样式属性。

3.Cesium3DTileContent类

Cesium3DTileContent是用于表示单个3D瓦片的内容和几何信息的类。它可以使用Cesium3DTileContent类来设置和获取3D瓦片中存储的几何和元数据属性,并将其应用于3D瓦片中的3D对象。

常用属性

  • featuresLength:3D瓦片内容中包含的要素数量。
  • pointsLength:3D瓦片内容中包含的点数量。
  • trianglesLength:3D瓦片内容中包含的三角形数量。
  • geometryByteLength:3D瓦片内容的几何数据字节长度。
  • texturesByteLength:3D瓦片内容的纹理数据字节长度。

常用方法

  • hasProperty(batchId,name):检查3D瓦片内容中是否存在具有指定名称的属性值。该方法需要两个参数:
    batchId:要检查属性的要素在批处理表中的索引。
    name:要检查的属性名称。

该方法将返回一个布尔值,指示在批量表的指定批量ID上下文中,是否存在指定属性。

该方法主要用于动态创建和应用3D瓦片样式,使用3D瓦片内容的hasProperty方法可以检查3D瓦片是否具有指定名称的属性,以便选择性地应用样式。例如,可以检查3D瓦片中是否存在“height”属性,然后根据条件对3D瓦片进行分类和着色,或启动特定的动画效果。

  • getFeature(batchId):获取批处理表中指定索引的要素的属性值集合。该方法需要一个参数:
    batchId:要获取属性的要素在批处理表中的索引。

该方法将返回一个包含指定要素的所有属性值的JavaScript对象,这些属性值位于批量表对象中,并且属性的键的名称与其在批量表中的名称相同。

该方法主要用于在Cesium中与3D瓦片交互和操作。除了获取批量表中的属性值之外,还可以使用此方法将元数据附加到要素上,以支持元数据功能。例如,在调用此方法之后,可以将附加的元数据名称和值存储在要素对象中,然后、在应用特定的3D瓦片样式、动态筛选查询或者其他与要素交互的操作中使用这些元数据属性。

注意,如果尝试获取不存在的批处理ID的要素属性,则该方法将返回 undefined。同时,如果要获取的要素具有不完整或错误的属性数据,则该方法可能会返回错误或部分属性数据。

4. Cesium3DTileFeature类

Cesium3DTileFeature类用于表示3D瓦片中的单个要素(feature)及其相关属性。

常用属性

  • color:颜色属性,用于设置3D瓦片要素的颜色。颜色支持RGBA(红/绿/蓝/透明通道)格式,它可以是一个数组,数组的结构为[red, green, blue, alpha],每个值的范围为0到1之间。Cesium3DTileFeature类允许设置颜色以覆盖3D瓦片的默认颜色。
  • featureId:要素ID属性,它是一个任意类型的值,用来定义3D瓦片中的每个要素的唯一标识符。开发人员可以使用这个属性来追踪特定的3D瓦片要素,并在需要时选择性地对其进行操作。
  • polylinePositions:存储要素的线位置的属性(如果存在)。该属性用于3D瓦片中的线型要素,并包含一组数值数组,用于指定该要素的线型样式的位置。每个数值数组都被解释为一个Cartesian3坐标。
  • primitive:与要素相关的图元对象,可以用于检索要素的几何图形信息和进行交互操作。该属性允许开发人员直接访问3D瓦片中的要素及其相关属性数据。
  • tileset:与要素相关的3D瓦片集对象。该属性用于获取要素所在的3D瓦片集对象,以便进行交互操作和操作。

常用方法

  • getProperty(name):获取要素在批量表中的具有指定名称的属性值。
  • setProperty(name, value):设置指定名称的属性值。
  • hasProperty(name):检查要素在批量表中是否具有指定名称的属性。

5.Cesium3DTile类

Cesium3DTile类用于表示3D瓦片数据。文章来源地址https://www.toymoban.com/news/detail-522140.html

常用属性

  • boundingSphere:一个包含3D瓦片的最小球型边界体。该属性用于裁剪和优化3D瓦片的显示性能。boundingSphere由边界盒计算得到,并可以通过调用update()方法来更新它。
  • children:一个包含所有子瓦片的数组。每个子瓦片都是Cesium3DTile实例。当3D瓦片的内容对象包含多个数组时,它们通常将为每个数组创建子瓦片来管理这些数组。
  • computedTransform:一个包含从父瓦片到当前瓦片的4x4矩阵的数组。该矩阵用于将当前瓦片的内容对象转换为父瓦片的坐标系。computedTransform在更新瓦片转换矩阵时被重新计算。如果瓦片没有父瓦片,则computedTransform为单位矩阵。
  • content:3D瓦片的内容对象,通常包含地理信息和属性数据等相关信息。
  • geometricError:3D瓦片的几何误差,表示3D瓦片的最大距离误差。Cesium使用这个属性来计算3D瓦片的显示优先级和细节层次。
  • extras:一个包含3D瓦片的任意附加数据的对象。Cesium3DTile中的extras属性允许开发人员存储和访问与瓦片相关联的任何额外数据。
  • parent:一个指向父瓦片的指针。父瓦片是当前瓦片的直接上级。如果当前瓦片没有父瓦片,则parent属性将为null。
  • transform:一个从模型坐标系到世界坐标系的4x4矩阵。该矩阵用于将3D瓦片内容对象从模型坐标系转换为世界坐标系。transform矩阵通常在加载3D瓦片时通过调用update()方法计算得到。
  • tileset:与3D瓦片关联的3D瓦片集对象。

Cesium中加载3DTiles数据的示例

 try {
    const tileset = await Cesium.Cesium3DTileset.fromIonAssetId(75343);
    viewer.scene.primitives.add(tileset);
  } catch (error) {
    console.log(`Error loading tileset: ${error}`);
  }
  viewer.scene.globe.depthTestAgainstTerrain = true;

到了这里,关于Cesium入门之十:Cesium加载3DTiles数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • cesium加载三维模型3dtiles

    目的:为避免跨域 输入cmd命令 python3 -m http.server 5500 http://127.0.0.1:5500/data/mars3d-max-shihua-3dtiles-master/tileset.json http://127.0.0.1:5500/cesium/cesium%E5%8A%A0%E8%BD%BD3dtile2.html

    2024年02月13日
    浏览(75)
  • 前端VUE框架通过Cesium加载3dtiles,计算3dtiles的面积

    前端VUE框架通过Cesium加载3dtiles,计算3dtiles的面积完整代码 前端开发中,使用Vue框架可以帮助开发者更高效地开发复杂的Web应用程序,并且越来越多的项目开始集成三维地球数据可视化。Cesium是一个开源的JavaScript库,可以轻松地实现地球数据的可视化,同时支持3D场景的绘制

    2024年02月08日
    浏览(50)
  • Cesium地图上加载3DTiles模型

    1,使用Blender创建模型: 官网下载Blender:https://www.blender.org/,在Github上下载Building Tools插件,通过编辑-偏好设置-插件-安装,导入压缩包使用,这个可以自己创建小房子,文件-导出为obj格式 2,将.obj转成3dtiles格式: 1,第一种方法通过加载本地文件展示: 1,github下载ObjTo3

    2024年02月03日
    浏览(41)
  • Cesium加载3Dtiles模型-大疆智图

    Cesium加载3Dtiles模型步骤: (一)如果您使用的是大疆智图,则该软件可以直接输出3Dtiles格式(B3DM切片)的数据,如图所示:   (二)如果您使用的是CC(Smart3D),该软件可以输出OSGB格式的数据,我们可以借助: 1.osg2cesiumApp v1.3软件来将我们的OSGB倾斜摄影数据转换成3Dtil

    2024年02月11日
    浏览(37)
  • cesium——加载3DTiles,模型的选中,高亮效果

    3DTiles是一种用于组织和传输大规模地理数据的规范,旨在提供一种高效、可扩展的方式来加载和显示复杂的3D模型。它革新了地理数据可视化领域,为创建逼真的三维地图提供了新的可能性。 3DTiles采用了一种层次化的数据结构,将地理信息按照空间范围划分成小块,类似于

    2024年02月07日
    浏览(55)
  • Cesium 3dtiles数据下载 3DTiles

     http://chenjiamian.me/mars3d-max-shihua-3dtiles/ 预览 GitHub - CHENJIAMIAN/mars3d-max-shihua-3dtiles: 3DTiles数据下载 | 预览:http://mars3d.cn/editor-vue.html?id=layer-tileset/style/custom-style | 23Mb https://github.com/CHENJIAMIAN/mars3d-max-shihua-3dtiles/archive/refs/heads/master.zip  

    2024年02月13日
    浏览(42)
  • cesium加载显示点云及倾斜模型(3dtiles)

            在cesium加载并显示点云或者倾斜模型之前,需要将不同格式的数据转为3dtiles,具体参考倾斜、点云转3dtiles(osgb、las转3dtiles)切片         转换完成后就可以写代码将其加载到cesium地球上。         有时候加载完成并不能贴地显示,或者贴地显示的具体位置和底

    2024年04月23日
    浏览(42)
  • vue3结合Cesium加载倾斜摄影3dtiles

            这篇文章主要是为了记录加载3dtiles时模型与地形有时候存在一些高度上的差异,为此将解决方法做一个记录,便于其他读者使用。         加载倾斜摄影3dtitle           调整倾斜摄影高度         调用方式:

    2024年02月02日
    浏览(60)
  • Cesium.js加载3dTiles格式倾斜摄模型影悬浮空中的解决办法

    在之前的博文中,已经讲过如何在Cesium中加载3dTiles格式的倾斜摄影模型(Cesium加载3D Tiles模型)。最近发现一个问题,新加载的倾斜摄影模型,都漂浮在空中,无法很好的贴合地面。分析了一些这个问题,可能是由于以下原因造成的: 飞行器的精度 倾斜摄影的参数问题 Ces

    2024年02月12日
    浏览(50)
  • Cesium中加载3dtiles数据模糊或者清晰解决方法

    问题 : 当我们通过Cesium来加载3dtiles数据的时候,可能会遇到的问题有两种:模糊(流畅)、精细(卡顿),出现这两种问题的原由是生产3dtiles的软件不一样,前者生产的数据默认适合低性能计算机,后者生产的数据默认适合高性能计算机,那有没有办法一台普通的计算机同

    2024年02月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包