您当前位置: 首页 > 技术中心 > 三维应用常用数据与处理

三维应用常用数据与处理

发布日期:2023.05.29
关注与分享:

目前三维应用主要涉及的引擎有CesiumJSThree.jsUnity3D


三维应用介绍


1CesiumJS

CesiumJS 是一个开源的 JavaScript 库,用于在Web浏览器中展示三维地球和地图,能够可视化三维模型、影像数据、地形高程数据、矢量数据等。它由 AGI 公司的计算机图形开发小组研发于2011年,旨在使用户能够通过浏览器轻松地创建和共享高质量的三维地图和场景。




Cesium 的主要特点包括:跨平台、支持多种资源类型、硬件加速图形、开源许可、高性能渲染引擎、功能强大的地图编辑工具。『本文由“物图科技”原创』


Cesium 引擎支持多种数据格式,以下是其中一些常见的数据格式:


  • 3D模型格式:Cesium 支持多种 3D 模型格式,如3dtilesOBJFBXSTLGLTFQuadString 等。用户可以将自己的 3D 模型导入到 Cesium 中,并将其呈现在地图上。
  • 2D 图像格式:Cesium 支持多种 2D 图像格式,如.jpg.png.tiff 等。用户可以将自己的图像导入到 Cesium 中,并将其呈现在地图上。
  • TopoJSON 格式:TopoJSON 是一种用于表示地理空间数据的 JSON 格式。Cesium 可以将 TopoJSON 数据转换为 Cesium 可以处理的格式,并将其呈现在地图上。
  • GeoJSON 格式:GeoJSON 是一种用于表示地理空间数据的 JSON 格式。与 TopoJSON 类似,Cesium 可以将 GeoJSON 数据转换为 Cesium 可以处理的格式,并将其呈现在地图上。
  • Vector DataVD)格式:Vector Data 是一种用于表示矢量数据的 JSON 格式。与 GeoJSON 类似,Cesium 可以将 VD 数据转换为 Cesium 可以处理的格式,并将其呈现在地图上。
  • 地形数据格式:支持HeightMapQuantized-mesh


 

2Three.js


Three.js是一个基于JavaScript的开源3D图形引擎库。它使用WebGL技术,能够在浏览器中呈现高质量的3D场景和动画。




Three.js提供了丰富的3D对象和场景,包括几何体、纹理、光源、相机等。它还支持物理引擎,可以模拟物体的碰撞和重力等效果。此外,Three.js还支持音频和视频播放,以及交互式的3D应用程序开发。




Three.js主要支持的数据格式有OBJSTLGLTF/GLBD2JFBX3dsCollada


3Unity3D

Unity3D是一款由Unity Technologies开发的跨平台游戏引擎,它可以用于开发三维图形游戏、虚拟现实游戏、互动叙事体验等。Unity3D使用C#作为开发语言,拥有强大的编辑器和各种游戏开发工具,可以轻松创建高质量的游戏。




Unity3D引擎支持多种游戏对象类型,包括角色、动物、汽车、建筑、天空盒等。它还支持物理引擎,可以模拟物体的碰撞和重力等效果。Unity3D还支持音频和视频播放,以及虚拟现实技术,可以实现更加真实的游戏体验。『本文由“物图科技”原创』

Unity3D引擎还提供了许多内置的游戏类型,如休闲游戏、竞技游戏、角色扮演游戏等。此外,Unity3D还支持第三方插件,开发者可以根据需要自定义插件以实现更多功能。

Unity3D支持多种数据格式,包括FBXDAEOBJDXFGLTF/GLBSKP等,还支持从3D Studio MaxMayaBlenderCinema4DModoLightWaveCheetah3D等软件导入模型。

 

二、常用数据和处理


1GLTF/GLB

GLTFGeneric glTF)是一种通用的三维模型格式,用于在Web浏览器中呈现3D场景和模型。GLTF格式支持多种三维建模软件,如ModelerRevitSketchUp等,并且可以导出多种不同格式的模型文件,如OBJFBXSTL等。GLTF文件以二进制格式存储,包含节点层级、摄像机、材质、动画和网格等信息。




GLBGLTF Binary)是GLTF格式的二进制文件格式表示,它是以图形语言传输格式(glTF)保存的3D模型。与GLTF相比,GLB文件更小,加载速度更快,因为它使用了二进制格式来存储数据,避免了不必要的数据占用。


GLTF格式的优点包括:


  • 支持多种三维建模软件。
  • 可以导出多种不同格式的模型文件。
  • 文件较小,加载速度更快。
  • 包含节点层级、摄像机、材质、动画和网格等信息。
  • 支持动画和网格。
  • 常用的三维软件基本都支持导出gltf格式,如3dsMAXBlenderOpenSCADS等。



2OBJ


OBJ三维数据格式是一种常见的三维模型文件格式,它是由Alias|Wavefront公司开发的一种标准格式,广泛应用于三维建模和动画制作领域。OBJ文件以.obj为后缀名,包含了模型的几何信息、纹理贴图等信息,是三维模型文件中最常用的格式之一。

