Войти
Уголок tool-программСтатьи

Экспорт анимации с нуля.

Автор:

В этой статье я расскажу о создании анимированного объекта с нуля в 3D-пакете и написание плагина экспорта (тоже с нуля). Также я прикрепляю к статье исходные коды плагина и вьювера анимации для VC++6.

Буду надеяться, что эта статья поможет начинающим разработчикам полностью исчерпать вопросы об Keyframe Morphing’е.
8<---------

Введение
Что нам понадобится
Анимирование объекта
Написание плагина экспорта
  1. Настройка компилятора
  2. Описание базовых классов / функций DLL
  3. Описание базовых классов / функций экспорта
  4. Реализация окна параметров
  5. Создание def – файла
Экспорт из 3Ds-MAX

Введение

В Интернете очень мало русскоязычных статей, описывающих общеизвестные методы анимирования объектов. Поэтому начинающие разработчики часто задают на форумах один и тот же вопрос: “Экспорт и реализация анимации”.

Из моей предыдущей статьи можно было понять суть применения такого метода анимирования объектов как Keyframe Morphing (морфирование по ключевым кадрам). Но я решил написать новую статью, полностью исчерпывающую эту тему.

Что нам понадобится

Во-первых, для создания анимированных мешей мы будем использовать всеми любимый 3DS-Max. Лучше последней версии 8. Для анимирования персонажей лучше использовать бипед (готовый скелет, к которому стоит только привязать сетку и можно начать анимировать). Но в нашем случае я не стану затруднять материал, и ограничимся экспортом неживого объекта (будем анимировать водяную мельницу). Для этого будем использовать кости (bone).

Во-вторых, нам понадобится Visual C++ 6 для написания плагина экспорта и вьювера анимации. Конечно, компилятор вы можете использовать, какой вы предпочитаете, просто мои проекты сделаны в VC++6.

В-третьих, обязательно нужен MaxSdk. Это Setup Development Kit для 3D-Max’а, позволяющий писать утилиты. MaxSdk обычно находится на диске, с которого вы устанавливали сам пакет (поясняю для новичков). После того как MaxSdk установлен, нужно указать к *.h и *.lib директории в компиляторе:

maxsdk-include | Экспорт анимации с нуля.
maxsdk-lib | Экспорт анимации с нуля.

Теперь все необходимое подготовлено и можно начинать.

Анимирование объекта

У нас есть обычная 3d-модель (в нашем случае это мельница). Нам нужно её проанимировать. Я буду сразу описывать наш конкретный случай анимирования мельницы.

Мельница состоит из колеса и основания, причем эти два объекта приаттачены, т.к. мы экспортируем один объект сцены.

Создаем две кости (Create->Systems->Bones) Bone1 и Bone2 с обычными параметрами.

Далее на сетку применяем модификатор skin.

Теперь добавляем в список костей две наши кости.

Далее привязываем все вершины основания к Bone1, а все вершины колеса к Bone2.

Анимируем поворот кости Bone2 на 360 градусов.

Расставляем ключевые кадры через всю анимацию.

Анимация закончена.

Написание плагина экспорта

1. Настройка компилятора

Наш плагин будет представлять DLL-библиотеку (Dynamic Link Library), которую мы в дальнейшем подключим к MAX’у.

Если у вас установлен лицензионный MAX, то смело пропускайте следующий шаг. Но если вы обладатель “крякнутой” пиратской копии, то Debug-конфигурация вам будет недоступна. Вот как решить эту проблему:

Создаем свою собственную конфигурацию, копированием Debug-конфигурации, и назовем её Plug_Debug например.

Далее нужно настроить настройки проекта. Для этого открываем окно Project->Settings, и выполняем следующие действия (для конфигурации Plug_Debug):

•  Вкладка Generals: Intermediate files, и Output files выставляем в Plug_Debug.
•  Вкладка Debug: Правее поля Executable for debug session нажимаем на кнопку и выбираем exe-файл 3dsmax.exe (это для того, чтобы нам для отладки плагина каждый раз не запускать MAX вручную).
•  Вкладка C/C++: в выпадающем списке Category выбираем Code Generation: выставляем поле Use run-time library в Multiheaded DLL.
•  Вкладка Link: Output file name выставляем в “ваш_путь_к_3dsmax \ stdplugs \ имя _плагина.dle”.

Компилятор настроен для начала работы над плагином.

Страницы: 1 2 37 8 Следующая »

28 июня 2006 (Обновление: 25 сен. 2006)

Комментарии [29]