Вставить скелет в 3D-модель программно

Фон


Я работаю над проектом, где пользователь сканируется Kinect (v2). Результатом будет сгенерированная 3D-модель, которая подходит для использования в играх.

Аспект сканирования идет довольно хорошо, и я создал несколько хороших пользовательских моделей.
Пример: 3D модель пользователя Примечание: это всего лишь ранняя тестовая модель. Это все еще нужно очистить, и позиция должна измениться, чтобы правильно прочитать скелетные данные.


проблема


Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я не уверен, как поместить данные скелета в сгенерированную 3D-модель. Кажется, я не могу найти программу, которая позволила бы мне программно вставить скелет в 3D-модель. Я хотел бы сделать это либо с помощью программы, которой я могу управлять программно, либо настроить файл 3D-модели таким образом, чтобы данные скелета были включены в файл.


Что я пробовал


Я искал похожие вопросы в Google и Stackru, но они обычно касаются либо захвата движения, либо скелетной анимации. Я знаю, что у Maya есть возможность вставлять скелеты в 3D-модели, но, насколько я могу судить, это всегда делается вручную. Может быть, есть более технический термин для проблемы, которую я пытаюсь решить, но я не знаю этого.

У меня есть ход мыслей о том, как добиться вставки скелета. Я представляю, как это будет выглядеть так:

  1. Сканирование пользователя и создание 3D-модели с Kinect;

    1.2. Чистая модель пользователя, избавление от любых деформаций или ненужной информации. Закройте отверстия, оставленные в процессе очистки.

  2. Сканирование данных скелета пользователя с помощью Kinect.

    2.2. Извлечь данные скелета.
    2,3. Получите совместные местоположения и сохраните как xyz-координаты для трехмерного пространства. Храните длину костей и направления.

  3. Читайте данные 3D скелета в программе, которая может создавать скелеты.

  4. Сохраните новую модель со вставленным скелетом.


Вопрос


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

Заранее спасибо.

Примечание. Я решил опубликовать этот вопрос здесь, а не на графическом дизайнере Stack Exchange (или других сайтах Stack Exchange), потому что считаю, что он больше связан с кодированием и, возможно, более полезен для людей, которые будут искать здесь в будущем. Извиняюсь, если он размещен не на том сайте.

1 ответ

Решение

Сложная часть вашего вопроса заключается в том, что вы подразумеваете под "вставкой скелета". Обычно данные о костях очень отделены от вашей геометрии и хранятся в разных местах графика сцены (при этом данные о костях имеют иерархическую природу).

Существуют форматы файлов, которые вы можете экспортировать туда, где вы можете установить некоторую связь между вашей геометрией и каркасом, но это очень зависит от формата того, как вы связываете их вместе (например: FBX против Collada).

Вероятно, наиболее близкой вещью к "вставке" или, более уместно, "прикреплению" скелета к сетке является скиннинг. Там вы вычисляете распределение веса, в основном определяя, как каждая кость влияет на данную вершину в вашей сетке.

Это сложная часть, чтобы понять правильно (и программно, и художественно), и, в зависимости от ваших потребностей в качестве, часто является полуавтоматическим решением в лучшем случае для потребностей самого высокого качества (коммерческие игры, фильмы и т. Д.), Когда художники работают над настройкой результирующее назначение веса и / или скелет.

Существуют алгоритмы, которые становятся довольно сложными в определении этих назначений веса, начиная от простой эвристики, такой как просто присвоение весов на основе расстояния до ближайшей линии (очень грубое и часто распадающееся вблизи сложных участков, таких как таз или плечо), или алгоритмы, которые фактически учитывают сетку. как сплошной объем (используя воксели или тетраэдрические представления), чтобы попытаться назначить веса. Пример: http://blog.wolfire.com/2009/11/volumetric-heat-diffusion-skinning/

Тем не менее, вы можете получить приличные результаты, используя алгоритм типа дельта-каши, который позволяет вам немного неаккуратно распределять вес, но при этом получать достаточно плавные деформации.

Теперь, если вы хотите сделать это внешне, подойдет практически любое программное обеспечение для 3D-анимации, включая бесплатные, такие как Blender. Тем не менее, создание скинов и анимация персонажей в целом требуют определенных художественных навыков и терпения, поэтому стоит отметить, что это не так просто, как может показаться, что персонажи прыгают, танцуют, приседают и бегают. и по-прежнему хорошо выглядеть, даже если у вас есть скелет заранее. Эта весовая ассоциация от скелета до геометрии является самой сложной частью. Это часто результат многих часов работы художников над деформациями, чтобы заставить их выглядеть правильно в широком спектре поз.

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