Primitive几何图形
new Cesium.Model ( options )于glTF(WebGL,OpenGL ES和OpenGL的运行时资产格式)的3D模型。
export function loadingGltfModel(viewer, url, height, lng, lat, heading, pitch, roll, id, scale = 0.8506) {let headingRadians = Cesium.Math.toRadians(heading);let hpr = new Cesium.HeadingPitchRoll(headingRadians, pitch, roll);let origin = Cesium.Cartesian3.fromDegrees(lng,lat,height);let modelMatrix = Cesium.Transforms.headingPitchRollToFixedFrame(origin,hpr);// scene中添加 gltf 模型let gltfModel = viewer.scene.primitives.add(Cesium.Model.fromGltf({id: id,url: url,modelMatrix: modelMatrix, // 位置矩阵minimumPixelSize: 120, // 模型最小maximumScale: scale, // 模型缩放比例}));//单个模型加载好 获取模型gltf文件里的name模型是否显示model.readyPromise.then(() => {/* 获取Gltf模型该节点name不显示 */model.getNode('Obj3d66_734577_1084_843').show = false})Cesium.when( model.readyPromise ).then( function( model ) {model.activeAnimations.addAll(//播放模型中全部动画,如果需要播放单个动画,可以调用add,传入动画idloop : this.$Cesium.ModelAnimationLoop.REPEAT, //直到被移出activeAnimations,一直播放speedup : 0.5, //加速播放reverse : true //逆序播放});//与其它Primitive一样,对3D模型的选取也是被支持的,当前点击的glTF node id、glTF mess一并被获取:var handler = new this.$Cesium.ScreenSpaceEventHandler( scene.canvas );handler.setInputAction(( movement ) => {var pick = scene.pick( movement.endPosition );if ( this.$Cesium.defined( pick ) && this.$Cesium.defined( pick.node ) && this.$Cesium.defined( pick.mesh ) ) {console.log( 'node: ' + pick.node.name + '. mesh: ' + pick.mesh.name );}}, this.$Cesium.ScreenSpaceEventType.MOUSE_MOVE )return gltfModel}
- getNode获取多个gltf模型身上的模型节点
```javascript
let gltfModel = loadingGltfModel(‘map’,’light.gltf’,item.longitude,
let trafficLightModelList = []; trafficLightModelList.push(gltfModel)item.latitude,heading, 0, 0, item.signalLightId)
this.trafficLightModelList.forEach(item => { item.readyPromise.then(() => { item.getNode(‘lightDirection_0_green’).show = false; }) }) ```
