【发布时间】:2017-08-17 00:49:32
【问题描述】:
我正在尝试模拟物体上闪烁的灯光,因此我正在为材质颜色设置动画。然后我通过 collada 导出器将搅拌机模型导出到 three.js。
为了演示这个问题,我创建了一个带有单个立方体的模型,我将颜色从红色变为绿色,然后再变为红色。我也稍微移动了立方体。
当我在搅拌机中播放动画时,我看到颜色发生了变化,并且立方体发生了位移。但是,当我使用 collada 将其导出到 three.js 中时,立方体会移动,但它会保持一种颜色(在我导出它时处于活动状态的立方体的颜色,例如它可以是红色或绿色,但总是 一个颜色)。我有created a plunker 证明了这个问题。我的 collada 代码基于 three.js collada pump 示例。这是用于加载模型的代码:
factory.loadColladaModel = function () {
console.log(`now in loadColladaModel`);
var loader = new THREE.ColladaLoader();
loader.options.convertUpAxis = true;
var promise = new Promise( (resolve, reject) => {
loader.load( 'color_animation.dae', (collada) => {
console.log(`now in collada load closure`);
let model = collada.scene;
factory.scene.add(model);
factory.animations = collada.animations;
model.scale.x = model.scale.y = model.scale.z = 5.0;
for ( var i = 0; i < factory.animations.length; ++i ) {
var animation = factory.animations[ i ];
var kfAnimation = new THREE.KeyFrameAnimation( animation );
kfAnimation.timeScale = 1;
factory.kfAnimations.push( kfAnimation );
}
resolve('loaded');
})
})
return promise;
}
为了让 three.js 为材质(颜色)变化和运动设置动画,我需要做什么?我确实在 collada 文件的“动画”标签下看到了颜色条目,所以我认为 collada 支持它。我看到了这个prior question,有人必须设置 morphTargets 才能让材料工作。我也需要做这样的事情吗? morphTargets 仅用于运动,还是也用于颜色?
三个.js r84 搅拌机 2.78b
非常感谢。
【问题讨论】: