示例链地址:
1.功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技
问题:
1.火箭模型gltf内部的animations好像获取不到,在示例的学习过程中,示例中控制的只是构件信息 articulations。
2.Cesium是这种写法,在思考怎么在Mars3d中实现转换成graphic添加,以此来控制模型内部的动画效果
3.通过原始的写法尝试后,发现加载后没有动画效果,应该是代码的使用问题
解决方案:
1.通过学习示例关于addDemoGraphic2,来手动控制获取gltf模型内部的动画后的操作。
相关示例地址:
功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技
相关示例代码:
function addDemoGraphic2(graphicLayer) {
const graphic = new mars3d.graphic.ModelPrimitive({
name: "风机",
position: [116.35104, 30.86225, 374.4],
style: {
url: "//data.mars3d.cn/gltf/mars/fengche.gltf",
colorBlendMode: Cesium.ColorBlendMode.MIX,
heading: 270,
scale: 30,
minimumPixelSize: 100,
runAnimations: false, // 关闭启动动画
distanceDisplayCondition: true,
distanceDisplayCondition_near: 0,
distanceDisplayCondition_far: 9000,
distanceDisplayBillboard: {
// 当视角距离超过一定距离(distanceDisplayCondition_far定义的) 后显示为图标对象的样式
image: "img/marker/square.png",
scale: 1
},
// 高亮时的样式(默认为鼠标移入,也可以指定type:'click'单击高亮),构造后也可以openHighlight、closeHighlight方法来手动调用
highlight: {
silhouette: true,
silhouetteColor: "#00ffff",
silhouetteSize: 3
}
},
attr: { remark: "示例2" }
})
graphicLayer.addGraphic(graphic) // 还可以另外一种写法: graphic.addTo(graphicLayer)
// 手动按需启动动画
graphic.on(mars3d.EventType.load, function (event) {
console.log("风机 模型加载完成", event)
const model = event.model
// 参考API: http://mars3d.cn/api/cesium/ModelAnimationCollection.html
model.activeAnimations.addAll({
multiplier: 0.5, // Play at half-speed
loop: Cesium.ModelAnimationLoop.REPEAT // Loop the animations
})
// let animation = model.activeAnimations.add({
// index: 0, //第一个叶子
// multiplier: 0.5, // Play at double speed
// loop: Cesium.ModelAnimationLoop.REPEAT, // Loop the animation
// });
// animation.start.addEventListener(function (model, animation) {
// console.log("Animation started: " + animation.name);
// });
// animation.update.addEventListener(function (model, animation, time) {
// console.log("Animation updated: " + animation.name + ". glTF animation time: " + time);
// });
// animation.stop.addEventListener(function (model, animation) {
// console.log("Animation stopped: " + animation.name);
// });
})
}