cesium加载3D—gltf模型
var z= new Array('./src/1.gltf', './src/2.gltf','./src/3.gltf' ); var model,modelin,modelroot; var modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(经度, 纬度,1)); //gltf数据加载位置——中点 //加载gltf格式数据到cesium,z为模型名称,modelMatrix为模型中心点的经纬度坐标 function model_add(url){ /* let index = url.lastIndexOf("/"); // lastIndexOf("/") 找到最后一个 / 的位置 let fileName = url.substr(index + 1); // substr() 截取剩余的字符,即得文件名xxx.doc*/ model=scene.primitives.add(Cesium.Model.fromGltf({ url : url, //如果为bgltf则为.bgltf modelMatrix : modelMatrix, scale : 0.001, //放大倍数 })); /*获取3D model 的旋转矩阵modelMatrix*/ let m = model.modelMatrix; //构建一个三阶旋转矩阵。模型旋转一定的角度,fromRotation[Z]来控制旋转轴,toRadians()为旋转角度,转为弧度再参与运算 let m1 = Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(-78)); //矩阵计算 Cesium.Matrix4.multiplyByMatrix3(m,m1,m); //将计算结果再赋值给modelMatrix model.modelMatrix = m; } function mode3D_play(checkbox){ if(checkbox.checked==true){ model.show=true; }else{ model.show=false; } } for(let i=0;i<z.length;i++){ model_add(z[i]); }
1对于加载的三个gltf数据模型均为model,因此统一控制其属性(类似于group)
2mode3D_play(checkbox)通过网页上的input标签控制model的show属性