大数据量 3dsMax 精细模型处理及可视化方法

wshunli
2018-05-03 / 0 评论 / 301 阅读 / 正在检测是否收录...

目前针对三维场景可视化主要使用 Cesium 开源库,Cesium 主要是支持两种类型三维数据,3D Tiles 和 gltf。

在项目中往往涉及倾斜摄影模型和人工模型(3dsMax精细建模)两种。

针对 倾斜摄影数据 的处理可视化技术比较成熟 ,支持 TB 级的三维场景加载显示;

针对 人工模型数据 往往是转换为 glTF 或者 glb ,在数据量比较小(200MB 以内)时可视化效率还可以,数据量比较大的时候就不行了,所以就考虑在数据量较大时,将 3dsMax 三维模型转化为 3D Tiles 。

本文针对大数据量的 3dsMax 模型介绍 三种 的处理思路。

思路一、从根源解决三维模型的数据量

大数据量的三维模型往往是由较小的三维模型合并而成的。

可以考虑将数据量较大的模型分割为较小的三维模型,或者不合并场景,

然后转化为 glTF 、glb 或者 3D Tiles 后,分别处理可视化。

这种思路实质上并没有建立 LOD ,只是对 Cesium 的一种妥协。

下面介绍三种方法转化为 单文件 的 3D Tiles :

方法(1)优先考虑使用最新版的 FME 转换,转换之后也都是单个文件。

方法(2)使用 KhronosGroup 开源工具

这种方法包括两步,后面也会用到。

第一步、处理 3dsMax 模型,使用 OpenCOLLADA 插件,生成 COLLADA(.dae)格式。

OpenCOLLADA 插件的源码地址是 https://github.com/KhronosGroup/OpenCOLLADA
OpenCOLLADA 插件的下载地址是 https://github.com/KhronosGroup/OpenCOLLADA/releases

该插件支持 3dsMax / Maya 2011 一样版本,支持 Windows 、 Mac 以及 Ubuntu 操作系统。

具体步骤:下载对应版本的插件,安装,然后导出到 *OpenCOLLADA(.DAE)** 格式。

OpenCOLLADA

第二步、使用 COLLADA2GLTF 转换工具,将 COLLADA 模型转化为 glTF 模型

COLLADA2GLTF 插件的源码地址是 https://github.com/KhronosGroup/COLLADA2GLTF
COLLADA2GLTF 插件的下载地址是 https://github.com/KhronosGroup/COLLADA2GLTF/releases

该插件支持 glTF 、glb 格式转换,可以运行在 Windows 、Linux 操作系统

具体步骤:下载对应操作系统的工具,解压,然后在工具根目录,运行命令行工具。

命令格式:

COLLADA2GLTF-bin[.exe] [input] [output] [options]

常用参数:

-i 表示输入的 COLLADA 文件
-o 表示输出的 gltf 文件
-b 表示输出 glb 文件

命令示例:

.\COLLADA2GLTF-bin.exe -i G:\wshunli\way\dae\y24.DAE -o G:\wshunli\way\dae\gltf\y24.gltf       

方法(3)也可以使用开源工具,直接将 obj 模型转化为 glTF 格式:

可以使用一些开源的工具,尝试了下并不能保证成功率。

下面列举两个:

OBJ2GLTF 工具 https://github.com/AnalyticalGraphicsInc/obj2gltf
objTo3d-tiles 工具 https://github.com/PrincessGod/objTo3d-tiles

该工具同样支持 glTF 、glb 格式转换,因为不是官方工具,不推荐使用。

思路二、使用 SuperMap 平台处理

商业平台技术比较成熟,三维空间分析支持较好。

但是三维场景需要 必须 以 s3m 或者 osgb 格式生成三位缓存,发布为 iServer 服务。

  • osgb 格式缓存和 倾斜摄影的 osgb 有点不太一样,尝试转化为 3D Tiles 失败。
  • s3m 是超图自己的三维切片缓存格式。

首先使用 SuperMap Max Plugin 插件,将 Max 文件 导入 SuperMap 数据集

该插件仅支持 3dsMax 2010、2012 版本,2014 支持不好。

插件使用可参考文档:基于SuperMap8C(2017)将Max文件制作三维场景
https://pan.baidu.com/s/1dFOkElV

然后在 SuperMap iDesktop 中生成三维缓存。

最后在 iServer 中发布为三维场景服务即可。

该方法是效率比较高的方法,对模型空间位置、姿态的控制也比较精确。

思路三、将大数据量 3dsMax 模型直接转换为 3D Tiles

这种方法推荐先处理 3dsMax 模型,生成 COLLADA(.dae)格式,步骤思路一中有介绍。

主要使用 OpenCOLLADA 插件,注意材质贴图路径。

然后使用 Cesiumlab 工具集,Cesiumlab 是一款专为 Cesium 开源数字地球平台打造的免费数据处理工具集。

目前包含 地形数据处理、影像数据处理、点云数据处理、数据下载、建筑物矢量面处理、倾斜数据处理、三维场景处理等工具。

工具是免费的,但是需要登陆,在模型姿态控制方面不是很精准,索引效率还是不够高,注意输入模型绝对位置。

毕竟是别人的工具,使用起来还是不够放心,下面先记录转换思路后面有时间再实现。

OBJ,3DS 等常用格式数据 LOD 拆分生成 3D Tiles 数据解决思路

1、将原模型通过网格划分拆分为多个模型,拆分难点:单个纹理拆分多个纹理,纹理重组,UV 坐标重新计算。

通过模型的面信息获取每个面用的纹理,抽取所有纹理后,对纹理重新组合成一个新的图片,组合采用二叉树遍历合理利用空间,根据原图的 UV 坐标计算新的 UV 坐标。存储一个新的网格模型。

2、对网格模型进行 LOD 数据处理,处理方式为四叉树原则。主要对步骤 1 处理的模型进行分级,减面和模型四叉树拆分。

3、对每一级得出的数据生成对应的 b3dm 格式的模型数据。

4、将所有模型数据文件遍历生成 tileset.json 文件。

5、用 Cesium Git 项目的分支 3d-tile 检验数据的正确性。

总结结论

3D TilesglTF 的区别其实不大,其中主要文件 b3dm = glTF(三维模型) + featuretable(属性):

glTF

最终本质问题是解决 glTF 模型的组织问题。

参考资料
1、3dMax模型数据转cesium Gltf模型 - CSDN博客
https://blog.csdn.net/u011394175/article/details/78919281
2、Cesium中导入三维模型方法(dae到glft/bgltf) - CSDN博客
https://blog.csdn.net/l491453302/article/details/46766909

0

评论 (0)

取消