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屬性