В настоящее время я работаю над браузерным приложением типа тамагочи в three.js.Но в настоящее время я застрял в реализации руки, которая поглаживает аватара при нажатии.
Рука - это сфальсифицированная модель Blender с 2-мя анимациями, режимом ожидания и анимацией нажатия.В GLTF Viewer модель отлично работает с обеими анимациями.Но при добавлении в js рука либо полностью искажается, либо отображается правильно, но позиции не распознаются (для движения с курсором).
В большинстве примеров, которые я просматривал, добавлялась только общая сцена,но не только одна анимированная модель.В обеих версиях этих анимаций я получаю ошибку анимации.
Код для искаженной версии:
loader.load('resources/models/gltf/Hand.gltf', function(gltf) {
gltf.scene.traverse(function(node) {
if (node.isMesh) hand = node;
});
//hand.material.morphTargets = true;
scene.add(hand);
mixer = new THREE.AnimationMixer(hand);
clips = hand.animations;
hand = gltf;
scene.add(hand.scene);
});
Вторая версия, где рука отображается правильно, но позиции для обработки событийне распознаются.
loader.load('resources/models/gltf/Hand.gltf', function(gltf) {
var hand = gltf.scene;
var animations = gltf.animations;
mixer = new THREE.AnimationMixer(hand);
for (var i = 0; i < animations.length; i++) {
mixer.clipAction(animations[i]).play();
}
scene.add(hand);
});
функция для бездействующей анимации:
function idleAnim() {
var idleClip = THREE.AnimationClip.findByName(clips, "Idle");
var action = mixer.clipAction(idleClip);
action.play();
console.log("idling");
}
Ссылка: https://github.com/JoeJoe49/AnimTest
Заранее спасибо и приветствую.