OBJ格式的三维模型数据包含了顶点、面片、法向量纹理等几何信息,以及纹理映射、光照等信息。OBJ文件使用标准的Polygon(多边形)格式储存三维模型数据,直接储存顶点坐标和法线等数据,这导致OBJ文件无法导出骨骼动画,只能储存静态模型和材质信息。

OBJ文件格式支持多种三维数据类型,包括点云、曲线、面、体、网格、多边形、实体等。同时,OBJ文件格式也支持多种常见的三维特效,如平滑面、曲面混合、法线贴图、雾化、体积光等。此外,OBJ文件格式还支持多种输入输出格式,如STLFBXSTLGLTF等,方便用户进行数据处理和导出。

 

3FBX


FBX是一种通用3D文件格式,包含动画、材质特性、贴图、骨骼动画、灯光、摄像机等信息。由KaydaraMotionBuilder开发,于2006年被Autodesk公司收购。它是一种功能强大且使用广泛的三维模型文件格式,它支持多种三维数据类型和特效,具有良好的兼容性和可扩展性,可以在不同的三维软件之间进行转换,是三维建模和开发的重要文件格式之一。

 

FBX格式的特点包括:


  • 三维模型数据与动画、特效、音频等多媒体资源分离。这意味着模型可以与其他资源(如音频和视频)分开存储和处理,使得模型的导入、导出更加方便。
  • FBX文件格式支持多种三维数据类型,包括点云、曲线、面、体、网格、多边形、实体等,同时支持多种常见的三维特效,如平滑面、曲面混合、法线贴图、雾化、体积光等。
  • FBX文件格式采用了二进制和ASCII两种编码格式,支持多种操作系统和软件,具有良好的兼容性。
  • FBX文件格式支持三维软件之间的数据交换和共享,使得开发者可以在不同的三维软件之间共享模型数据,从而提高了开发效率和建模质量。
  • FBX文件格式还支持多种数据交换格式,如OBJSTL等,使得模型数据可以在不同的三维软件之间进行转换,从而减少了开发者的工作量。


 

4OSGB


OSGB格式是OpenSceneGraph框架的自有格式,是一种二进制数据格式。它以树形结构的方式组织数据,每个节点表示一个对象,节点之间的连线表示对象之间的关系。OSGB格式支持多种类型的对象,包括几何体、纹理、材质、动画等。

倾斜摄影数据是以OSGB格式来组织的,它是一种基于树形结构的倾斜角度数据,表示地球上不同角度的照片。倾斜摄影数据通常用于地理信息系统(GIS)和空间数据库中。

倾斜摄影文件由无人机航飞,再通过建模软件(大疆智图、Smart3DPhotoscanOpenDroneMap)生成。

Unity3D中可以通过插件加载OSGB数据;在Cesium中需要先把OSGB转换为3Dtiles后再加载;Three.js中加载也是需要转换为其支持的格式,并且文件大小一般不超过百MB

 

53DTiles


3DTiles三维模型数据格式,是由Cesium开发的一种开放式数据规范,用于在WebGL应用程序中传输大规模、异构的三维空间数据集。3D Tiles数据集通过将三维模型瓦片化为分块的三维瓦片格式,减轻了浏览器的负担,提高了加载速度。此外,3D Tiles还提供了细节层次的LODLevel of Detail)功能,可以在远观时降低模型的面数和精度,拉近后再将细节加载出来,从而增强了页面的加载速度。『本文由“物图科技”原创』


3D Tiles数据特点包括:


  • 开放性:3D Tiles是一个开放式的数据规范,可以根据实际需求设定三维模型的大小和范围,并能适配多种空间分区方案,如普通网格、四叉树、八叉树等。
  • 分块处理:3D Tiles将三维模型瓦片化为分块的三维瓦片格式,并将每个瓦片存储在独立的缓存区中,这样可以减少浏览器的负担,提高页面加载速度。
  • 细节层次的LOD3D Tiles支持细节层次的LOD功能,可以在远观时降低模型的面数和精度,拉近后再将细节加载出来,从而增强了页面的加载速度。
  • 适用于WebGL3D Tiles数据集可以直接在WebGL应用程序中使用,不需要进行额外的转换或编译工作。这使得WebGL应用程序开发者可以更加专注于页面的用户交互和渲染效果,提高了开发效率。
  • 可跨桌面使用:3D Tiles数据集可以在不同的桌面上使用,不受浏览器厂商的限制,从而使得WebGL应用程序可以在不同的平台上进行部署和使用。


 

5.1 倾斜摄影OSGB3DTiles


数据处理软件可以使用CesiumLab软件。打开CesiumLab并登录,点击倾斜模型切片,选择数据配置相关参数后提交处理,数据处理完成后,可以打开包含了3dtiles文件夹。




使用Cesium加载后效果:



5.2 制作三维城市白模


三维城市白模是指用纯色(一般白色)绘制的三维城市模型。在三维建模中,可以使用多种方法创建白模,其中一种常见的方法是使用代码。

