• 典尚设计
    三维数字影像设计
  • 联系电话
    0755-83549300/ 13392874600

3DTiles服务3DTiles模型(3D Tiles Service)

简介

3DTiles 服务(3D Tiles Service)是一种基于 3D 空间数据的在线地图瓦片服务,能够将海量的 3D 模型数据按照地理位置进行分类和组织,并提供高效的数据存储和传输能力。这种服务可以将不同来源的 3D 模型数据整合到一个统一的地图服务中,使用户能够在一个平台上访问并可视化这些数据。同时,3DTiles 服务也支持数据的动态加载和渲染,能够在不同的显示设备上进行快速的 3D 地图展示。

3DTiles模型能在线web形式展示模型

适用场景

3D Tiles 服务是一种面向大规模三维空间数据的服务,可以用来构建高效、交互式的三维地图和场景。常用于面向地理信息系统(GIS)的三维城市建模,包括城市规划、公共安全、交通规划等领域;面向虚拟现实(VR)和增强现实(AR)的三维模型渲染,如游戏、虚拟旅游、教育培训等领域;面向航空航天、军事、工程建设等领域的三维数据可视化,如航班模拟、无人机飞行、卫星轨道跟踪、建筑施工等领域。
优势:3D Tiles 服务可以高效地处理大规模三维空间数据,实现快速的数据呈现和交互,支持多种数据格式,包括点云、模型、地形等,能够满足不同数据需求。同时可以在不同平台和设备上展示三维数据,包括 Web、移动端、桌面端等,具有广泛的应用前景。
缺点:其缺点主要展现在需要较高的硬件配置,数据格式转换和处理需要一定的技术支持,需要具备一定的技术能力。同时目前尚处于发展初期,还存在一些技术和应用上的挑战,需要持续的技术研发和应用实践。

图例

  1. 3D Tiles 跳跃式层级细节示例。
  1. 3D Tiles 倾斜摄影模型。

数字孪生大屏应用案例

目前,我们山海鲸可视化资源中心提供了丰富的数字孪生大屏案例,在网页上就可以快速体验大屏。

  1. 医院数字可视化大屏
image.png
  1. 体育馆赛事可视化大屏
image.png
  1. 商业广场管理可视化平台
image.png

典尚设计-倾斜摄影、实景三维建模航拍
商务沟通
0755-83549300 13570838105

3D瓦片技术是基于glTF和大数据量网络传输的一种解决方案,较一般意义上的三维格式有了近一步的集成和扩展。这也形成了3D Tiles的不同于一般3D数据格式的特点。

定义:

3D Tiles 是针对三维地理空间数据,如摄影测量、三维建筑、BIM/CAD、实例化要素、点云等进行流处理和渲染而开发的数据格式。它基于传输可渲染的层级数据结构和瓦片格式集。由于3D瓦片并没有一个明确的数据可视化规则,客户端可根据需要自行定义可视化内容。

基本特征:

1)支持文件类型

  • 瓦片集(Tileset)文件和瓦片集格式文件都用.json扩展和application/json MIME类型。
  • 瓦片内容(Tile.content)文件主要为:批处理3D模型(b3dm)、3D模型实例(i3dm)、点云(pnts)、合成图像(cmpt)等。

2)严格的JOSN格式和UTF-8编码。

3)地址引用(URIs):采用URIs地址引用瓦片内容。当URIs是相对地址时,其还是指向了定义瓦片集的JSON文件。

4)单位与坐标系统

  • 直线距离采用“米”;
  • 角度采用弧度。
  • 坐标系:右手笛卡尔直角坐标系,即X与Y的叉积产生Y。全球坐标系为WGS84地心坐标系。

核心概念:

1.瓦片(Tiles)

瓦片由用于确定瓦片是否被渲染的元数据、对渲染内容的引用体以及子瓦片的数组共同组成。

瓦片的重要属性:

  • boundingVolume——绑定的边界体积,必须项
  • viewerRequestVolume——绑定体积,非必须项
  • geometricError——几何误差,必须项
  • refine——优化,非必须项
  • transform——4*4的转换矩阵,默认值为单位矩阵,非须项
  • content——瓦片内容,包括元数据和数据内容的链接
  • children——定义瓦片子集,非必项项
  • extensions——扩展对象,非必须项
  • extras——扩展的数据对象
  • 边界体积(boundingVolume)

boundingVolume定义了包含切片或切片内容的空间范围。为了支持各种数据集(例如常规分割的地形、非矩形的城市或任意点云)的体积范围,边界体积类型包括:定向边界框、边界球体以及由最小和最大纬度、经度和高度定义的地理区域。

区域边界体积:

"boundingVolume":{
    "region":[      // [west, south, east, north, minimum height, maximum height]
          -1.3197004795898053,
           0.6988582109,
          -1.3196595204101946,
           0.6988897891,
           0,
           20
      ]
}

盒式边界体积:

