Cesium的学习搁置了两天,今天准备来研究一下在地图上放置3D建筑模型。
为什么要加载3D建筑模型呢?当然是因为项目没有数据啦!对于有条件倾斜摄影无人机建模,或者谷歌地球上直接有模型的,就不用这么苦恼啦~
纠结了很久,我还是决定现阶段先用效率极低的办法——建模+导入。
因为目前只是需要一个大概的建筑环境,而不需要逼真详细的三维模型,所以先使用SketchUp参考卫星图和全景图进行建模或是修改模型库里的模型,然后放置在地图上。后续希望可以摸索一下批量化的加载。
一、准备阶段
1、准备模型
首先在SketchUp吧或者论坛去下载最新版本的SketchUp【建模工具】,以及一些可以用的模型,导出为dae格式。(用3Dmax导出也可以哒)
2、格式转换
在github上下载格式转换工具collada2gltf https://github.com/KhronosGroup/glTF/releases
我也上传了一份方便大家下载(毕竟github经常被墙或者打开很慢~)
-f表示dae文件的完成路径,collada2gltf支持两种转换方式,-e及-o,-e转换后只生成一个文件(gltf文件),在模型比较大时我们可将模型与纹理贴图分开加载,这时可用-o命令进行转换,转换后会生成.gltf、.bin及.glsl三种格式的文件
【gltf模型转换工具下载地址】http://download.youkuaiyun.com/download/zlx312/10032125
下载成功后解压,打开CMD命令行,拖入collada2gltf.exe得到路径,后面加上-f,再拖入dae格式文件得到路径,后面加上-e,然后执行 ~~
示例:E:\ collada2gltf.exe -f E:\Model\zhuzhai.dae -e
【注意: -f表示dae文件的完成路径,collada2gltf支持两种转换方式,-e及-o,-e转换后只生成一个文件(gltf文件),在模型比较大时我们可将模型与纹理贴图分开加载,这时可用-o命令进行转换,转换后会生成.gltf、.bin及.glsl三种格式的文件。】
二、小试牛刀
首先讲我们的贴图文件夹和导出后的,gltf文件一起放到工程下面。
然后将把下面这段简洁的代码放在之前的代码后面就可以啦~
uri是模型文件的路径,position后面就是我们需要放置模型的经纬度(虽然比起建模软件直接拖动还是很不方便)
var entity = viewer.entities.add({
position : Cesium.Cartesian3.fromDegrees(112.07, 35.05),
model : {
uri : 'zhuzhai.gltf'
}
});
viewer.trackedEntity = entity;
启动服务进行发布,就可以看到一个初步的效果啦(竟然还自动贴地?真是省事了不少~暗暗窃喜)