netlib.narod.ru | < Назад | Оглавление | Далее > |
Поскольку для анимации абсолютно необходимы трехмерные объекты, следует рассмотреть несколько способов создания моделей. Обычно эта работа выполняется с помощью профессиональных пакетов трехмерного моделирования, таких как Softimage, Maya или 3ds max. Есть несколько свободно распространяемых или более дешевых программ моделирования, таких как trueSpace, MilkShape и Rhino.
DirectX поддерживает работу с трехмерными моделями, представленными в виде файлов .x. Большинство программ моделирования поддерживают преобразование собственных форматов в формат .x, так что вам не придется беспокоиться об экспорте моделей.
Парни в Microsoft были достаточно любезны и снабдили вас исходным кодом программы экспорта файлов из 3ds max в DirectX. Его можно загрузить со страницы DirectX SDK и он замечательно работает. Скомпилировав и установив его вы сможете экспортировать модели 3ds max несколькими щелчками мыши. Не хотите взглянуть на пример экспорта?
Экспорт — достаточно прямолинейный процесс. Для начала вам потребуется модель, которую будем экспортировать. Давайте создадим простейшую модель бокала для вина. Запустите программу 3ds max и следуйте за мной. Вы должны увидеть интерфейс, похожий на тот, что изображен на рис. 11.7.
Рис. 11.7. Интерфейс программы 3ds max
Поскольку программа обладает огромными возможностями настройки внешнего вида, ваш интерфейс может значительно отличаться от моего, но в любом случае вы получите отправной пункт. Важно помнить, что DirectX и 3ds max используют различные системы координат. В 3ds max ось Z применяется для перемещения объекта вверх или вниз, а в DirectX для этого используется ось Y. Поэтому, создавая объекты в 3ds max следует быть очень аккуратным; иначе они могут оказаться повернутыми самым неожиданным образом.
Поскольку в DirectX высота объекта задается вдоль оси Y, выберите в 3ds max окно вида сверху (Top view) и нажмите клавишу W, чтобы развернуть его на весь экран. В результате интерфейс программы будет выглядеть так, как изображено на рис. 11.8.
Рис. 11.8. Вид сверху в 3ds max
После того, как выбран вид сверху, измените масштаб изображения таким образом, чтобы на экране по вертикали помещалось примерно шесть квадратов сетки. Теперь пора создать контур бокала. Это делается с помощью команды Line shape из выпадающего меню Splines. Выберите этот пункт и нарисуйте контур, похожий на изображенный на рис. 11.9.
Рис. 11.9. Контур бокала для вина
На рис. 11.9 изображен фрагмент поперечного сечения бокала. Я знаю, что он выглядит достаточно угловато, но имея дело с трехмерной графикой в реальном времени надо стараться уменьшить количество полигонов в моделях. Если вы ошиблись, размещая вершины, отредактируйте модель, выбрав пункт Edit Mesh в списке Modifier List. Перемещайте вершины, пока не будете удовлетворены получившимся контуром, а затем выберите пункт Lathe в списке Modifier List. Если вы все сделали правильно, то увидите картинку, похожую на рис. 11.10.
Рис. 11.10. Результат вращения контура бокала
На рис. 11.10 изображен результат вращения контура в 3ds max. Объект действительно вращается, но ось вращения задана неправильно. К счастью, это легко исправить, щелкнув по кнопке Max расположенной в рамке Align панели Parameters. Щелкните по кнопке Max и изображение станет выглядеть так, как изображено на рис. 11.11.
Рис. 11.11. Правильное вращение контура бокала
Трехмерные модели довольно скучны без текстур, так что убедитесь, что в команде Lathe вы задали координаты текстур объекта. Для этого установите флажок Generate Mapping Coordinates в панели Parameters. Затем в той же панели установите флажок Weld Core. Этот параметр объединяет вершины, образующие ось вращения модели.
Нажмите клавишу W, чтобы вернуться к четырем окнам просмотра. Выберите окно Perspective и повращайте камеру, чтобы получить изображение бокала, похожее на рис. 11.12.
Рис. 11.12. Изображение бокала в окне Perspective
На рис. 11.12 вы видите изображение бокала в окнах Top и Perspective. Перед тем, как экспортировать склянку, нужно преобразовать ее в редактируемую сетку. Это необходимо потому, что DirectX не знает как работать непосредственно с объектами 3ds max. Щелкните правой кнопкой мыши по изображению бокала, выберите в появившемся меню команду Convert To, а затем Convert To Editable Mesh. Эта операция не вызовет никаких изменений во внешнем виде бокала, но изменит то, как на него будет реагировать DirectX. После того, как конвертирование завершено, пришло время экспортировать модель. Раскройте меню File и выберите команду Export Selected. На экран будет выведено диалоговое окно, в котором следует указать имя объекта и выбрать тип файла. Введите имя файла и в выпадающем списке Save as выберите формат X-File (*.X). Сохраните объект и вам будет предложено окно, изображенное на рис. 11.13.
Рис. 11.13. Параметры экспорта X-файлов
Снимите флажки Include Animation Data и Looping Animation Data, а затем щелкните по кнопке Go!.
Теперь, когда у вас есть замечательный X-файл, загрузите его в программу D3DFrame_ObjectLoader, которая вместе с исходными кодами находится среди сопроводительных файлов. Вам потребуется лишь слегка изменить код, чтобы считывался файл wineglass.x. Внесите изменения в код, скомпилируйте его и перед тем, как запустить программу, убедитесь, что в каталоге с программой есть файл wineglass.x. Если все сделано правильно, вы увидите окно, похожее на то, что изображено на рис. 11.14.
Рис. 11.14. Просмотр бокала в Direct3D
На иллюстрации изображена модель бокала. загруженная в программу для просмотра объектов. Обратите внимание, что счетчик частоты кадров показывает около 3100 кадров в секунду. Неплохо, да? На самом деле, мне уже давно пора обновить компьютер. Но это как нибудь в другой раз.
Если у вас нет доступа к 3ds max или вы не хотите компилировать плагин для экспорта файлов .x, можно воспользоваться программой Conv3ds.exe, поставляемой вместе с DirectX SDK. Это старая утилита и на данный момент она может быть уже недоступна, но она позволяет вам преобразовывать файлы .3ds из командной строки.
Самое замечательное в Conv3ds.exe то, что для создания файла .x ей необходим только объект в формате .3ds. К счастью, большинство программ позволяют экспортировать объекты в файлы .3ds. Благодаря этому создание файлов .x в программах, отличающихся от 3ds max оказывается достаточно простым делом.
netlib.narod.ru | < Назад | Оглавление | Далее > |