Mars3d的gltf零部件控制(运载火箭)示例关于gltf内部的animations说明

2023-12-13 05:43:33

示例链地址:

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);

? ? // });

? })

}

文章来源:https://blog.csdn.net/m0_69803146/article/details/134951687
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。