Отслеживание рук в виртуальной реальности в сочетании с пользовательскими моделями

Я разрабатываю VR-игру, в которой вы можете выбирать между несколькими персонажами и, следовательно, вам нужны разные модели рук. Целевыми платформами являются Meta Quest 2, а также PCVR, и я хочу поддерживать функцию отслеживания рук Quests.

Вот что я хочу, дальше то, что я сделал до сих пор:
В идеале я могу представить, что это выглядит так:

  • Есть арматура с определенным набором костей, например palm, thumbLower, thumbUpper, indexLower, indexMiddle, indexUpper и т. д.
  • Для этой арматуры есть несколько анимаций, например relaxed, fist, indexFingerPointing.
  • У меня есть сценарий, который знает о наборе костей и существующих анимациях и может использовать любую модель, если у нее есть арматура с точно таким же именем. Затем скрипт может проверить отслеживание рук в Quest 2 и, если он включен, перемещать суставы непосредственно в соответствии с входными данными отслеживания, в противном случае использовать захват и триггер любого контроллера для перехода между relaxed (без триггера, без захвата), indexFingerPointing (без триггера, но нажата ручка). ) и fist (спусковой крючок и рукоятка нажаты)

Вот что я сделал:
При поиске пакетов Unity я нашел XR Interaction Toolkit и XR Hands, которые я использую в версиях 2.3.0 и 1.1.0 соответственно.
XR Hands поставляется с HandVisualizer, который является отличной отправной точкой, но у меня возникают проблемы с использованием моделей рук, отличных от тех, которые входят в комплект. Это были шаги:

  1. купил коллекцию моделей рук на Unity AssetStore
  2. импортировал RightHand.fbx, который поставляется с пакетом XR Hands в блендере (он поставляется с арматурой, которая, я думаю, имеет определенную схему именования, поэтому я хотел ее скопировать)
  3. также импортировал одну из моделей из коллекции, скажем GlovesHandRight
  4. удалил GlovesHandRight арматуру, но сохранил сетку и удалил RightHands сетку, но сохранил арматуру
  5. переместил все кости прежней RightHands арматуры, чтобы они соответствовали GlovesHandRight
  6. в объектном режиме выбрал GlovesHandRight, затем арматуру и выбрал "с автоматическими весами"

В режиме позы я вижу, как сетка деформируется, когда я двигаю кости.
И в объектном режиме иерархия сцен выглядит точно так же, как в исходном RightHand.fbx файле.

После экспорта файла в FBX и использования его со скриптом HandVisualizer вместо оригинального RightHand.fbx я получаю сообщение об ошибке:

Hand transform hierarchy not set correctly - couldn't find Wrist joint!
Hand transform hierarchy not set correctly - couldn't find ThumbMetacarpal joint!
Hand transform hierarchy not set correctly - couldn't find IndexMetacarpal joint!
Hand transform hierarchy not set correctly - couldn't find MiddleMetacarpal joint!
Hand transform hierarchy not set correctly - couldn't find RingMetacarpal joint!
Hand transform hierarchy not set correctly - couldn't find LittleMetacarpal joint!
all at
UnityEngine.XR.Hands.Samples.VisualizerSample.HandVisualizer:Update () (at Assets/Samples/XR Hands/1.1.0/HandVisualizer/Scripts/HandVisualizer.cs:144)

Поскольку я новичок в блендере (именно поэтому вышеизложенное заняло у меня около 3 часов), любой вклад в отношении того, что может вызвать проблему, очень ценится, а также любой вклад в то, как подойти к этой проблеме по-другому, спасибо

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
136
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я обнаружил, что проблема просто в том, что блендер добавляет дополнительную корневую кость при экспорте в FBX, поэтому я попробовал этот пользовательский экспортер fbx https://github.com/A-Ribeiro/CustomBlenderFBXExporter, и теперь я могу видеть пользовательский руки работают с отслеживанием рук Quest 2, так что я считаю, что это решено

Другие вопросы по теме