"boundingVolume":{
      "box":[
             0,0,10,     // x, y, and z values for the center of the box
             100,0,0,    //the x-axis direction and half-length
             0,100,0,    //the y-axis direction and half-length
             0,0,10      //the z-axis direction and half-length
       ]
}

球边界体积:

"boundingVolume":{
           "sphere":[
                     0,  0,  10,   //x, y, and z values for the center of the sphere in a right-handed
                     141.4214      //radius in meters
           ]
}
  • 视口请求体积(viewerRequestVolume)

瓦片的视口请求体积用于组合上述各类数据,并且可以与外部瓦片集组合。例如:在区域内有一个建筑物是盒式体积并在建筑物内放置点云等。

  • 几何误差(geometricError)

瓦片被构建为基于HLOD的树型结构,以便随视角的远近而动态调整。这个执行过程中会产生一个像素级“屏幕空间误差”,这就是所谓的几何误差。此误差就是某个瓦片的识别度,它是一个非负的,代表了简化的原始几何体的,单位为米。因此,根节点瓦片的误差最大,因为它对原始几何体进行了最大的简化,每近一层,其几何误差越小,在最末节点上,误差接近于0。

  • 优化(refine)

优化就是当低分辨率的瓦片在渲染时,高分辨率的子瓦片如何进行渲染的调度过程。优化分为替换和添加两种模式。替换(REPLACE)模式是如果子瓦片可替换父瓦片,父瓦片将不再渲染(出现);如果瓦片具有累加细化性,则父子瓦片都将被渲染(出现),这叫作添加(“ADD”)模式。

替换(REPLACE)模式:

添加(ADD)模式:

  • 变换(Transform)

transform 属性由一个4×4 仿射变换矩阵定义,以列优先顺序存储,它从瓦片的本地坐标系转换到父瓦片的坐标系——如果在根瓦片时就是瓦片集的坐标系。类型包括:瓦片变换、glTF变换、glTF节点变换、y或z轴变换。变换的基本原理为线性代数的乘法法则如:将T0矩阵换为T3和T4矩阵的方法为:

T0: [T0]
T1: [T0][T1]
T2: [T0][T2]
T3: [T0][T1][T3]
T4: [T0][T1][T4]
  • 内容(content)

Tile.content包含了瓦片的boundingVolume、uri、extensions、extras等四个属性,主要是对瓦片渲染、二进制内容及其它引用JOSN文件的定义。

  • JOSN文件

瓦片的JSON文件是对瓦片一些属性结构的定义:

{
"boundingVolume":{
         "region":[
               -1.2419052957251926,
               0.7395016240301894,
               -1.2415404171917719,
               0.7396563300150859,
               0,
               20.4
           ] 
  },
       "geometricError":43.88464075650763,
        "refine":"ADD",
        "content":{
                  "boundingVolume":{
                  "region":[
                           -1.2418882438584018,
                            0.7395016240301894,
                           -1.2415422846940714,
                            0.7396461198389616,
                            0,
                           19.4
                   ]
                  },
                    "uri":"2/0/0.b3dm"
   },
  "children":[...]
}

上述JSON例子就定义了瓦片的结构。

2.瓦片集(Tileset)JSON文件

一个3D Tiles项目需要一个JSON文件定义瓦片集作为入口。瓦片集有四个顶层属性:asset, properties, geometricError和root。

  • asset包含着整个瓦片集元数据的对象。 asset.version 属性定义了 3D Tiles 版本字符串,指定了 tileset 的 JSON 模式和基本的 tile 格式集。 tilesetVersion 属性是一个可选字符串,它定义了一个特定于应用程序的tileset 版本。
  • properties 是一个对象,包含tileset 中每个特征属性的对象。
  • root 定义根瓦片。

为了使root对象进行树型扩展使用瓦片的content.uri指向另一个瓦片集JSON文件的方式。所以当一个瓦片的content.uri指向加一个JSON文件时:

  • 不能有children属性;
  • 不能循环指向,即不能再指向一个已指向的文件;
  • 瓦片的变换将进行两次,一次为根节点的变换,一次为本节点的变换。

数据结构

单个瓦片是一个二进制的块,里面包含了一个要素表和一个批处理表。批处理3D模型(b3dm)、3D模型实例(i3dm)、点云(pnts)、合成图像(cmpt)等数据都具有类似的结构,通过下面两类数据结构来表达。

1.要素表(Feature Table)

通常由组成三维模型的建筑物或树木、点云中的点的要素的位置信息、表面属性等构成。一些附加或特殊的属性则存储在批处理表中。用户可以根据需要选择其需要分析或显示的属性。 要素表是图块二进制体的一个组成部分,描述了渲染图块中每个特征所需的位置和外观属性。

一个要素表包括一个由UTF-8编码的JSON头和一个二进制块组成,如下图所示:

JSON头有三种表示法:一种是一个单一值或对象,如定义实例3D模型个数的:”INSTANCES_LENGTH” : 4;另外一种是一个数组,常由表示位置的信息组成;最后一种是对二进制数的引用指示。

