GIS数据导入UE的流程
好久没上博客园,翻看以前写的文章,发现有去年写的一篇文章里面有提到数据如何导入到UE中,并立下flag,丢了老脸了。当时已经不记得为什么没写,也可能是觉得自己做的太差了,不值得写,也可能确实忘了。最近稍微有点时间,还是把这坑给填上。
一、GIS数据分类
这里的分类是从三维GIS的角度出发,之所以这么分类一是验证三维GIS底座数据在UE中能否加载,二是已有的资源中有这些数据。
目前验证进入UE的数据包括地形影像、矢量面、人工建模、倾斜摄影数据
二、数据分析,确定转换基准
一般来说,我们的客户都会有很多二维数据,另外或多或少都会积累了一些三维数据,这些数据可能是不同年份、不同坐标系,所以第一步是要基于这些数据统一一个数据转换的基准,保证不同类型的数据导入
UE后空间上的相对位置是正确的。这个基准包括两部分一个是坐标系,另一个是坐标偏移值,后面统称UE偏移值。通常情况下我会以人工建模数据的坐标系为准,因为一般来说人工建模是基于某个坐标体系下的CAD数据,减去XY的
大数偏移,再导入建模软件中作为位置参考来建模,坐标转换困难。第二个原因不管是地形影像、矢量等数据都可以很方便快速的进行坐标转换。BIM数据除外,BIM数据本身不一定具有真实位置信息。倾斜摄影数据
也有些不一样,但也可以进行坐标转换,还需要做进一步的偏移处理。
三、底图转换,参考依据
确定基准后首先要确定底图数据,一般是地形影像。所有的数据根据地形影像来确定是否位置正确,因为除了矢量、人工建模这些有坐标信息的,还需要对BIM这些没有
空间参考的进行校正,所以底图是第一步。下面是处理的流程,最终导出为UE支持的Datasmith 格式
CityEngien 导出Datasmith 时就需要用到我们的UE偏移值(CityEnigne 中导入地形影像显示的时真实坐标)
四、人工建模数据转换
我们在第二步确定的坐标系和UE偏移值,对于人工建模数据需要特殊处理,因为人工建模数据如果数据范围很大,不同范围建模确定的偏移值不一样,那就会和我们确定的UE偏移值不一致,就需要重新计算这两者的偏差,
然后在建模软件中调整模型的位置,保证转换后能够与影像匹配。以3ds max 为例,需要先按照Datasmith for 3ds max (官网下载)。这里用到了Vary 插件,参考B站上的大佬,用Vary 插件 ,导出Datasmith 时可以生成母材质(意义重大)
五、矢量数据转换
矢量数据的转换与地形影像的转换流程一致,在CityEngine 中就可以看到空间位置是否匹配。区别在于后续的应用,比如说需要每个矢量面是单独的一个模型,就需要导出时设置不合并实例,但不合并实例就会增加数据量,降低渲染效率
六、倾斜摄影数据转换
倾斜摄影数据一般有个xml 文件描述模型的坐标系和模型原点,如果倾斜摄影的坐标系与我们确定的转换坐标系不一致,需要先转换坐标系。如果无法转换,就直接查看倾斜某个点与影像上某个点的偏移值。不用到UE的偏移值
这里并没有用到vary 插件,因为倾斜摄影数据贴图数量太大,不适合设置母材质。
这种处理过程导致进去UE非常慢,而且在OSGB转换FBX时是把某个级别的OSGB单独转换,处理工作量大,所以该方案是个参考。
最近看到一个OSGBLab 可以不改变倾斜目录结构的情况下,进行FBX 格式转换,转换后每个Tile 一个FBX文件,还可以进行贴图合并,但并未进行尝试。
七、成果
这个流程本身也有很多问题,希望后续可以再优化下,放一张成果图