2015-05-01 7 views
0

фон

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


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

Сканирующий аспект идет неплохо, и я создал несколько хороших моделей пользователей.
Пример: A 3D model of a user Примечание: Это только ранняя тестовая модель. Его все еще нужно очистить, и необходимо изменить положение, чтобы правильно считывать скелетные данные.


Проблема


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


Что есть я пытался


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

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

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

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

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

    2.2. Извлеките данные скелета.
    2.3. Получите совместные местоположения и храните их как координаты xyz для 3D-пространства. Сохраните длину и направления костей.

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

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


Вопрос


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

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

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

ответ

0

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

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

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

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

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

Однако вы можете получить приличные результаты с помощью алгоритма, такого как delta mush, который позволяет вам получить немного неряшливый с назначением веса, но все же получить разумно гладкие деформации.

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

+0

Спасибо, что ваш ответ дал хорошее представление о том, что мне нужно было знать. Ссылка на объемную диффузию тепла диффузии очень полезна (люблю волка). К сожалению, я сейчас в стадии программной очистки 3d модели, и после этого продолжит вставлять скелет. Поэтому до тех пор я не буду уверен, что это «ответ».Я обязательно вернусь и приму его, как только я еще немного его изучил и попытался реализовать его. Заранее спасибо! – Bono

+1

Одна вещь, которую вы, возможно, захотите сделать, это выбрать формат для экспорта этих игровых активов. FBX довольно популярен и широко поддерживается (Unity, Unreal Engine и т. Д.), Так как это от AutoDesk (своего рода монополизатор 3D-индустрии). После этого нужно понимать формат (в случае FBX у них есть SDK, который вы можете использовать, чтобы не иметь дело с данными формата файла). Тогда вы можете бесплатно экспортировать этот сфальсифицированный актив без помощи другого программного обеспечения - основная часть работы тогда сводится к тому, чтобы приступить к хорошей реализации назначения веса. –

+1

Другое дело, если вы, возможно, не знаете (хотя вы уже упоминали что-то о позе), так это то, что вы обычно хотите сканировать в этих персонажах в виде Т-позы (например, да Винчи) - руки, ноги раздвинуты. Основная причина заключается в том, что эти назначения весовых карт больше всего срабатывают над этими суставными областями, соединяющими конечности с туловищем - так как вершины расположены так близко к туловищу (верхняя часть грудной клетки, таз, например), что трудно создать весовое назначение для снятия шкурки если они не разбросаны. Вы также можете сделать что-то более расслабленное и естественное, но T-поза полезна, если вы ... –