例如用以上结构从瓦片中读取坐标(float32[3])信息:

var byteOffset =featureTableJSON.POSITION.byteOffset;

// 每个POSITION由三维数据组成
var positionArray =newFloat32Array(featureTableBinary.buffer, byteOffset, featuresLength *3);
//将数据转化的坐标
var position =positionArray.subarray(featureId *3, featureId *3+3);

2.批处理表(Batch Table)

批处理表包含在应用程序中瓦片的特定属性。这些属性在运行时被用于查询和获取声明样式,例如填充UI或发出REST API 请求等。应用于下面三类瓦片的数据格式:

  • Batched 3D Model (b3dm)
  • Instanced 3D Model (i3dm)
  • Point Cloud (pnts)

批处理表也由两部分组成:JSON 标头和可选的二进制主体编码。 JSON 头描述了属性,其值可以直接在 JSON 中定义为数组。

结评

人类所生存的地理环境具有天然的三维属性,认识和掌握三维数据技术理应由地理信息科学提出解决方案,但遗憾的是现今地理科学与技术的应用和发展依附属于信息技术,加之过于简化,在纸制地图上形成了路径依赖,有意识地将第三维信息进行了过滤,随着3D Tiles应用的不断扩展,期待其会填补GIS在3D表现方面的不足

超大场景的倾斜摄影三维模型3DTiles在WEB端快速展示技术分析

超大场景的倾斜摄影三维模型3DTiles在WEB端快速展示技术分析

超大场景的倾斜摄影三维模型3DTiles在Web端快速展示是一个挑战性的任务,需要采用多种技术来提高数据加载速度、渲染效率和用户体验。以下是几种常用的技术分析:

1、多级渐进式加载:这种技术可以将数据分成多个层次,先加载低分辨率的数据,再逐步增加细节和精度。这样可以缩短数据加载时间,提高用户体验。同时,还可以根据用户的视角和关注点进行预加载和优化,以提高数据加载的智能性和精准性。

2、网格简化:超大场景的倾斜摄影三维模型可能包含数亿个面片或点云数据,对于Web端展示来说,数据量太大会导致网页加载缓慢或卡顿。因此,需要采用网格简化算法来减少网格数量,并保持数据的精度。网格简化可以通过不同的方法实现,例如基于误差度量的简化、基于拓扑结构的简化等。

3、GPU加速:GPU加速是一种利用显卡并行计算能力来加速数据渲染的技术。在Web端展示超大场景的倾斜摄影三维模型时,GPU加速能够大幅提高数据渲染效率和速度,减少卡顿和延迟现象。此外,还可以通过OpenGL/WebGL等技术来实现GPU加速渲染。

4、智能剖分:智能剖分是一种将超大场景的倾斜摄影三维模型分成多个小块来处理和渲染的技术。通过智能剖分,可以降低单个任务的复杂度和计算量,并提高数据处理和渲染效率。同时,还可以在不同的块之间进行无缝衔接,以保持数据的连续性和完整性。

5、数据压缩:在Web端展示超大场景的倾斜摄影三维模型时,数据传输量较大可能会导致数据加载缓慢。因此,需要采用数据压缩技术来减小数据体积,包括无损压缩和有损压缩两种方法。常用的数据压缩算法包括GZIP、LZMA、JPEG2000等。

综上所述,超大场景的倾斜摄影三维模型3DTiles在Web端快速展示可以采用多级渐进式加载、网格简化、GPU加速、智能剖分、数据压缩等技术。需要根据实际情况选择合适的技术和工具,以提高数据的加载速度、渲染效率和用户体验。同时,还需要注意数据的安全性和用户隐私保护等方面的问题。

如何实现超大规模的倾斜摄影三维模型的高质量的数据3D Tiles格式轻量化压缩、格式转换,快速高效的处理工具软件非常重要,保证轻量化压缩、格式快速转换效率和模型质量达标,提高转换效率、降低存储和传输成本。下面介绍一款快速高效的三维模型数据轻量化压缩、格式转换软件。

三维工厂软件简介

三维工厂K3DMaker是一款三维模型浏览、分析、轻量化、顶层合并构建、几何校正、格式转换、调色裁切等功能专业处理软件。快速高质量的数据处理和转换工具,支持将OSGB格式三维模型转换为3DTiles等格式,可快速进行转换。软件可以进行三维模型的网格简化、纹理压缩、层级优化等操作,从而实现三维模型轻量化。轻量化压缩比大,模型轻量化效率高,自动化处理能力高;采用多种算法对三维模型进行几何精纠正处理,精度高,处理速度快,超大模型支持。快来体验一下吧,

如何用无人机倾斜摄影采集影像,完成实景三维重建? 
« 上一篇 2023年10月12日
什么是智慧城市,我们理解的智慧城市
下一篇 » 2023年10月12日