Как перенацелить ориентиры 3D-позы (точки в 3D-пространстве) на настроенную модель гуманоида в Three.js?Javascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Гость
 Как перенацелить ориентиры 3D-позы (точки в 3D-пространстве) на настроенную модель гуманоида в Three.js?

Сообщение Гость »

Я пытаюсь реализовать 3D-аватар в Three.js, извлекая ориентиры 3D-позы человека (кадр за кадром) из видео (с использованием MediaPipe/PoseFormat). В настоящее время у меня есть файл .pose, который содержит покадровые ориентиры для тела, левой и правой рук, извлеченные из видео. Каждый ориентир имеет (x,y,z) плюс показатель достоверности c. Поскольку изначально они представлены в пиксельных единицах, я нормализовал их, чтобы можно было визуализировать в трехмерном пространстве.
Что я уже сделал:
Анимация фигурок: я создал небольшие сферы для каждого сустава (например, плеча, локтя, запястья) и соединил их с цилиндрами, чтобы сформировать «фигурку палочки». Поместив каждую сферу на ориентир (x,y,z) и нарисовав цилиндр между сферами, я вижу примерного персонажа, который правильно движется и правильно имитирует человека на видео.
Изображение

Загружена оснащенная 3D-модель:< /эм> Я импортировал модель гуманоида в формате .gltf со скелетом (кости для каждой части тела).
например:

Код: Выделить всё

model.traverse((child) => {
if (child.isBone) {
bonesMap[child.name] = child;
}
});
Попытка перенацеливания: Для каждого кадра я вычисляю векторы направления для конечностей (например, UpperArm → foreArm = (elbowPos - плечоPos)) в мировом пространстве. Затем я пытаюсь задать вращение кости с помощью такой функции:

Код: Выделить всё

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) в нейтральной (связанной) позе. Как определить ось по умолчанию для каждой кости, чтобы вычислить правильное смещение вращения?
Надежный подход/библиотека: Существует ли библиотека, алгоритм или код шаблон, который:
  • преобразует ориентиры из мирового пространства → локального пространства родительской кости;
  • определяет «направление позы покоя» кости. », измерив его в креплении буровой установки поза
  • Вычисляет окончательное вращение для всех костей, чтобы модель соответствовала моей анимации фигурки?
Вот моя текущая реализация в CodeSandbox, содержащая анимацию фигурок и попытку ретаргетинга 3D-модели: https://codesandbox.io/p/github/AzizSta ... ue&embed=1
Исходный код: https://github.com/AzizStark/3DAvatar
Любые полезные предложения или примеры кода по точному применению покадровых данных об ориентирах к сфальсифицированной модели в Three.js будут очень полезны. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/793 ... umanoid-mo
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как обрабатывать ориентиры позы, левой руки, правой руки и лица в правильном порядке с помощью MediaPipe?
    Anonymous » » в форуме Android
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Как экспортировать настроенную модель SetFit в формат ONNX?
    Anonymous » » в форуме Python
    0 Ответы
    57 Просмотры
    Последнее сообщение Anonymous
  • Как добавить настроенную модель Gemini в мое приложение в студии Android
    Anonymous » » в форуме JAVA
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Как загрузить настроенную модель фильма Vision? Чехол для модели Moondream
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Как загрузить настроенную модель фильма Vision? Чехол для модели Moondream
    Anonymous » » в форуме Python
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Javascript»