У меня есть несколько моделей в формате Collada (knight.dae & archer.dae). Моя проблема в том, что я не могу заставить их всех анимировать (скажем, Idle with is 2-3frames). Когда я загружаю сцену, я получаю только одну анимированную модель и одну стильную модель (без анимации, ничего нет, это похоже на то, что он моделируется в 3ds max). Я знаю, что моя проблема связана с кожей и морфами, но я искал много и не нашел ответа, и из-за моего отсутствия опыта мои попытки потерпели неудачу. Помощь pls!Несколько разных сцен Collada с анимацией Three.js не будут работать
//animation length of the model is 150(and it hosts 4 different animations)
var startFrame = 0, endFrame = 150, totalFrames = endFrame - startFrame, lastFrame;
var urls = [];
var characters = [];
urls.push('3D/archer/archer.dae');
urls.push('3D/archer/archer.dae');
//here's the loader
loader = new THREE.ColladaLoader();
loader.options.convertUpAxis = true;
for (var i=0;i<urls.length;i++) {
loader.load(urls[i],function colladaReady(collada){
player = collada.scene;
player.scale.x = player.scale.y = player.scale.z =10;
player.position.y=115;
player.position.z=i*200;
player.updateMatrix()
skin = collada.skins [ 0 ];
//skinArray.push(skin);;
var mesh=new THREE.Mesh(new THREE.CubeGeometry(10,20,10,1,1,1));
player.add(mesh);
characters.push(mesh);
scene.add(player);
});
}
//i added the cube because i use raycaster and it doesnt detect collada obj
// Here is where i try my animation.
function animate() {
requestAnimationFrame(animate);
render();
}
function render() {
update();
renderer.render(scene,camera);
}
function update() {
var delta = clock.getDelta();
delta = delta/2;
if (t > 1) t = 0;
if (skin)
{
skin.morphTargetInfluences[lastFrame] = 0;
var currentFrame = startFrame + Math.floor(t*totalFrames);
skin.morphTargetInfluences[currentFrame] = 1;
t += delta;
lastFrame = currentFrame;
}
}
благодарит вас за ответ, но, к сожалению, он не работал, если я использовал ваш код для своих моделей с морфологическим странным (масштаб большой и не анимированный). – user2247215