三维应用常用数据与处理
目前三维应用主要涉及的引擎有CesiumJS、Three.js、Unity3D。
三维应用介绍
1、CesiumJS
CesiumJS 是一个开源的 JavaScript 库,用于在Web浏览器中展示三维地球和地图,能够可视化三维模型、影像数据、地形高程数据、矢量数据等。它由 AGI 公司的计算机图形开发小组研发于2011年,旨在使用户能够通过浏览器轻松地创建和共享高质量的三维地图和场景。
Cesium 的主要特点包括:跨平台、支持多种资源类型、硬件加速图形、开源许可、高性能渲染引擎、功能强大的地图编辑工具。
Cesium 引擎支持多种数据格式,以下是其中一些常见的数据格式:
2、Three.js
Three.js是一个基于JavaScript的开源3D图形引擎库。它使用WebGL技术,能够在浏览器中呈现高质量的3D场景和动画。
Three.js提供了丰富的3D对象和场景,包括几何体、纹理、光源、相机等。它还支持物理引擎,可以模拟物体的碰撞和重力等效果。此外,Three.js还支持音频和视频播放,以及交互式的3D应用程序开发。
Three.js主要支持的数据格式有OBJ、STL、GLTF/GLB、D2J、FBX、3ds、Collada。
3、Unity3D
Unity3D是一款由Unity Technologies开发的跨平台游戏引擎,它可以用于开发三维图形游戏、虚拟现实游戏、互动叙事体验等。Unity3D使用C#作为开发语言,拥有强大的编辑器和各种游戏开发工具,可以轻松创建高质量的游戏。
Unity3D引擎支持多种游戏对象类型,包括角色、动物、汽车、建筑、天空盒等。它还支持物理引擎,可以模拟物体的碰撞和重力等效果。Unity3D还支持音频和视频播放,以及虚拟现实技术,可以实现更加真实的游戏体验。『本文由“物图科技”原创』
Unity3D引擎还提供了许多内置的游戏类型,如休闲游戏、竞技游戏、角色扮演游戏等。此外,Unity3D还支持第三方插件,开发者可以根据需要自定义插件以实现更多功能。
Unity3D支持多种数据格式,包括FBX、DAE、OBJ、DXF、GLTF/GLB、SKP等,还支持从3D Studio Max、Maya、Blender、Cinema4D、Modo、LightWave、Cheetah3D等软件导入模型。
二、常用数据和处理
1、GLTF/GLB
GLTF(Generic glTF)是一种通用的三维模型格式,用于在Web浏览器中呈现3D场景和模型。GLTF格式支持多种三维建模软件,如Modeler、Revit、SketchUp等,并且可以导出多种不同格式的模型文件,如OBJ、FBX、STL等。GLTF文件以二进制格式存储,包含节点层级、摄像机、材质、动画和网格等信息。
GLB(GLTF Binary)是GLTF格式的二进制文件格式表示,它是以图形语言传输格式(glTF)保存的3D模型。与GLTF相比,GLB文件更小,加载速度更快,因为它使用了二进制格式来存储数据,避免了不必要的数据占用。
GLTF格式的优点包括:
2、OBJ
OBJ三维数据格式是一种常见的三维模型文件格式,它是由Alias|Wavefront公司开发的一种标准格式,广泛应用于三维建模和动画制作领域。OBJ文件以.obj为后缀名,包含了模型的几何信息、纹理贴图等信息,是三维模型文件中最常用的格式之一。
OBJ格式的三维模型数据包含了顶点、面片、法向量纹理等几何信息,以及纹理映射、光照等信息。OBJ文件使用标准的Polygon(多边形)格式储存三维模型数据,直接储存顶点坐标和法线等数据,这导致OBJ文件无法导出骨骼动画,只能储存静态模型和材质信息。
OBJ文件格式支持多种三维数据类型,包括点云、曲线、面、体、网格、多边形、实体等。同时,OBJ文件格式也支持多种常见的三维特效,如平滑面、曲面混合、法线贴图、雾化、体积光等。此外,OBJ文件格式还支持多种输入输出格式,如STL、FBX、STL、GLTF等,方便用户进行数据处理和导出。
3、FBX
FBX是一种通用3D文件格式,包含动画、材质特性、贴图、骨骼动画、灯光、摄像机等信息。由Kaydara为MotionBuilder开发,于2006年被Autodesk公司收购。它是一种功能强大且使用广泛的三维模型文件格式,它支持多种三维数据类型和特效,具有良好的兼容性和可扩展性,可以在不同的三维软件之间进行转换,是三维建模和开发的重要文件格式之一。
FBX格式的特点包括:
4、OSGB
OSGB格式是OpenSceneGraph框架的自有格式,是一种二进制数据格式。它以树形结构的方式组织数据,每个节点表示一个对象,节点之间的连线表示对象之间的关系。OSGB格式支持多种类型的对象,包括几何体、纹理、材质、动画等。
倾斜摄影数据是以OSGB格式来组织的,它是一种基于树形结构的倾斜角度数据,表示地球上不同角度的照片。倾斜摄影数据通常用于地理信息系统(GIS)和空间数据库中。
倾斜摄影文件由无人机航飞,再通过建模软件(大疆智图、Smart3D、Photoscan、OpenDroneMap)生成。
在Unity3D中可以通过插件加载OSGB数据;在Cesium中需要先把OSGB转换为3Dtiles后再加载;Three.js中加载也是需要转换为其支持的格式,并且文件大小一般不超过百MB。
5、3DTiles
3DTiles三维模型数据格式,是由Cesium开发的一种开放式数据规范,用于在WebGL应用程序中传输大规模、异构的三维空间数据集。3D Tiles数据集通过将三维模型瓦片化为分块的三维瓦片格式,减轻了浏览器的负担,提高了加载速度。此外,3D Tiles还提供了细节层次的LOD(Level of Detail)功能,可以在远观时降低模型的面数和精度,拉近后再将细节加载出来,从而增强了页面的加载速度。『本文由“物图科技”原创』
3D Tiles数据特点包括:
5.1 倾斜摄影OSGB转3DTiles
数据处理软件可以使用CesiumLab软件。打开CesiumLab并登录,点击“倾斜模型切片”,选择数据配置相关参数后提交处理,数据处理完成后,可以打开包含了3dtiles文件夹。
使用Cesium加载后效果:
5.2 制作三维城市白模
三维城市白模是指用纯色(一般白色)绘制的三维城市模型。在三维建模中,可以使用多种方法创建白模,其中一种常见的方法是使用代码。
这种方法是使用纯代码来绘制三维城市模型。根据建筑物的轮廓,可以使用多边形、墙体等Entity对象来创建建筑物的形状,并使用PolygonGeometry、WallGeometry等Primitive对象来创建建筑物之间的关系。
除了使用代码之外,还可以使用建模软件自动建模来创建白模。这种方法需要建模软件能够根据属性参数进行自动化建模,同时,还需要软件数据格式支持(CAD/SHP/GEOJSON/KML等),三维建模数据导出格式支持(OBJ/DAE/3DTILES等)。
我们一般使用SHP数据来制作城市白模,SHP数据要求为带高度属性的建筑轮廓面数据,可以通过CesiumLab生成三维城市白模,下面简单说明整个流程。
打开软件,选择“通用模型切片”,输入文件选择我们获取到的SHP数据。
点击文件路径后的设置图片,选择“造型参数”,“建筑高度”参数,有“固定高度”和“高度字段”两个选项,我们需要从SHP数据中加载真实的高度数据,所以选择“高度字段”。
大小场景处理器、压缩参数、属性字段,我们根据实际情况参考说明文档选择。
数据存储选择输出文件的路径,存储类型支持散列、紧凑、minio、postgres、mongodb等。完成配置后点击提交处理,等待任务完成。
完成后输出一系列的3dtiles文件,其中在根目录会输出3dtiles.json,通过Cesium等软件加载,效果如图所示:
6、BIM数据
BIM模型(Building Information Model)是一个数字化的建筑模型,它将建筑工程中的各种信息(如构件、设备、管道、施工等)进行统一的表达和管理,使得各参与方可以在同一个平台上进行协同工作。
BIM模型由多个子模型组成,包括但不限于:
在BIM模型中,各参与方可以通过插入、更新和删除模型元素来管理和修改模型,实现对建筑工程的可视化管理和协同工作。
BIM模型的主要生产软件有Autodesk的Revit和Navisworks。
6.1 BIM轻量化
BIM数据在三维应用中的使用,我们有三种方式:
转换为3dtiles格式,供Cesium引擎加载
转换为GLTF/GLB格式
转换为Svf/Svfzip格式,供Forge Viewer加载使用。
数据处理可以使用CesiumLab和BimAngle Engine软件,处理的过程也叫BIM轻量化。CesiumLab可以将revit数据转换为3dtiles,BimAngle Engine可以将revit和naviworks的数据格式转换为3dtiles、glft/glb、svf/svfzip。
我们以BimAngle Engine为例,打开revit cli客户端,选择输入rvt文件,选择输出文件的格式,配置相应参数,点击运行即可等待数据处理。『本文由“物图科技”原创』
Svf格式的参数如图:
gltf/glb参数如图:
3DTiles参数如图:
数据的加载效果如图:
7、地形数据
CesiumJS支持的地形数据格式主要有两种:
heightMap:中文名为高度图,一种基于像素级别高程数据的地形数据格式,heightMap的优点是数据量小、易于加载和处理,可以快速生成地形图像。。
Quantized-Mesh:中文名为量化网格,一种基于量化级别地形的地形数据格式,其中地形网格的密度可以根据需要进行编码。
地形数据的生成需要高程数据dem,dem是一种常用的地形数据格式,是由栅格数据结构表示的地形特征数据集。dem数据文件通常包含一个或多个栅格数据文件,每个栅格数据文件包含地形的一个方向(南北方向或东西方向)和一定间隔的像素值。dem数据可以用于地形分析、地貌建模、土地利用规划等领域。
地形数据的处理可以使用CesiumLab,或上传高程数据到VAPS地形数据中并发布为Terrain服务。
7.1 VAPS发布地形服务
先导入地形数据,打开数据地形模块,添加地形高程数据:
转到地形服务发布界面,新增服务,选择上一步导入的地形数据,配置服务名、地形格式,点击保存服务即可:
浏览服务,效果如图所示:
7.2 使用CesiumLab生成地形
打开软件,选择“地形切片”模型,添加高程数据文件,选择三角算法,还可以添加水面文件,提交处理,等待完成即可。
本文由“物图科技”原创,其版权属物图科技所有。其他媒体、网站或个人未经授权严禁转载,不得歪曲和篡改本文所发布的内容。
推荐阅读
2023/04/18
2023/04/27
2023/05/05
2023/04/07
2023/05/15