Anim8or. Моделинг и экспорт в .x формат
Содержание
- Anim8or. Моделинг и экспорт в .x формат
- Intro
- Установка и обзор программы Anim8or
- Выбираем Object Mode
- Создаём модель автомобиля
- Колёса
- Кузов (Frame)
- Окна автомобиля
- Фары (Headlights)
- Задние фонари (Taillights)
- Собираем авто в редакторе сцены (Scene Editor)
- Сохраняем проект в .3ds формат (старый формат файлов моделей 3D Studio Max)
- Извлекаем утилиту conv3ds.exe из DirectX SDK 6.1 . Готовим её к работе.
- Конвертируем Car01.3ds в Car01.x
- Просмотр полученного .X-файла в MeshView
- Оптимизируем модель автомобиля в MeshView
- Сохраняем оптимизированный меш
- Конвертируем Car01.3ds в Car01.x с изменением масштаба
- Источники
Intro
Сразу скажем, что автомобиль будет очень примитивным и, скорее, игрушечным. Т.е. до лофтинга капота и передних крыльев дело не дойдёт. Цель урока - усвоить основы низкополигонального (low-poly) моделирования, которое применяется в игрокодинге. Один из абзацев будет посвящён конвертированию модели в .X-формат для последующего использования в DirectX-приложениях. Нам потребуется следующий софт:НАЗВАНИЕ | ОПИСАНИЕ | ЗАГРУЗКА И УСТАНОВКА |
---|---|---|
Anim8or | (Читается "анимэйтор".) Небольшой (4,7 Мб) бесплатный 3D-редактор от Steven Glanville (NVIDIA). На английском языке. Создаёт 3D-фигуры из стандартных примитивов. Работает в любой ОС семейства MS Windows. Позволяет экспортировать модели в форматы 3DS (устаревший формат файлов моделей 3DS Max версий 1-3), LWO (Lightwave 3D) и OBJ. Из минусов: нестандартный интерфейс, среди стандартных примитивов отсутствует плоскость (plane). | Берём здесь: https://anim8or.com/index.html. На офсайте программы переходим в раздел DOWNLOAD и скачиваем animv100.zip. Скачанный .zip-архив распаковать в любую папку на жёстком диске и запустить Anim8or.exe . |
Microsoft DirectX SDK 6.1 | Набор необходимых библиотек, документации и утилит для создания приложений с использованием DirectX. Вышел в свет в 1999 г. | Берём здесь: http://old-dos.ru/index.php?page=files&mode=files&do=show&id=2629. Объём прибл. 33 Мб. Скачанный архив распаковываем в любую папку на жёстком диске и запускаем Setup.exe. |
Microsoft DirectX SDK 8.1 | Набор необходимых библиотек, документации и утилит для создания приложений с использованием DirectX. Вышел в свет в 2001 г. До сих пор активно применяется разработчиками инди-игр и специализированных приложений. Кладезь информации по программированию графики средствами DirectX посредством неуправляемого (unmanaged, т.е. на чистом C++ без .NET-фреймворка) кода. | Берём здесь: http://old-dos.ru/index.php?page=files&mode=files&do=show&id=2629. Объём прибл. 164 Мб. Скачанный архив распаковываем в любую папку на жёстком диске и запускаем Setup.exe. |
Установка и обзор программы Anim8or
Читаем здесь: Anim8or. Первое знакомствоВыбираем Object Mode
- Стартуй Anim8or, если не сделал этого раньше.
Все операции по моделированию выполняются в Object Mode.1 Поэтому выбери его:
- В главном меню (в верхней части окна программы) выбери: Mode->Object .
- Выбери желаемую конфигурацию видов проекции (Layout).
Создаём модель автомобиля
Принцип создания действительно привлекательных мешей заключается в создании примитива и его последующего деления на сегменты для придания нужной формы. Чем больше делений и различных манипуляций ты проделываешь, тем лучше получится конечный результат.Колёса
Тут ничего хитрого. Создаём цилиндр (cylinder) и, перед тем как его отмасштабировать, делим его на сегменты. На основе одного "прототипа" колеса создадим остальные три путём клонирования.Начинаем с цилиндра
По умолчанию при запуске Anim8or создаётся пустой (и пока не сохранённый) проект + новый (тоже пустой) объект с именем по умолчанию (object01). Если это не так и в окнах проекций есть объекты, в главном меню выбери File->New. Изменим имя объекта:- Выбери в главном меню Object->Properties.
- В появившемся диалоговом окне в поле Name введи новое имя Wheel.
- Нажми 4 на клавиатуре для деления окна программы на 4 вьюпорта.
- На левом тулбаре в группе кнопок Shapes выбери значок цилиндра (Cylinder).
- Во вьюпорте Front наведи курсор в центр и, зажав ЛКМ, немного отведи в сторону.
- Дважды щёлкни ЛКМ по цилиндру в любом из вьюпортов.
Length: 10;
Diameter Start: 20;
Diameter End: 20.
- Жми ОК.
- Дважды щёлкни ЛКМ по цилиндру в любом из вьюпортов.
- В окне редактирования в поле Orientation по оси Z выставь значение 90 (градусов).
- Жми ОК.
Совет
Если с первого раза не получилось и навыделял лишнего, отожми все кнопки и начни выделять заново. Если непреднамеренно сместил грани, то жми Ctrl+Z на клавиатуре для отмены последнего действия.
- Сохрани проект в любую папку на жёстком диске (File->Save As ...).
Конвертируем примитив Cylinder в редактируемый меш
- Щёлкни ЛКМ по цилиндру в любом вьюпорте, сделав объект активным.
- В главном меню выбери Build->Convert to Mesh.
Делим меш на сегменты
- В главном меню выбери Build->Smooth Object...
- В появившемся окне Smooth Parameters в строке редактирования Tension (англ. "натяжение") выставь значение 1.
- Жми ОК.
Чтобы увидеть рёбра (edges) сегментов поверх меша:
- Щёлкни в любом месте вьюпорта Perspective для его активизации.
- На верхнем тулбаре выбери режим отображения Flat Shaded или в главном меню View->Flat.
- Щёлкни ЛКМ по цилиндру в любом вьюпорте, сделав объект активным.
- В главном меню выбери Build->Smooth Object...
- В появившемся окне Smooth Parameters в строке редактирования Tension (англ. "натяжение") выставь значение 0.1.
- Жми ОК.
- Активируй щелчком ЛКМ вьюпорт Perspective и нажми 1 на клавиатуре.
- На верхнем тулбаре жми кнопку со значком окружности и 4-мя квадратами для включения режима Arc Rotate или жми Ctrl+R на клавиатуре.
Совет
На левом тулбаре в группе Axis по умолчанию активны 3 кнопки X, Y и Z, позволяющие свободное перемещение элементов по всем трём осям. Иногда это неудобно и перемещение ограничивают по одной или двум осям (чтобы по третьей не происходило смещения). Активируя/деактивируя каждую из кнопок осей ты разрешаешь либо запрещаешь перемещение элементов объекта по определённым осям.
- Сохрани проект (File->Save).
Создаём материалы
Для модели колеса мы создадим 2 материала. Один для шины колеса (tire), один - для колёсного диска (rim).- На верхнем тулбаре жми кнопку со значком с 4-мя кружками (Materials) или выбери в главном меню Options->Materials или нажми Ctrl + M (англ.) на клавиатуре.
Появится панель материалов. Пока она пуста.
- Двойной щелчок ЛКМ по надписи New на панели материалов. Появится окно редактора материалов (Material Editor).
- В поле Name введи TIRE (англ. "шина").
- Напротив строки Ambient (цвет рассеянного света) щёлкни ЛКМ по серому прямоугольнику.
- Перемещая ползунки Color Picker-а выбери тёмно-серый цвета. Выбранный цвет установится у прямоугольника с образцом в строке Ambient.
- Жми ОК.
- Двойной щелчок ЛКМ по надписи New на панели материалов. Появится окно редактора материалов (Material Editor).
- В поле Name введи CHROME (англ. "хром"). По умолчанию выбран светло-серый цвет.
- В поле Specular установи значение 0.7 .
- В поле Emissive установи значение 0.2 .
- Жми ОК.
Примечание
Anim8or также позволяет создавать и применять различные материалы к любой из отдельных граней (face) меша.
- Сохрани проект (File->Save).
Применяем материалы к выбранным граням
Сперва применим материал TIRE ко всей шине. Желательно чтобы был выбран режим отрисовки Flat Shaded (Ctrl+F).
- Убедись, что Anim8or переведён в режим Object (Mode->Object).
- На левом тулбаре в группе кнопок Mode щёлкни ЛКМ по значку с тремя квадратами (Object/Point).
На левом тулбаре в группе Component представлены 5 кнопок:
- Выбор элемента для редактирования (вершина, ребро, грань);
- Выбор на лицевой (Front) или обратной (Back, скрытой от наблюдателя) стороне меша.
- На левом тулбаре в группе Component жми кнопку с треугольником (Face Select).
- На левом тулбаре в группе Tools жми кнопку с пунктирной рамкой. Активируется режим выбора элементов меша путём обведения в рамку.
- Во вьюпорте Front, зажав ЛКМ, обведи рамкой меш так, чтобы оказались выделены все его грани.
- На панели редактора материалов выбери материал TIRE и нажми кнопку Apply, что также расположена в редакторе материалов, чуть повыше списка материалов.
- Деактивируй выбор граней, нажав ЛКМ на любом пустом участке вьюпорта.
Применим материал CHROME к области (=группе граней) колёсного диска.
- На левом тулбаре в группе Tools жми кнопку со стрелкой (Select).
- Активируй вьюпорт Right и увеличь сцену (при необходимости), вращая колесо мыши.
- Наведи курсор на любой из внутренних сегментов окружности меша.
- Зажав Ctrl на клавиатуре и ЛКМ, последовательно наведи курсор на каждый сегмент внутренней части окружности.
Если с первого раза не получилось и навыделял лишнего, отожми все кнопки и начни выделять заново. Если непреднамеренно сместил грани, то жми Ctrl+Z на клавиатуре для отмены последнего действия.
- На панели редактора материалов выбери материал CHROME и нажми кнопку Apply, что также расположена в редакторе материалов, чуть повыше списка материалов.
- Деактивируй выбор граней, нажав ЛКМ на любом пустом участке вьюпорта.
- Сохрани проект (File->Save).
Кузов (Frame)
Если справился с созданием колеса, то с кузовом проблем вообще не возникнет. Для кузова создадим отдельный новый объект Frame. Все созданные объекты сохраняем в одном файле проекта Car01.- В главном меню выбери Object->New.
- В появившемся диалоговом окне в поле Name введи Frame.
- Жми ОК.
Совет
Переключаться между разными объектами можно через раздел Object главного меню или клавишами Shift+Вверх/Shift+Вниз на клавиатуре.
Масштабированием рамы относительно колёс займёмся позже.
Создаём кузов из куба (Cube)
Все действия по-прежнему выполняются в режиме Object (Mode->Object).- Нажми 4 на клавиатуре для деления окна программы на 4 вьюпорта. Это поможет разглядеть примитив с разных сторон.
- На левом тулбаре в группе кнопок Shapes щелкни по кнопке со значком сегментированного куба (Cube).
- Во вьюпорте Top наведи курсор в центр и, зажав ЛКМ, немного отведи в сторону.
- На верхнем тулбаре выбери режим отображения Flat Shaded или в главном меню View->Flat (Ctrl+F).
Конвертируем примитив Cube в редактируемый меш
- Щёлкни ЛКМ по кубу в любом вьюпорте, сделав объект активным.
- В главном меню выбери Build->Convert to Mesh.
Придаём кубу форму прямоугольника
- На левом тулбаре в группе кнопок Mode щёлкни по кнопке с тремя квадратами (Object/Point Edit).
- На левом тулбаре в группе кнопок Component щёлкни по кнопке с треугольником (Face Select).
- На левом тулбаре в группе кнопок Tools должна быть активна кнопка со стрелкой (Select).
- На левом тулбаре в группе кнопок Axis жми Z.
- Во вьюпорте Top ЛКМ выбери грань квадратной формы, повёрнутой к камере лицевой поверхностью.
- На левом тулбаре в группе кнопок Tools выбери кнопку с перекрещенными стрелками (Move).
- В зоне вьюпорта Top, зажав правую кнопку мыши (ПКМ), перемести мышь вверх.
- Отследи изменение формы куба во вьюпорте Perspective (при необходимости сделай вид с 4-мя вьюпортами, нажав 4 на клавиатуре).
Примечание
Можно также изменять форму куба через окно ввода параметров. Но для общего развития мы проделали это путём манипуляций с гранями. К слову, в 3DS Max применяется схожий принцип моделирования: создаётся примитив, конвертится в меш и дальше работают с его отдельными элементами (вершины, рёбра, грани).
Примечание
Из-за глюка программы при отпускании кнопки мыши элемент просто возвращается в исходное положение. Чтобы справится с этим, изменяй положение элементов небольшими порциями, понемногу.
Примечание
Всякий раз после изменения положения граней/вершин необходимо "перестраивать" меш, путём вызова в главном меню команды Build->Join Solids. Это нужно, например, для корректного позиционирования габаритных контейнеров (Bounding boxes) относительно мешей.
- Выделив меш ЛКМ, выбери в главном меню Build->Join Solids.
- Сохрани проект (File->Save).
Добавляем второй куб (крыша со стойками)
- На левом тулбаре в группе кнопок Shapes щелкни по кнопке со значком сегментированного куба (Cube).
- Во вьюпорте Top наведи курсор в центр и, зажав ЛКМ, немного отведи в сторону.
Конвертируем примитив Cube в редактируемый меш
- Щёлкни ЛКМ по второму кубу в любом вьюпорте, сделав объект активным.
- В главном меню выбери Build->Convert to Mesh.
Размещаем второй куб над первым.
- На левом тулбаре в группе кнопок Mode щёлкни ЛКМ по кнопке со стрелкой (Object/Edit).
- На левом тулбаре в группе кнопок Tools выбери кнопку с перекрещенными стрелками (Move).
- Перемещай второй куб ЛКМ относительно первого, попеременно выбирая нужные оси на левом тулбаре в группе кнопок Axis.
- Установи второй куб так, чтобы он возвышадся над первым.
- При необходимости измени форму второго куба (см. абзац выше "Придаём кубу форму прямоугольника").
- Выделив меш ЛКМ, выбери в главном меню Build->Join Solids.
Объединяем кубы в группу
- На левом тулбаре в группе кнопок Mode щёлкни ЛКМ по кнопке со стрелкой (Object/Edit).
- На левом тулбаре в группе кнопок Tools выбери кнопку с пунктирной рамкой (Drag Select).
- Удерживая нажатой ЛКМ, выбери рамкой над любым вьюпортом оба куба.
- В главном меню выбери Build->Group.
- Сохрани проект (File->Save).
- При необходимости отцентруй объект во всех видимых вьюпортах, нажав F на клавиатуре.
Создаём материалы для кузова
- На верхнем тулбаре жми кнопку со значком с 4-мя кружками (Materials) или выбери в главном меню Options->Materials или нажми Ctrl + M (англ.) на клавиатуре.
- Двойной щелчок ЛКМ по надписи New на панели материалов.
- В поле Name укажи любое имя или оставь то, что идёт по умолчанию (material01).
- Напротив строки Ambient (цвет тени) щёлкни ЛКМ по серому прямоугольнику.
- Перемещая ползунки Color Picker-а выбери любой понравившийся цвет. Выбранный цвет установится у прямоугольника с образцом в строке Ambient.
- Жми ОК.
- Аналогичным образом создай второй материал произвольного цвета. Применяем материалы к выбранным граням
Примечание
Желательно чтобы был выбран режим отрисовки Flat Shaded (Ctrl+F).
- Убедись, что Anim8or переведён в режим Object (Mode->Object).
- На левом тулбаре в группе кнопок Mode щёлкни ЛКМ по значку с тремя квадратами (Object/Point).
На левом тулбаре в группе Component представлены 5 кнопок:
- Выбор элемента для редактирования (вершина, ребро, грань);
- Выбор на лицевой (Front) или обратной (Back, скрытой от наблюдателя) стороне меша.
- На левом тулбаре в группе Component жми кнопку с треугольником (Face Select). Теперь можно выбирать грани для редактирования и нанесения материалов.
- На левом тулбаре в группе Tools жми кнопку с пунктирной рамкой. Активируется режим выбора элементов меша путём обведения в рамку.
- Во вьюпорте Front, зажав ЛКМ, обведи рамкой меш так, чтобы оказались выделены все грани верхнего прямоугольника кузова (крыша со стойками).
- На панели редактора материалов выбери любой из двух созданных ранее материалов и нажми кнопку Apply, что также расположена в редакторе материалов, чуть повыше списка материалов.
- Деактивируй выбор граней, нажав ЛКМ на любом пустом участке вьюпорта.
- Аналогичным образом нанеси материал на нижний прямоугольник кузова.
Примечание
Если с первого раза не получилось и навыделял лишнего, отожми все кнопки и начни выделять заново. Если непреднамеренно сместил грани, то жми Ctrl+Z на клавиатуре для отмены последнего действия.
- Сохрани проект (File->Save).
Окна автомобиля
Переднее (ветровое стекло) и заднее окна будут (в нашем случае) одинаковы. Боковые окна тоже будут одинаковы у переднего и заднего ряда дверей. Сделаем их из уменьшеных копий ветрового стекла. При создании ветрового стекла мы просто создадим прямоугольник (примитив Cube) светло-серого цвета, который затем растянем, сделаем очень тонким и наложим на грань кузова. При этом для окон мы создадим отдельные объекты, которые затем будем собирать в режиме Scene Editor (колёса + кузов + окна). Таким образом все окна разместятся в двух объектах:- Окно ветровое/заднее;
- Окна боковые (пара левых/правых).
Создаём объект окна ветрового/заднего
Для ветрового и заднего окон создадим отдельный новый объект WindowFR. Все созданные объекты сохраняем в одном файле проекта Car01.- В главном меню выбери Object->New.
- В появившемся диалоговом окне в поле Name введи WindowFR.
- Жми ОК.
Переключаться между разными объектами можно через раздел Object главного меню или клавишами Shift+Вверх/Shift+Вниз на клавиатуре.
Масштабированием окон относительно кузова займёмся позже.
Создаём ветровое/заднее стекло из куба (Cube)
Примечание
Данный способ не является единственно правильным. Есть также несколько других.
Все действия по-прежнему выполняются в режиме Object (Mode->Object).
- Нажми 4 на клавиатуре для деления окна программы на 4 вьюпорта.
- На левом тулбаре в группе кнопок Mode щёлкни ЛКМ по кнопке со стрелкой (Object/Edit).
- На левом тулбаре в группе кнопок Shapes щелкни по кнопке со значком сегментированного куба (Cube).
- Во вьюпорте Top наведи курсор в центр и, зажав ЛКМ, немного отведи в сторону.
Чтобы увидеть рёбра будущего меша:
- На верхнем тулбаре выбери режим отображения Flat Shaded или в главном меню View->Flat (Ctrl+F).
Придаём кубу форму стекла
- В любом вьюпорте дважды щёлкни ЛКМ по созданному кубу для вызова меню ввода параметров объекта.
- В появившемся диалоговом окне Cube Editor в разделе Size укажи следующие размеры будушего стекла:
Y = 60
Z = 120
- Жми ОК.
- Сохрани проект (File->Save).
Создаём объект с левым и правым боковыми окнами через копирование ветрового/заднего стекла
Напомним, что левые окна ничем не отличаются от правых. Поэтому для них будет создан только 1 объект.- Выдели (выбери) одним щелчком ЛКМ объект стекла, ветрового/заднего созданный в абзаце выше.
- Скопируй объект в буфер обмена, выбрав в главном меню Edit->Copy.
- В главном меню выбери Object->New.
- В появившемся диалоговом окне в поле Name введи WindowSideLR.
- Жми ОК.
- Вставь из буфера обмена созданный ранее видоизменённый куб, выбрав в главном меню Edit->Paste.
Т.к. наш авто - четырёхместный седан, то и боковых окон должно быть 4: два слева и два справа. Между стеклом переднего ряда и заднего должно быть небольшое расстояние (под стойку крыши). Уменьшим вдвое длину бокового окна:
- В любом вьюпорте дважды щёлкни ЛКМ по созданному кубу для вызова меню ввода параметров объекта.
- В появившемся диалоговом окне Cube Editor в разделе Size укажи следующие размеры стекла:
- Жми ОК.
- Выдели (выбери) одним щелчком ЛКМ объект стекла в любом вьюпорте.
- Скопируй объект в буфер обмена, выбрав в главном меню Edit->Copy.
- Вставь из буфера обмена созданный ранее видоизменённый куб, выбрав в главном меню Edit->Paste.
- На левом тулбаре в группе кнопок Mode щёлкни ЛКМ по кнопке со стрелкой (Object/Edit).
- На левом тулбаре в группе кнопок Tools выбери кнопку с перекрещенными стрелками (Move).
- Во вьюпорте Right подцепи, зажав ЛКМ, куб и перемести чуть правее (или левее; см. Рис.2).
- При необходимости в окне ввода параметров в разделе Location введи в среднее поле (ось Y) значение 0 для каждого из стёкол.
- Сохрани проект (File->Save).
Фары (Headlights)
Конечно, можно создать и другие детали кузова, которые придали бы нашему автомобилю бОльшую реалистичность. Но в данном уроке мы ограничимся лишь фарами (headlights) и задними фонарями (taillights). Начнём с фар. Левая и правая передние фары будут одинаковы.При создании фары мы просто создадим прямоугольник (примитив Cube), который затем модифицируем (дважды выставив параметр Tension=0.25).
Создаём объект фары
Для фары создадим отдельный новый объект Headlight. Все созданные объекты сохраняем в одном файле проекта Car01.- В главном меню выбери Object->New.
- В появившемся диалоговом окне в поле Name введи Headlight.
- Жми ОК.
Совет
Переключаться между разными объектами можно через раздел Object главного меню или клавишами Shift+Вверх/Shift+Вниз на клавиатуре. Имя активного объекта указано на статусбаре в парвом нижнем углу окна программы.
Масштабированием фар относительно кузова займёмся позже.
Создаём фару из куба (Cube)
Примечание
Данный способ не является единственно правильным. Есть также несколько других.
Все действия по-прежнему выполняются в режиме Object (Mode->Object).
- Нажми 4 на клавиатуре для деления окна программы на 4 вьюпорта.
- На левом тулбаре в группе кнопок Mode щёлкни ЛКМ по кнопке со стрелкой (Object/Edit).
- На левом тулбаре в группе кнопок Shapes щелкни по кнопке со значком сегментированного куба (Cube).
- Во вьюпорте Top наведи курсор в центр и, зажав ЛКМ, немного отведи в сторону.
Чтобы увидеть рёбра будущего меша:
- На верхнем тулбаре выбери режим отображения Flat Shaded или в главном меню View->Flat (Ctrl+F).
Придаём кубу форму фары
Фары бывают разные. В нашем случае фара будет квадратом со скруглёнными углами.Сначала придадим фаре форму плоского прямоугольника, с одинаковой длиной и шириной.
- В любом вьюпорте дважды щёлкни ЛКМ по созданному кубу для вызова меню ввода параметров объекта.
- В появившемся диалоговом окне Cube Editor в разделе Size укажи следующие размеры будушего стекла:
Y = 50
Z = 5
- Жми ОК.
- Щёлкни ЛКМ по будущей фаре в любом вьюпорте, сделав объект активным.
- В главном меню выбери Build->Convert to Mesh.
Скруглим углы фары
- В главном меню выбери Build->Smooth Object...
- В появившемся диалоговом окне Smooth Parameters в строке Tension введи значение 0.25.
- Жми ОК.
- В главном меню выбери Build->Smooth Object...
- В появившемся диалоговом окне Smooth Parameters в строке Tension введи значение 0.25.
- Жми ОК.
- Сохрани проект (File->Save).
Создаём материал для фары
Для создания эффекта светящейся фары в идеале можно приделать к ней светящийся конус, изображающий пучок света. Но в данном уроке мы поступим проще. Просто создадим для фары материал, с заданным параметром Emissive (исходящий свет).- На верхнем тулбаре жми кнопку со значком с 4-мя кружками (Materials) или выбери в главном меню Options->Materials или нажми Ctrl + M (англ.) на клавиатуре.
- Двойной щелчок ЛКМ по надписи New на панели материалов. Появится окно редактора материалов (Material Editor).
- В поле Name укажи любое имя или оставь то, что идёт по умолчанию (material01).
- Напротив строки Diffuse (цвет рассеянного света) щёлкни ЛКМ по серому прямоугольнику.
- Перемещая ползунки Color Picker-а выбери белый цвет. Выбранный цвет установится у прямоугольника с образцом в строке Diffuse.
- Напротив строки Emissive (цвет излучаемого света) щёлкни ЛКМ по серому прямоугольнику.
- Перемещая ползунки Color Picker-а выбери светло-жёлтый цвет. Выбранный цвет установится у прямоугольника с образцом в строке Emissive.
- В окне ввода значения интенсивности для Emissive введи значение 0.3
- Жми ОК.
Применяем материал к объекту фара
Примечание
Желательно чтобы был выбран режим отрисовки Flat Shaded (Ctrl+F).
- Убедись, что Anim8or переведён в режим Object (Mode->Object).
- На левом тулбаре в группе кнопок Mode щёлкни ЛКМ по значку со стрелкой (Object/Edit).
- На левом тулбаре в группе кнопок Tools щёлкни ЛКМ по значку со стрелкой (Select).
- В любом вьюпорте выбери объект ЛКМ.
- На панели редактора материалов выбери ЛКМ единственный материал и нажми кнопку Apply, что также расположена в редакторе материалов, чуть повыше списка материалов.
Совет
Если с первого раза не получилось и навыделял лишнего, отожми все кнопки и начни выделять заново. Если непреднамеренно сместил грани, то жми Ctrl+Z на клавиатуре для отмены последнего действия.
- Сохрани проект (File->Save).
Задние фонари (Taillights)
По аналогии с фарами, создадим один объект заднего фонаря, который при финальной сборке просто продублируем. За основу возьмём процесс создания фары. Разве что скруглим её несколько по-другому.Для заднего фонаря создадим отдельный новый объект Taillight. Все созданные объекты сохраняем в одном файле проекта Car01.
- В главном меню выбери Object->New.
- В появившемся диалоговом окне в поле Name введи Taillight.
- Жми ОК.
Создаём задний фонарь из куба (Cube)
Все действия по-прежнему выполняются в режиме Object (Mode->Object).- Нажми 4 на клавиатуре для деления окна программы на 4 вьюпорта. Это поможет разглядеть примитив с разных сторон.
- На левом тулбаре в группе кнопок Mode щёлкни ЛКМ по кнопке со стрелкой (Object/Edit).
- На левом тулбаре в группе кнопок Shapes щелкни по кнопке со значком сегментированного куба (Cube).
- Во вьюпорте Top наведи курсор в центр и, зажав ЛКМ, немного отведи в сторону.
- На верхнем тулбаре выбери режим отображения Flat Shaded или в главном меню View->Flat (Ctrl+F).
- При необходимости, в разделе Tools выбери режим перемещения (кнопка с перекрещенными стрелками) и перемести созданный куб в центр вьюпортов (в начало координатных осей сетки).
Придаём кубу форму фонаря
Сначала придадим фаре форму плоского прямоугольника, с одинаковой длиной и шириной.- В любом вьюпорте дважды щёлкни ЛКМ по созданному кубу для вызова меню ввода параметров объекта.
- В появившемся диалоговом окне Cube Editor в разделе Size укажи следующие размеры:
- Жми ОК.
Конвертируем примитив Cube в редактируемый меш
- Щёлкни ЛКМ по будущей фаре в любом вьюпорте, сделав объект активным.
- В главном меню выбери Build->Convert to Mesh.
Скруглим углы фонаря
- В главном меню выбери Build->Smooth Object...
- В появившемся диалоговом окне Smooth Parameters в строке Tension введи значение 1.0 .
- Жми ОК.
- В главном меню выбери Build->Smooth Object...
- В появившемся диалоговом окне Smooth Parameters в строке Tension введи значение 0.25.
- Жми ОК.
- Сохрани проект (File->Save).
Создаём материал для заднего фонаря
Задние фонари обычно красного цвета.- На верхнем тулбаре жми кнопку со значком с 4-мя кружками (Materials) или выбери в главном меню Options->Materials или нажми Ctrl + M (англ.) на клавиатуре.
- Двойной щелчок ЛКМ по надписи New на панели материалов.
- В поле Name укажи любое имя или оставь то, что идёт по умолчанию (material01).
- Напротив строки Diffuse (цвет рассеянного света) щёлкни ЛКМ по серому прямоугольнику.
- Перемещая ползунки Color Picker-а выбери насыщенный тёмно-красный цвет.
- Напротив строки Emissive (цвет излучаемого света) щёлкни ЛКМ по серому прямоугольнику.
- Перемещая ползунки Color Picker-а выбери красный цвет. Выбранный цвет установится у прямоугольника с образцом в строке Emissive.
- В окне ввода значения интенсивности для Emissive введи значение 0.4
- Жми ОК.
Применяем материал к объекту фонарь
- Убедись, что Anim8or переведён в режим Object (Mode->Object).
- На левом тулбаре в группе кнопок Mode щёлкни ЛКМ по значку со стрелкой (Object/Edit).
- На левом тулбаре в группе кнопок Tools щёлкни ЛКМ по значку со стрелкой (Select).
- В любом вьюпорте выбери объект ЛКМ.
- На панели редактора материалов выбери ЛКМ единственный материал и нажми кнопку Apply, что также расположена в редакторе материалов, чуть повыше списка материалов.
Совет
Если с первого раза не получилось и навыделял лишнего, отожми все кнопки и начни выделять заново. Если непреднамеренно сместил грани, то жми Ctrl+Z на клавиатуре для отмены последнего действия.
- Сохрани проект (File->Save).
Собираем авто в редакторе сцены (Scene Editor)
Многие начинающие дизайнеры скорее всего изготовили бы весь авто в режиме объекта. Но на деле куда важнее иметь возможность раздельного редактирования каждого из компонентов. Особенно это становится важно при создании сложных сцен, состоящих из сотен или тысяч отдельных объектов.- В главном меню (в верхней части окна программы) выбери: Mode->Scene .
- Выбери желаемую конфигурацию видов проекции (Layout).
- В главном меню выбери Build->Add Object ...
- В появившемся диалоговом окне выбери кузова (Frame).
- В разделе Tools левого тулбара выбери режим перемещения (кнопка с перекрещенными стрелками).
- Подцепив ЛКМ объект кузова поочерёдно перемести его в разных вьюпортах так, чтобы он оказался чуть выше уровня "пола" (у любой машины есть дорожный просвет или клиренс).
- Аналогично добавь в сцену стёкла, фары и фонари.
Почти всегда созданные детали не подходят по размеру к кузову. В этом случае просто переключайся Mode->Object и, выбрав Shift+Стрелки вверх и вниз нужный объект, измени его размеры, например через меню параметров. В режиме сцены тоже есть инструмент масштабирования. Но он очень примитивный и позволяет изменять размеры только пропорционально (без растягивания).
Из других минусов Anim8or - невозможность клонировать объекты в их текущем масштабе путём простого копирования/вставки. Так для добавления в сцену каждого из 4-х колёс нужно 4 раза выбрать пункт Build->Add Object... в главном меню. При этом каждое добавленное колесо будет в исходном размере.
- Сохрани проект (File->Save).
Сохраняем проект в .3ds формат (старый формат файлов моделей 3D Studio Max)
- Убедись, что Anim8or запущена и в ней по-прежнему открыт проект Car01.
- В режиме сцены (Mode->Scene) выбери в главном меню Scene->Export.
- В появившемся диалоговом меню во всплывающем списке Тип файла оставь .3ds, укажи имя файла (в нашем случае Car01.3ds) и сохрани в любом месте на жёстком диске, нажав Сохранить.
Извлекаем утилиту conv3ds.exe из DirectX SDK 6.1 . Готовим её к работе.
Данное приложение:- Выполняется в командной строке и не имеет пользовательского интерфейса.
- Содержится в распакованном DirectX SDK 6.1 по пути ..\bin\dxutil\XFiles
- Скачай DirectX SDK 6.1
- Распакуй DirectX SDK 6.1 в любое место на жёстком диске.
- Найди утилиту conv3ds.exe по пути ..\bin\dxutil\XFiles в поддиректории распакованного DirectX SDK 6.1 и скопируй в заранее созданную папку в корне жёсткого диска.
Для работы conv3ds.exe ей жизненно необходима динамическая библиотека d3drm.dll, которая также содержится в распакованном DirectX SDK 6.1 по пути ..\Redist\DirectX6 \directx.
- Найди d3drm.dll по пути ..\Redist\DirectX6\directx в поддиректории распакованного DirectX SDK 6.1 и скопируй в заранее созданную папку в корне жёсткого диска.
- Скопируй туда же сохранённый файл модели Car01.3ds.
Совет
В поддиректории ..\bin\dxutil\XFiles с conv3ds.exe также есть текстовый файл conv3ds.txt с описанием работы данной утилиты (на англ.).
Конвертируем Car01.3ds в Car01.x
Вообще в ОС Windows есть несколько способов работы с исполняемыми файлами командной строки. Вот лишь несколько из них:- Перетащить конвертируемый 3ds-файл мышью на значок программы в Проводнике Windows.
- Набрать команду C:\1\conv3ds.exe Car01.3ds в строке адреса в верхней части Проводника Windows.
- Набрать эту же команду в командной строке любого стороннего файлового менеджера (Norton Commander, Far, Double Commander и др.).
- Набрать эту же команду в консоли Windows (штатной утилите командной строки) cmd.exe .
По разным причинам воспользуемся последним способом.
- Жмём Пуск->Все программы->Стандартные->Командная строка.
- В командной строке набери
cd C:\1
- Жми Enter. (Здесь и далее после ввода каждой команды жмём Enter. Без напоминаний.)
Консольное приложение conv3ds.exe имеет множество опций, которые указываются в командной строке через пробел, сразу после имени исполняемого файла. Чтобы получить полный список опций (параметров), в командной строке введи:
conv3ds
В описании программы читаем, что она читает 3ds-файл в память и конвертирует в .x-файл, комбинируя все меши в единый меш, что заметно оптимизирует результирующий .x-файл.
Внизу описания видим дату создания программы 3 мая 1996 года. Настоящая прога из 32-битного прошлого.
Сконвертируем файл Car01.3ds, набрав в командной строке:
conv3ds -m Car01.3ds
После нажатия Enter программа молча переведёт каретку на следующую строку. Вместе с этим в рабочем каталоге C:\1 появится новый файл Car01.x . Конвертация завершена успешно. Полученный .x-файл можно загружать в игровой движок. Напомним, что conv3ds генерирует только однофреймовые файлы с одним комбинированным мешем внутри. Для многих игровых движков это критично.
Совет
Чтобы программа выдавала допинфу о преобразуемых мешах, в командной строке введи так:
conv3ds -m -v1 Car01.3ds
В случае, если результирующий 3ds-файл уже есть в рабочем каталоге, то при повторном вызове conv3ds -m Car01.3ds он будет перезаписан.
Просмотр полученного .X-файла в MeshView
Полученный файл с расширением .x можно просмотреть с помощью специальной программы-просмотрщика DXViewer. До 2006 г. такой просмотрщик входил в стандартный набор утилит DirectX SDK. В версии DirectX SDK за август 2009 г. его убрали. Видимо за ненадобностью...
В Интернете его тоже не найти из-за запрета Microsoft распространения DXViewer отдельно от SDK.
Тем не менее, слегка усовершенствованную версию DX Viewer-а можно скачать здесь: http://www.cgdev.net/axe/download.php (объём прибл. 1 Мб). В некоторых версиях DirectX SDK DXViewer шёл в виде исходного кода, чем и воспользовались программеры с www.cgdev.net слегка видоизменив стандартный просмотрщик 3D-мешей от Microsoft. Данная версия DXViewer-а не поддерживает показ древовидной структуры встроенной иерархии объектов 3D-меша, что очень плохо, т.к. данная функция очень важна при создании 3D-объектов для игр. Поэтому мы найдём "родной" просмотрщик, идущий в наборе с одной из старых версий DirectXSDK и обладающий полным функционалом. В нашем случае это оказался DirectX SDK 8.1 аж 2001 года выпуска. В те времена DXViewer назывался MeshView. По мнению форумчан с www.gamedev.ru , MeshView более удобен и информативен. Так что на нём и остановимся.
- Скачай DirectX SDK 8.1 здесь: http://old-dos.ru/index.php?page=files&mode=files&do=show&id=2629 (объём прибл. 164 Мб).
Скачанный ZIP-архив содержит каталог DirectXSDK с установочными файлами DirectX SDK 8.1.
- Извлеки (распакуй) папку DirectXSDK в любое место на жёстком диске (например, на Рабочий стол).
- Скопируй файл mview.exe в любое доступное место на жёстком диске (например, на Рабочий стол).
- Запусти MeshView (файл mview.exe), изучи меню, настройки и т.д.
- Открой сконвертированный файл Car01.x, выбрав в строке главного меню File->Open Mesh File... В появившемся диалоговом окне перейди в папку C:\1 и выбери Car01.x . Жми "Открыть".
- Покрути трёхмерную модель, "подцепив" её ЛКМ.
- Рассмотри модель в режиме Wireframe (решётка), выбрав в главном меню View->Wireframe или нажав w на клавиатуре.
- Открой окно иерархии фреймов. (В главном меню жми View->Hierarchy.)
- Щёлкни левой кнопкой мыши по символу +. Там будет ещё один дочерний фрейм Unnamed Mesh.
В программе MeshView есть куча других продвинутых возможностей, которые помогают выявлять проблемы с мешем (например некорректные текстурные координаты, материалы, нормали и т.д.).
В нижней части главного окна MeshView в статусбаре отображается информация об открытом меше. В двух крайних правых ячейках стоит кол-во треугольников (tri) и вершин (vert) в модели.
В нашем случае модель авто насчитывала более 13 тыс. треугольников (=полигонов), что для простой игровой модели многовато.
Оптимизируем модель автомобиля в MeshView
По оптимизации игровых моделей написано много книг. Данные способы снижения числа полигонов далеко не единственные.Общая оптимизация
- Убедись, что MeshView запущен и в нём открыт файл модели Car01.x.
- В главном меню жмём MeshOps->Optimize->Compact.
"Сварка" (объединение) вершин (Weld Vertices)
Здесь комбинируются (=объединяются в одну) две и более близко расположенные вершины. При этом перестраивается треугольная лента (triangle strip) для каждых двух полигонов (граней), которые имеют хотя бы одну общую вершину. В нашем случае модель авто создавалась из нескольких отдельных частей, что неизменно генерирует "лишние" вершины.- Убедись, что MeshView запущен и в нём открыт файл модели Car01.x.
- В главном меню жмём MeshOps->Weld Vertices.
- В появившемся диалоговом окне отмечаем флажками первые три опции (Remove Back To Back Triangles, Regenerate Adjacency, Partial Weld Vertices).
Опция Regenerate Adjacency перестраивает структуру ленты треугольников (triangle strip) после объединения вершин.
Опция Partial Weld Vertices генерирует дополнительные полигоны для отнесения к ним вершин, оказавшихся на концах одиночных рёбер.
- Жмём ОК.
Совет
В диалоговом окне Weld Vertices вместо ОК можно нажать Apply. В этому случае в нижней его части покажется краткий лог операции, включая значения до и после преобразований.
В нашем случае число вершин уменьшилось почти на 3 тысячи без видимого ухудшения качества модели. При повторе данной операции ничего не произойдёт.
- В главном меню снова жмём MeshOps->Weld Vertices.
- В появившемся диалоговом окне отмечаем флажком единственную опцию Weld All Vertices.
- Жмём ОК.
- Рассмотри модель в режиме Wireframe (решётка), выбрав в главном меню View->Wireframe или нажав w на клавиатуре.
Сохраняем оптимизированный меш
После проведения всех вышеприведённых операций файл модели необходимо пересохранить (желательно в отдельный .x-файл с произвольным новым именем). Для этого:- В главном меню MeshView выбери File->Save Mesh As...
- Text (текстовый)
- Binary (двоичный)
- Compressed Binary (сжатый двоичный)
- Выбери Binary.
- Введим имя фала (например Car01_opt.x) и жми Сохранить. Совет
- Поочерёдно сохрани оптимизированную модель авто в другие виды формата .x (Text, Compressed Binary).
- Сравни размеры полученных файлов.
Конвертируем Car01.3ds в Car01.x с изменением масштаба
Да, консольная утилита conv3ds.exe образца 1996 года позволяет проделывать и такой "фокус".- Закрой MeshView.
- Открой окно командной строки Windows, если не сделал этого раньше. (Жмём Пуск->Все программы->Стандартные->Командная строка.)
- В командной строке набери
cd C:\1
...для выбора рабочей директории.
- В командной строке набери
conv3ds -m -v1 -s0.05 Car01.3ds
- Повторно открой полученный файл Car01.x в MeshView.
При цитировании статьи просьба указывать ссылку на сайт igrocoder.ru .
Источники
1. Harbour J.S. Beginning Game Programming. - Thomson Course Technology, 2005
Последние изменения страницы Четверг 13 / Октябрь, 2022 22:57:22 MSK
Последние комментарии wiki