这种方法是使用纯代码来绘制三维城市模型。根据建筑物的轮廓,可以使用多边形、墙体等Entity对象来创建建筑物的形状,并使用PolygonGeometryWallGeometryPrimitive对象来创建建筑物之间的关系。

除了使用代码之外,还可以使用建模软件自动建模来创建白模。这种方法需要建模软件能够根据属性参数进行自动化建模,同时,还需要软件数据格式支持(CAD/SHP/GEOJSON/KML等),三维建模数据导出格式支持(OBJ/DAE/3DTILES等)。

我们一般使用SHP数据来制作城市白模,SHP数据要求为带高度属性的建筑轮廓面数据,可以通过CesiumLab生成三维城市白模,下面简单说明整个流程。


打开软件,选择通用模型切片,输入文件选择我们获取到的SHP数据。


点击文件路径后的设置图片,选择造型参数建筑高度参数,有固定高度高度字段两个选项,我们需要从SHP数据中加载真实的高度数据,所以选择高度字段




大小场景处理器、压缩参数、属性字段,我们根据实际情况参考说明文档选择。

数据存储选择输出文件的路径,存储类型支持散列、紧凑、miniopostgresmongodb等。完成配置后点击提交处理,等待任务完成。


完成后输出一系列的3dtiles文件,其中在根目录会输出3dtiles.json,通过Cesium等软件加载,效果如图所示:



6BIM数据


BIM模型(Building Information Model)是一个数字化的建筑模型,它将建筑工程中的各种信息(如构件、设备、管道、施工等)进行统一的表达和管理,使得各参与方可以在同一个平台上进行协同工作。

BIM模型由多个子模型组成,包括但不限于:


  • 建筑模型(Building Model):表达建筑物的几何信息、尺寸、材料、质量等。
  • 结构模型(Structural Model):表达建筑物的结构特征,如构件类型、连接方式、尺寸等。
  • 机电模型(Electrical Model):表达建筑物的机电系统,如电气线路、管道、设备等。
  • 装修模型(Decorative Model):表达建筑物的装修特征,如墙面、地面、天花板等。
  • 时间模型(Time Model):表达建筑物施工过程中的各个阶段,如施工前期、施工中期、施工后期等。
  • 几何图形模型(Geometry Model):表达建筑物的几何图形信息,如点、线、面等。


BIM模型中,各参与方可以通过插入、更新和删除模型元素来管理和修改模型,实现对建筑工程的可视化管理和协同工作。


BIM模型的主要生产软件有AutodeskRevitNavisworks



 

6.1 BIM轻量化


BIM数据在三维应用中的使用,我们有三种方式:

转换为3dtiles格式,供Cesium引擎加载

转换为GLTF/GLB格式

转换为Svf/Svfzip格式,供Forge Viewer加载使用。

数据处理可以使用CesiumLabBimAngle Engine软件,处理的过程也叫BIM轻量化。CesiumLab可以将revit数据转换为3dtilesBimAngle Engine可以将revitnaviworks的数据格式转换为3dtilesglft/glbsvf/svfzip

我们以BimAngle Engine为例,打开revit cli客户端,选择输入rvt文件,选择输出文件的格式,配置相应参数,点击运行即可等待数据处理。『本文由“物图科技”原创』


Svf格式的参数如图:



gltf/glb参数如图:



3DTiles参数如图:



数据的加载效果如图:



7、地形数据


CesiumJS支持的地形数据格式主要有两种:


heightMap:中文名为高度图,一种基于像素级别高程数据的地形数据格式,heightMap的优点是数据量小、易于加载和处理,可以快速生成地形图像。。

Quantized-Mesh:中文名为量化网格,一种基于量化级别地形的地形数据格式,其中地形网格的密度可以根据需要进行编码。


地形数据的生成需要高程数据demdem是一种常用的地形数据格式,是由栅格数据结构表示的地形特征数据集。dem数据文件通常包含一个或多个栅格数据文件,每个栅格数据文件包含地形的一个方向(南北方向或东西方向)和一定间隔的像素值。dem数据可以用于地形分析、地貌建模、土地利用规划等领域。

地形数据的处理可以使用CesiumLab,或上传高程数据到VAPS地形数据中并发布为Terrain服务。

 

7.1 VAPS发布地形服务


先导入地形数据,打开数据地形模块,添加地形高程数据:




转到地形服务发布界面,新增服务,选择上一步导入的地形数据,配置服务名、地形格式,点击保存服务即可:




浏览服务,效果如图所示:



7.2 使用CesiumLab生成地形


打开软件,选择地形切片模型,添加高程数据文件,选择三角算法,还可以添加水面文件,提交处理,等待完成即可。



本文由“物图科技”原创,其版权属物图科技所有。其他媒体、网站或个人未经授权严禁转载,不得歪曲和篡改本文所发布的内容。

Copyright © 苏州物图科技有限公司 版权所有 备案号:苏ICP备20005933号-1
0.083370s