[Главная] [Новости] [Статьи] [Игры] [Проекты] | [Автор] | |||
[Архив новостей] | ||||
[Форум] | на форуме можно задать вопрос, посмотреть ответы на часто задаваемые вопросы | |||
Основы 3D-программирования DirectX9 в Delphi 2006: теоретические и практические основы создания игр. | ||||
Здравствуйте! Вы попали на информационно-образовательный сайт посвященный информатике, информационным технологиям и компьютерным играм. Подробнее о целях и задачах сайта в разделе Главная. [English version of this page here...] | ||||||
[Базовые уроки по DirectX] [Основы DirectMusic на Delphi] [Основы DirectInput8 на Delphi] [Основы DirectSound8 на Delphi] | ||||||
[Разработка компьютерной игры] [Пример игры Donuts3D] [Delphi DirectX] | ||||||
Что такое Delphi DirectX ? |
[назад] [далее] [к содержанию] | ||
Мы рассмотрим некоторые особенности, которые могут встретиться в примерах delphi_dx9\samples\DirectX90\Direct3D предполагается, что папка delphi_dx9 это та самая папка, куда Вы распаковали содержимое архива delphi_dx9.rar |
||
Прежде чем компилировать любой пример исходного кода в Delphi 2006 (или другой версии, которую Вы используете) нужно 1) Проверить настройки открытого проекта Project > Options > Directories/Conditionals > Search path Вот пути, которые Вам нужно использовать в том случае, если Вы используете код примеров из папки Direct3D архива delphi_dx9.rar ..\..\..\..\dx9_headers\Borland_D9 Если пути к папкам с библиотеками исходного кода delphi directx 9 заданы неверно, то Вы получите ошибки компиляции 2) Перед запуском созданного exe-файла скопируйте в папку проекта файлы D3DX9sab.dll DXErr9ab.dll Если пример использует какие-либо ресурсы (модели, текстуры, звуковые файлы), то Вы должны позаботиться о том, чтобы приложение могло найти их. Должна быть корректно установлена последняя версия DX SDK в Вашей системе, либо Вы должны модифицировать пути к ресурсам в исходном коде так, чтобы разместить их внутри папки данного проекта в отдельной папке, например внутри подпапки Media В противном случае Вы получите ошибки при исполнении приложения |
||
В данном уроке мы попробуем разобраться в работе примера MultiAnimation Основное, что нас будет интересовать в первую очередь - это особенности использования своих собственных анимированных 3D-моделей, содержащих несколько цепочек анимации в приложениях Delphi DirectX 9 |
||
Модели можно создать и анимировать средствами 3ds max. Об этом рассказано в отдельных статьях - посвященных вопросам работы в 3ds max Там же рассмотрены некоторые вопросы создания анимированных моделей и рассказано об их экспорте в формат X, а также об экспортерах, которые можно использовать для этих целей. |
||
Базовая задача этого урока: создать простую анимированную модель с 4мя анимациями и внедрить ее в пример MultiAnimation |
||
Когда я открыл код примера MultiAnimation из Delphi 2006 и попробовал откомпилировать то получил множество предупреждений (warnings), exe-файл при этом был создан, но хотелось бы от них избавиться. | ||
И вот каким образом. в модуле D3DApp.pas EWin32Error нужно заменить на EOSError т. к. EOSError replaces EWin32Error, which is now deprecated procedure
RaiseLastOSError;
Error := EOSError.CreateResFmt(@SOSError, [LastError,
Error.ErrorCode := LastError; |
||
добавить DXTypes в секцию interface пункт uses в модулях D3DFont.pas, Tiny.pas, MultiAnimationUnit.pas, |
||
После этого всё будет ОК, и никаких ошибок и предупреждений! И это хорошо! Теперь наша задача: создать собственную анимированную модель в 3ds max, такую, чтобы она работала в данном примере без изменений в коде или с минимальным количеством таких изменений. Следует сразу же заметить, что модель должна быть анимирована с использованием анимации вида SkinnedMesh, т. е. скелетной анимации. Об этом рассказывается в отдельной статье - Основы 3d-анимации, экспорт скелетной анимации Если Вы используете 3ds max самых последних версий (2008, 2009), то для экспорта анимации лучше всего подойдет экспортер kwXport, о нём немного рассказано в статье Особенности экспорта моделей и анимации экспортером kWXPort080719 из 3ds max 2009 |
||
возьмем за основу модель roboo.rar создав четыре простейшие анимации и экспортируем в формат X Анимационные последовательности должны быть с теми же именами, что и у модели tiny_4anim.x т.е. - Loiter, Walk, Jog, Wave Почему? Откройте Блокнотом файл tiny_4anim.x и выполните поиск по ключевому слову AnimationSet Вы найдете внутри файла именно такие имена анимационных последовательностей, а они как раз и используются в коде примера MultiAnimation Поэтому чтобы пока избежать изменений кода нужно использовать именно такие анимации и в такой последовательности В нашем примере Loiter 0-20 кадры, Walk 20-40, Jog 40-60, Wave 60-80 Именно эти анимационные последовательности нужно задать при экспорте roboo экспортером kwXport Причем добавлять анимационные последовательности нужно с конца - сначала Wave, затем Jog, потом Walk и Loiter |
||
Самое главное, что потребуется сделать прежде чем выполнять экспорт анимированной модели - из всех объектов представляющих персонаж собрать объект Character. Для этого нужно выбрать модель, все элементы скелета, иерархию связанных объектов (dummy и IK-Chain) - т. е. все элементы представляющие персонаж как единое целое. После этого нужно выполнить команду Create Character Поскольку команда может отсутствовать в меню 3ds max, то ее нужно туда сначала добавить, например добавим эту команду в раздел меню Animation Customize > Customize User Interface > Menus > выбрать Category: Character > нажать New > ввести имя, например Create a Character > в правой части окна открыть узел Animation и перетащить в неё из левой части пункт Create a Character |
||
Теперь нужно нажать кнопку Save и сохранить изменения в файле настроек интерфейса 3ds max | ||
После этого в меню Animation появится новый пункт Create a Character - это и есть та самая команда которую нужно выполнить выбрав все элементы персонажа | ||
После этого можно выполнить экспорт созданной анимированной модели в формат X используя указанные анимационные последовательности начиная с конца, а затем проверить результат работы с данной моделью в приложении MultiAnimation.exe | ||
Для использования модели roboo.x в коде модуля MultiAnimationUnit.pas нужно строку Result := DXUtil_FindMediaFileCch(sXFile, MAX_PATH, 'tiny_4anim.x'); заменить на Result := DXUtil_FindMediaFileCch(sXFile, MAX_PATH, 'Media\Models\roboo.x'); в данном примере модель я расположил внутри указанной папки, которая находится в папке примера MultiAnimation Если модель использует текстуру, а текстура размещена например в папке Media\Textures, то нужно открыть текстовый файл roboo.x найти в нём строку TextureFileName содержащую ссылку на имя файла текстуры и задать данный относительный путь, т.е.
|
||
Если модель состоит из нескольких мешей, то такую замену нужно выполнить для каждого из них выполнив последовательный поиск по всему файлу. | ||
После этого наличие текстуры на модели гарантировано. | ||
Модель содержащую готовый к экспорту персонаж можно скачать с архивом roboo_4anim.rar Внутри данного архива содержатся две модели в формате 3ds max 2009 roboo_anim_go_4animset.max - еще не содержащая добавления объекта Character и roboo_anim_go_4animset_refine.max - содержащая объект Character, включающий всю иерархию объектов принадлежащих данному персонажу |
||
Если попытаться экспортировать модель roboo_anim_go_4animset.max то экспортированный результат roboo.x будет давать ошибку в приложении, из-за отсутствия корневого объекта Character модель roboo_anim_go_4animset_refine.max позволит решить эту проблему и экспортированный результат прекрасно работает в приложении MultiAnimation |
||
Заметка по поводу пересохранения модели в двоичный формат X. После того, как работа с X-файлом анимированной модели проверена, Вам захочется пересохранить эту модель в двоичном формате X-файла. Такой формат является более компакнтым, но его уже нельзя будет редактировать как обычный текстовый файл. Для пересохранения проверенной в работе модели из текстового формата X в двоичный формат можно использовать утилиту mview.exe из DX SDK 8. Если у Вас под рукой этой утилиты нет, то я Вам могу ее предоставить. Также можно обратиться к документации по DirectX к разделу DirectX Graphics > Direct3D 9 > Programming Guide > Getting Started > X Files (Legacy) > Loading an X File, Saving to an X File где подробно описано как происходит работа с X-файлами. Я попробовал использовать анимированную модель в двоичном формате X, но использование ее в приложении MultiAnimation приводит к ошибке. Позже нужно будет разобраться какую особенность нужно учитывать, чтобы загружать анимированную модель в двоичном формате. |
||
Как видим, барьер преодолен и можно смело двигаться дальше - создавать более сложные модели и анимации персонажей и внедрять их в свои приложения Delphi DirectX 9 | ||
В следующем уроке Мы займемся изучением кода примера MultiAnimation и перейдем к написанию собственного класса для работы с анимированными 3D-моделями | ||
[назад] [далее] [к содержанию] |
Обновления
и новости о развитии Delphi DirectX проекта http://www.megainformaticsite.pochta.ru http://www.megainformatic.boom.ru http://www.megainformatic.narod.ru
|
|||||||||
по всем вопросам пишите на megainformatic@mail.ru или оставьте сообщение на форуме |
|||||||||
Обмен ссылками | |||||||||
|
|||||||||
(с) МЕГА ИНФОРМАТИК 2006-2009 |