Blender 3D, XNA и немного гибкости костей

Грэг Дункан

Сегодняшний проект продемонстрирует программу Blender – свободную утилиту с открытым исходным кодом для трехмерного проектирования и XNA. Две замечательные вкусные вещи, которые вкуснее вместе… clip_image002

Анимация одного скелета в модели Blender 3D с помощью XNA

Есть хорошие примеры, демонстрирующие как сделать анимацию в 3D-пакете и проиграть ее в XNA, но что если эта анимация должна включать более сложные действия, чем стандартные “идти”, “бежать", “прыгать” и т. д.? Что если вы хотите чтобы ваша 3D-модель взаимодействовала со своим 3D-окружением? Хорошо, потом вы захотите анимировать отдельные части вашей 3D-модели, манипулируя ее с помощью кода. Это руководство сделает попытку показать, как разработать простую 3D-модель с помощью Blender, натянуть ее на кости арматуры и наконец как управлять ею в XNA, используя С#.

...

Задачи

Главное, чего я надеюсь достичь с помощью этой статьи, это показать вам как:

  1. Создать простую сетку в программе Blender (труба)
  2. Добавить на сетку кожу используя инструмент UV-развертки
  3. Добавить к сетке арматуру (кости)
  4. Объяснить сетке как деформироваться, когда двигается арматура (кости)
  5. Экспортировать сетку, арматуру и кожу в формат, который может использовать XNA
  6. Импортировать модель в XNA с настраиваемым конвейером контента
  7. С помощью кода манипулировать сеткой, двигая арматуру
  • Шаг 1: Создать цилиндр
  • Шаг 2: Добавить кожу используя UV-развертку трубы
  • Шаг 3: Поделить цилиндр на две части
  • Шаг 4: Создать кости
  • Шаг 5: Связать цилиндр с костями
  • Шаг 6: Поиграть с демонстрацией костей!
  • Шаг 7: Экспортировать в XNA

clip_image004

clip_image006

XNA

Итак, теперь у нас есть модель, которую мы можем использовать в XNA. Чтобы ввести модель в игру необходимо импортировать ее через конвейер контента. Конвейер контента берет наш контент и нормализует его таким образом, чтобы он появился в нашей игре, как стандартный структурированный объект, который можно просто использовать. Я основывал XNA-часть проекта на примерах, предоставленных Microsoft. Образец модели с поверхностью использует существующую модель, у которой есть встроенная анимация (проход), запускаемую кодом. Хотя это здорово, я хочу продемонстрировать, как вы могли бы манипулировать ею, основываясь на ее собственной анимации, а не запускать предопределенную. Кстати если вы используете тот же код, который я демонстрируют с моделью «чувак», вы можете заставить его делать весьма неправдоподобную гимнастику!

Конвейер контента

Пример модели с поверхностью загружает модель 'dude . fdx' с помощью пользовательского конвейера контента. Мы собираемся внести некоторые модификации, так чтобы он не загружал анимации нашей модели “трубы”, потому что у нас их нет. Чтобы сделать это откройте решение Skinned Model, перейдите к проекту SkinnedModelPipelineи удалите методыProcessAnimations (оба) и закомментируйте инициализацию словаря анимации.

clip_image008

Если вам интересно использование XNA c 3D-моделями из пакета наподобие Blender’а, эта статья должна пробить вам дорогу…