自己尝试用cesium引擎加载BIM模型,操作步骤如下:

第一步: 下载一个BIM模型

cesium加载BIM模型_css3


第二步:

将BIM模型转换成FBX格式

cesium加载BIM模型_cesium_02


cesium加载BIM模型_cesium_03


转成gltf格式

在如下网站进行转换:

​ https://products.aspose.app/3d/conversion/fbx-to-gltf/​

第三步:
在cesium app项目中加载gltf模型。
源码如下:

<!DOCTYPE html>
<html lang="en">
<head>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
<title>加载gltf数据</title>
<script src="./scripts/Cesium/Cesium.js"></script>
<style>
@import url(./scripts/Cesium/Widgets/widgets.css);
html, body, #cesiumContainer {
width: 100%; height: 100%; margin: 0; padding: 0; overflow: hidden;
}
</style>
</head>
<body>
<div id="cesiumContainer"></div>

<script>
var viewer = new Cesium.Viewer('cesiumContainer',{
animation:false, //是否显示动画控件
homeButton:true, //是否显示home键
//geocoder:false, //是否显示地名查找控件 如果设置为true,则无法查询
baseLayerPicker:false, //是否显示图层选择控件
timeline:false, //是否显示时间线控件
fullscreenButton:true, //是否全屏显示
scene3DOnly:true, //如果设置为true,则所有几何图形以3D模式绘制以节约GPU资源
infoBox:true, //是否显示点击要素之后显示的信息
sceneModePicker:false, //是否显示投影方式控件 三维/二维
navigationInstructionsInitiallyVisible:false,
navigationHelpButton:false, //是否显示帮助信息控件
selectionIndicator:false, //是否显示指示器组件
//加载谷歌卫星影像
imageryProvider : new Cesium.UrlTemplateImageryProvider({url:"http://mt1.google.cn/vt/lyrs=s&hl=zh-CN&x={x}&y={y}&z={z}&s=Gali"})
});
viewer._cesiumWidget._creditContainer.style.display = "none"; // 去除版权信息

viewer.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider({ //调用影响中文注记服务
url: "http://t0.tianditu.com/cia_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cia&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default.jpg",
layer: "tdtAnnoLayer",
style: "default",
format: "image/jpeg",
tileMatrixSetID: "GoogleMapsCompatible",
show: false
}));
//加载gltf格式数据到cesium
var scene=viewer.scene;
var modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(
Cesium.Cartesian3.fromDegrees(110.62898254394531, 40.02804946899414, 6.0)); //gltf数据加载位置
var model = scene.primitives.add(Cesium.Model.fromGltf({
url : 'FBX2.gltf', //如果为bgltf则为.bgltf
modelMatrix : modelMatrix,
scale : 3.0 //放大倍数
}));
viewer.camera.flyTo({
destination : Cesium.Cartesian3.fromDegrees(110.62898254394531, 40.02804946899414, 6000.0) //相机飞入点
});


</script>
</body>
</html>

cesium加载BIM模型_css_04


结果如下所示,位置有点不对哈,下次会逐步改进的