三维数据格式3DTiles

一、3D Tiles来源和介绍

它是Cesium于2016年3月定义的一种三维模式瓦片数据结构,它将海量的三维数据用分块、分层的形式组织起来,很大程度上减轻了浏览器的负担,除此外还提供了细节层次的LOD(Levels of Detail 多细节层次)功能,在远观时,降低模型的面数和精度,拉近后再将细节加载出来,大大增强了页面的加载速度,更可以用于跨桌面使用,使得web端和移动应用程序共享,主要适用于静态场景

二、3D Tiles数据特点

  1. 开放性
    它是一个开放式的数据规范,我们可以根据实际需求设定三维模型的大小和范围,此外还能适配多种空间分区方案,如:普通网格、四叉树、八叉树等

    四叉树:它是一种树形数据结构,它的每个节点下之多可以有四个子节点。通常把二维空间细分为四个区域,并把该区域里的相关信息存入到四叉树节点中,四叉树的每一个节点代表一个矩形区域,每一个矩形区域又可分为四个小矩形区域

    八叉树:相比四叉树,八叉树是将二维空间延伸到了三维空间,树种的子节点只会有八个或者零个,每一个节点同样用于存储数据

  2. 异质性
    支持将不同类型的三维模型数据,如普通模型数据加倾斜摄影数据加自绘几何数据放在一起,转化为统一标准的数据集,让它们可以在同一场景下显示出来

  3. 专为三维可视化设计
    专为三维可视化设计,并在其中引入了图形领域的技术,在不满足特定条件的情况下,并不会对场景内的模型做整个渲染,而是只会渲染个轮廓,大大降低了计算量,使得浏览器请求到数据后,渲染的流程也更加的简单。同时,因为三维模型预先处理成了分块的三维瓦片格式,所以也减少了WebGL绘制请求的数量。

  4. 可交互性
    其支持对加载模型的拾取,和样式的修改,大量加载以后,可以对其中的单独模型进行交互,如:高亮显示鼠标悬停处的模型、或进行删除等,也可根据建筑模型的高度和年代,设置不同的显示效果而不需要重新更新代码

三、3D Tiles格式文件代码详解

3D Tiles的格式是由两个部分组成的:
其一是如下的json格式的数据,这里的asset是一个包含整体tileset元素属性的对象,其中的version属性是定义3D Tiles版本的字符串,此外这里还可以选填一个tilesetVersion属性,它可以用于定义特定应用中的版本号,geometricError属性定义了一个非误差单位,低于这个误差值,瓦片集不会被渲染(单位:米),root属性用于定于根瓦片。它的子项transform也是一个可选项,它的作用是在加载大量模型或者建筑物的情况下,单个模型的点云瓦片集能在它自己的坐标系中定义,其内的数据是一个4*4的仿射变换矩阵,以列主序存储,用来实现从瓦片局部坐标系到父瓦片或根瓦片坐标系的变换。root内部也有一个geometricError属性,前者是整个瓦片不被渲染的误差,后者只是当前瓦片集被渲染的误差。content属性通过url引入文件,其支持的二进制文件格式有.b3dm、.i3dm、.pnts等,甚至可以在其中再放入一个3D Tiles文件,前提是不可以自己引用自己。content上方的refine属性定义的是LOD细化的方法,简单来说就是瓦片是如何切换的。
构成3D Tiles的第二部分就是其引用的瓦片数据文件了,.b3dm就是我们用于渲染数据的文件

//json文件
{
  "asset": {
    "version": "1.0"
  },
  "geometricError": 70,
  "root": {
    "boundingVolume": {
      "box": [
        0,
        0,
        10,
        100,
        0,
        0,
        0,
        100,
        0,
        0,
        0,
        10
      ]
    },
    "transform": [
      0.9686356343768792,
      0.24848542777253735,
      0,
      0,
      -0.15986460744966327,
      0.623177611820219,
      0.765567091384559,
      0,
      0.19023226619126932,
      -0.7415555652213445,
      0.6433560667227647,
      0,
      1215011.9317263428,
      -4736309.3434217675,
      4081602.0044800863,
      1
    ],
    "geometricError": 70,
    "refine": "ADD",
    "content": {
      "uri": "buildings.b3dm"
    },
    "children": [
      {
        "boundingVolume": {
          "box": [
            0,
            0,
            0,
            100,
            0,
            0,
            0,
            100,
            0,
            0,
            0,
            15
          ]
        },
        "transform": [
          0.35355339059327373,
          0.3535533905932738,
          0,
          0,
          -0.3535533905932738,
          0.35355339059327373,
          0,
          0,
          0,
          0,
          0.5,
          0,
          0,
          0,
          5,
          1
        ],
        "geometricError": 0,
        "content": {
          "uri": "instances.i3dm"
        }
      }
    ]
  }
}

