Cesium 3DTiles轉(zhuǎn)換工具
開源地址:https://github.com/scially/Cesium3DTilesConverter , 提供Windows下的編譯exe下載。
整體參考https://github.com/fanvanzh/3dtiles, 向作者致敬,市面上唯一的開源好用的3DTILES轉(zhuǎn)換工具,在學(xué)習(xí)過程中,從中收獲很多,對3DTiles、OSGB、GLTF等數(shù)據(jù)格式有了進一步了解。
-
原工程基于C++、C和Rust,本人本身對Rust不了解,但是學(xué)習(xí)過程中難免涉及到調(diào)試,也看了整個代碼,個人理解作者采用Rust和C++混編應(yīng)該是兩個問題:
- OpenSceneGraph沒有除了C++之外其他版本,而且我們在用這個工具時,最主要的就是OSGB轉(zhuǎn)3DTILES
- 本身C++可以跨平臺,但是C++對字符串、文件系統(tǒng)支持不夠好,Rust可以很好滿足這一點,并且Rust也便于和C++交互
- 綜合下來,原作者使用了Rust和C++來編寫,一是保證跨平臺,二是保證了性能。
-
本人本身是對Qt比較熟悉的,就萌生了這個想法,用C++和Qt,從新梳理整個框架,剛好今年春節(jié)一個人,秉著學(xué)習(xí)想法,使用純C++(加了Qt)重寫了該工程,新的工程基于C++ 17標(biāo)準(zhǔn)重寫,使用了Qt5.15,主要作者本身寫C++大部分時候都是基于Qt,對Qt也稍微了解,同時也借助Qt很好的跨平臺特性,性能沒有變化,并且也便于調(diào)試學(xué)習(xí)。
- 整個工程開源,但是鑒于Qt一些限制,該程序采用LGPL協(xié)議。
- 后續(xù)會與作者同步保持更新,后期希望可以加入自己一些特色功能。
簡介
3DTiles 轉(zhuǎn)換工具集, 快速將OSGB、Shp、GDB等格式轉(zhuǎn)為Cesium 3DTiles, 方便搭建三維平臺。
這是一個基于c++ 17 和 Qt5.15 項目。
提供了如下的子工具:
-
OSGB(OpenSceneGraph Binary)轉(zhuǎn)3DTiles -
Esri Shapefile轉(zhuǎn)3DTiles
用法說明
命令行格式
Converter.exe --format <FORMAT> --input <INPUT> --output <OUTPUT> [OPTIONS]
示例命令
# from osgb dataset
Converter.exe --format osgb -input E:\osgb_path -o E:\out_path
# from single shp file
Converter.exe --format gdal --input <Shapefile Path> --output <DIR> --field height --layer <Shapefile Name>
# from gdb file
Converter.exe --format gdal --input <GDB Path> --output <DIR> --field height --layer <Layer Name>
參數(shù)說明
-
-f, --format <FORMAT>輸入數(shù)據(jù)格式。FORMAT可選:OSGB, GDAL可選:OSGB為傾斜攝影格式數(shù)據(jù),GDAL為GDAL支持的面(Polygon)數(shù)據(jù) --input <PATH>輸入數(shù)據(jù)的目錄,osgb數(shù)據(jù)截止到<DIR>/Data目錄的上一級,GDAL參考GDAL數(shù)據(jù)格式。--output <DIR>輸出目錄。OSGB轉(zhuǎn)換的3DTiles輸出的數(shù)據(jù)文件位于<DIR>/Data目錄, GDAL轉(zhuǎn)換的3DTiles輸出的數(shù)據(jù)文件位于<DIR>/Tile目錄,tileset.json位于<DIR>根目錄。--field高度字段。指定GDAL數(shù)據(jù)集中的高度屬性字段,此項為轉(zhuǎn)換 GDAL 時的必須參數(shù)。--offsetOSGB高度偏移字段。
數(shù)據(jù)要求及說明
傾斜攝影數(shù)據(jù)
傾斜攝影數(shù)據(jù)僅支持 smart3d 格式的 osgb 組織方式:
- 數(shù)據(jù)目錄必須有一個
Data目錄的總?cè)肟冢?/li> -
Data目錄同級放置一個metadata.xml文件用來記錄模型的位置信息; - 每個瓦片目錄下,必須有個和目錄名同名的 osgb 文件,否則無法識別根節(jié)點;
正確的目錄結(jié)構(gòu)示意:
- Your-data-folder
├ metadata.xml
└ Data/Tile_000_000/Tile_000_000.osgb
GDAL
目前僅支持GDAL格式的面數(shù)據(jù),可用于建筑物輪廓批量生成3DTiles.
圖層中需要有字段來表示高度信息。
How To Build (Windows)
- vcpkg install "osg" "osg[plugins]"
- 如果沒有Qt5.15,可以通過以下兩種方式安裝:
- 通過Qt官網(wǎng)安裝
- vcpkg install "qt5[all]"
- VS2019選擇CMakeLists.txt,導(dǎo)入工程,編譯
- 把OSGPlugins文件夾復(fù)制到編譯目錄下