Что я уже сделал:
Анимация фигурок: я создал небольшие сферы для каждого сустава (например, плеча, локтя, запястья) и соединил их с цилиндрами, чтобы сформировать «фигурку палочки». Поместив каждую сферу на ориентир (x,y,z) и нарисовав цилиндр между сферами, я вижу примерного персонажа, который правильно движется и правильно имитирует человека на видео.

Загружена оснащенная 3D-модель:< /эм> Я импортировал модель гуманоида в формате .gltf со скелетом (кости для каждой части тела).
например:
Код: Выделить всё
model.traverse((child) => {
if (child.isBone) {
bonesMap[child.name] = child;
}
});
Код: Выделить всё
function setBoneDirection(bone, parentPos, childPos) {
const direction = new THREE.Vector3()
.subVectors(childPos, parentPos)
.normalize();
// Then set the bone’s quaternion somehow...
}

Кости двигаются, но направления сбиваются, и рука/предплечье неловко переворачивается. Локоть сгибается несколько правильно, но скручивается в неправильной ориентации.
Мои основные вопросы:
Локальное и . Мировое пространство: Мои ориентиры находятся в мировом пространстве, но преобразование каждой кости скелета определяется в локальном пространстве (относительно ее родителя). Поэтому, если я перемещаю плечо, это влияет на вращение нижней руки. Как правильно преобразовать данные позы в локальное пространство каждой кости, чтобы цепь двигалась правильно?
Направления привязки позы/позы покоя: Кости установки, вероятно, не 't выровнены по
(0,1,0) (0,1,0) или (0,-1,0) (0,-1,0) в нейтральной (связанной) позе. Как определить ось по умолчанию для каждой кости, чтобы вычислить правильное смещение вращения?
Надежный подход/библиотека: Существует ли библиотека, алгоритм или код шаблон, который:
- преобразует ориентиры из мирового пространства → локального пространства родительской кости;
- определяет «направление позы покоя» кости. », измерив его в креплении буровой установки поза
- Вычисляет окончательное вращение для всех костей, чтобы модель соответствовала моей анимации фигурки?
Исходный код: https://github.com/AzizStark/3DAvatar
Любые полезные предложения или примеры кода по точному применению покадровых данных об ориентирах к сфальсифицированной модели в Three.js будут очень полезны. Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/793 ... umanoid-mo