四、3D Tiles数据使用方法

b3dm格式瓦片集主要用于加载批量的模型,pnts格式瓦片集用于加载点云数据模型,cmpt瓦片集,允许一个cmpt文件内嵌多个其他类型的瓦片。

// 3DTiles并不是Entity的一部分,而是属于更加底层的primitives
var tileset = viewer.scene.primitives.add(
  // 用于实例化
  new Cesium.Cesium3DTileset({
    // 放入json文件的路径
    url:"../../lib/TilesetWithViewerRequestVolume/tileset.json",
    maximumScreenSpaceError: 2, //最大的屏幕空间误差,数字越低,视觉效果越好
    maximumNumberOfLoadedTiles: 1000, // 最大加载瓦片个数用于给定一定的限制,防止数据量过大,占用内存过高
  })
)
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 是的,我了解 3D Tiles 数据格式3D Tiles 是一种用于在 web 浏览器中可视化大型 3D 模型的数据格式。它可以将 3D 模型划分为许多小的、独立的块,以便浏览器可以按需加载这些块,而不是一次性加载整个模型。这使得浏览器可以更快地呈现 3D 模型,并且可以在移动设备上更流畅地进行操作。 3D Tiles 使用 JSON 格式存储数据,并提供了许多不同类型的块,包括点云、三角形网格、图像等。它还具有动态加载、分层加载和缓存功能,以最大程度地提高性能。 ### 回答2: 3dtiles是一种用于存储和交换3D地理空间数据的开放格式。它基于JSON和二进制文件,并具有灵活的架构,可以支持大规模、高效地加载和渲染3D模型。 3dtiles数据格式常用于表示地理空间场景,如城市、建筑物、地形等。它通过将3D模型分割成一系列瓦块(tiles),每个瓦块包含一部分模型数据,并通过树状结构组织,实现了快速的可视化和导航。 3dtiles支持多种数据类型,如网格数据、纹理贴图、地理信息等,并且可以在地理坐标系中定位模型,使其与实际地理环境相对应。这为虚拟现实、增强现实等应用提供了丰富的地理数据来源。 对于开发者而言,了解3dtiles数据格式可以帮助他们理解如何解析和呈现这些数据。通过解析3dtiles文件,可以获取模型的几何信息、纹理贴图、坐标等,从而实现3D模型的加载和可视化。 总之,3dtiles是一种用于存储和交换3D地理空间数据的格式。它具有高效的加载和渲染性能,支持多种数据类型,并且可以与地理坐标系对接,为各类地理应用提供了强大的数据支持。 ### 回答3: 3DTiles是一种用于三维地理空间数据的开放式格式。它被设计用于以高效、灵活的方式存储、传输和可视化大规模三维模型。3DTiles采用了基于瓦片的数据结构,可以将复杂的三维模型分割成小块,从而提供了简化和优化数据处理和可视化的能力。 3DTiles支持多种类型的三维数据,包括地形数据、建筑物、植被、城市模型等。通过将这些数据存储在独立的3DTiles瓦片中,可以实现对地理区域的高效浏览和可视化。这种格式还支持多个坐标系和投影系统,使得不同数据源的集成和比较变得更加简单。 使用3DTiles可以提供高性能的可视化体验。它使用了一种分层细节技术,可以根据观察者的视角和距离加载和显示不同级别的细节。这种技术可以确保在高速渲染大规模三维数据时保持流畅的帧率和交互性。 此外,3DTiles还支持存储纹理、光照、材质等视觉效果相关的数据,并且可以与其他地理信息系统(GIS)技术无缝集成。通过使用3DTiles,用户可以快速、方便地创建、发布和共享三维地理空间数据。 综上所述,3DTiles是一种强大的数据格式,用于存储和可视化三维地理空间数据。它提供了高效、灵活的方式来处理大规模的三维模型,并具有高性能的可视化能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未名'

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值