Загрузка...
 
Печать

Anim8or. Моделируем автомобиль и экспортируем в .X-файл


Содержание

Intro

Сразу скажем, что автомобиль будет очень примитивным и, скорее, игрушечным. Т.е. до лофтинга капота и передних крыльев дело не дойдёт. Цель урока - усвоить основы низкополигонального (low-poly) моделирования, которое применяется в игрокодинге.
Один из абзацев будет посвящён конвертированию модели в .X-формат для последующего использования в DirectX-приложениях.
Нам потребуется следующий софт:

НАЗВАНИЕ ОПИСАНИЕ ЗАГРУЗКА И УСТАНОВКА
Anim8or (Читается "анимэйтор".) Небольшой (5 Мб) бесплатный 3D-редактор от Steven Glanville (NVIDIA). На английском языке. Создаёт 3D-фигуры из стандартных примитивов. Работает в любой ОС семейства MS Windows. Позволяет экспортировать модели в форматы 3DS (устаревший формат файлов моделей 3DS Max версий 1-3), LWO (Lightwave 3D) и OBJ. Берём здесь: https://anim8or.com/index.html(external link). На офсайте программы переходим в раздел 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(external link). Объём прибл. 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(external link). Объём прибл. 164 Мб. Скачанный архив распаковываем в любую папку на жёстком диске и запускаем Setup.exe.

Установка и обзор программы Anim8or

Читаем здесь: Anim8or. Уроки

Выбираем Object Mode

  • Стартуй Anim8or, если не сделал этого раньше.

Откроется окно программы с пустым проектом.
Все операции по моделированию выполняются в Object Mode.1 Поэтому выбери его:

  • В главном меню (в верхней части окна программы) выбери: Mode->Object .

При этом по умолчанию устанавливается всего одно окно (вид) проекции (Front Viewport, View), занимающее всю область редактирования. При желании её можно разделить на 4 вида (как в 3DS Max). Для этого в главном меню выбери View->All или жми на клавиатуре кнопки 1, 2, 3, 4 или 5.

  • Выбери желаемую конфигурацию видов проекции (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 (градусов).
  • Жми ОК.

Цилиндр повернётся, приняв вертикальное положение относительно координатной плоскости.

Закрыть
noteСовет

Если с первого раза не получилось и навыделял лишнего, отожми все кнопки и начни выделять заново. Если непреднамеренно сместил грани, то жми Ctrl+Z на клавиатуре для отмены последнего действия.

  • Сохрани проект в любую папку на жёстком диске (File->Save As ...).

Задай произвольное имя файла (например Car01). Формат файла оставь по умолчанию (*.an8).

Конвертируем примитив Cylinder в редактируемый меш

  • Щёлкни ЛКМ по цилиндру в любом вьюпорте, сделав объект активным.
  • В главном меню выбери Build->Convert to Mesh.

Сперва покажется, что ничего не изменилось. Но теперь наш примитив обрёл статус редактируемого меша (editable 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 на клавиатуре.

Теперь, зажав ЛКМ над любым вьюпортом и перемещая мышь, можно покрутить виртуальную камеру вокруг меша колеса. При этом сам объект останется на месте.

Закрыть
noteСовет

На левом тулбаре в группе Axis по умолчанию активны 3 кнопки X, Y и Z, позволяющие свободное перемещение элементов по всем трём осям. Иногда это неудобно и перемещение ограничивают по одной или двум осям (чтобы по третьей не происходило смещения). Активируя/деактивируя каждую из кнопок осей ты разрешаешь либо запрещаешь перемещение элементов объекта по определённым осям.

  • Сохрани проект (File->Save).

Создаём материалы

Для модели колеса мы создадим 2 материала. Один для шины колеса (tire), один - для колёсного диска (rim).

  • На верхнем тулбаре жми кнопку со значком с 4-мя кружками (Materials) или выбери в главном меню Options->Materials или нажми Ctrl+M (англ.) на клавиатуре.

Создадим материал для шины колеса.
Появится панель материалов. Пока она пуста.

  • Двойной щелчок ЛКМ по надписи New на панели материалов.

Появится окно редактора материалов (Material Editor).

  • В поле Name введи TIRE (англ. "шина").
  • Напротив строки Ambient (цвет рассеянного света) щёлкни ЛКМ по серому прямоугольнику.

В нижней части редактора материалов расположен мастер выбора цвета (цветовая палитра; Color Picker).

  • Перемещая ползунки Color Picker-а выбери тёмно-серый цвета.

Выбранный цвет установится у прямоугольника с образцом в строке Ambient.

  • Жми ОК.

Созданный материал добавится в список материалов.
Создадим материал для колёсного диска (rim).

  • Двойной щелчок ЛКМ по надписи New на панели материалов.

Появится окно редактора материалов (Material Editor).

  • В поле Name введи CHROME (англ. "хром").

По умолчанию выбран светло-серый цвет.

  • В поле Specular установи значение 0.7 .
  • В поле Emissive установи значение 0.2 .
  • Жми ОК.

Созданный материал добавится в список материалов. Самое ценное в материалах Anim8or это то, что однажды созданный и применённый материал можно позднее изменять. При этом изменённый материал тут же обновится на всех объектах/гранях, где он был ранее применён.

Закрыть
noteПримечание

Anim8or также позволяет создавать и применять различные материалы к любой из отдельных граней (face) меша.

  • Сохрани проект (File->Save).

Рис.1 Anim8or. Выделяем отдельные грани для применения материала
Рис.1 Anim8or. Выделяем отдельные грани для применения материала

Применяем материалы к выбранным граням

Сперва применим материал TIRE ко всей шине. Желательно чтобы был выбран режим отрисовки Flat Shaded (Ctrl+F).

  • Убедись, что Anim8or переведён в режим Object (Mode->Object).
  • На левом тулбаре в группе кнопок Mode щёлкни ЛКМ по значку с тремя квадратами (Object/Point).

Теперь нам доступны для редактирования отдельные вершины (vertices), рёбра (edges) и грани (faces) меша.
На левом тулбаре в группе Component представлены 5 кнопок:

    • Выбор элемента для редактирования (вершина, ребро, грань);
    • Выбор на лицевой (Front) или обратной (Back, скрытой от наблюдателя) стороне меша.
  • На левом тулбаре в группе Component жми кнопку с треугольником (Face Select).

Теперь можно выбирать грани для редактирования.

  • На левом тулбаре в группе Tools жми кнопку с пунктирной рамкой.

Активируется режим выбора элементов меша путём обведения в рамку.

  • Во вьюпорте Front, зажав ЛКМ, обведи рамкой меш так, чтобы оказались выделены все его грани.

Они окрасятся в (условный) жёлтый цвет.

  • На панели редактора материалов выбери материал TIRE и нажми кнопку Apply, что также расположена в редакторе материалов, чуть повыше списка материалов.
  • Деактивируй выбор граней, нажав ЛКМ на любом пустом участке вьюпорта.

Шина целиком окрасится в тёмно-серый цвет.
Применим материал CHROME к области (=группе граней) колёсного диска.

  • На левом тулбаре в группе Tools жми кнопку со стрелкой (Select).

Активируется режим точечного выбора элементов меша путём щелчка по ним ЛКМ.

  • Активируй вьюпорт Right и увеличь сцену (при необходимости), вращая колесо мыши.

Во вьюпорте Right видим меш колеса, повёрнутый к камере лицевой окружностью.

  • Наведи курсор на любой из внутренних сегментов окружности меша.
  • Зажав Ctrl на клавиатуре и ЛКМ, последовательно наведи курсор на каждый сегмент внутренней части окружности.

При этом выбранные сегменты выделятся (условным) жёлтым цветом (см. Рис.1).

Закрыть
noteСовет

Если с первого раза не получилось и навыделял лишнего, отожми все кнопки и начни выделять заново. Если непреднамеренно сместил грани, то жми Ctrl+Z на клавиатуре для отмены последнего действия.

  • На панели редактора материалов выбери материал CHROME и нажми кнопку Apply, что также расположена в редакторе материалов, чуть повыше списка материалов.
  • Деактивируй выбор граней, нажав ЛКМ на любом пустом участке вьюпорта.

Середина окружности шины окрасится в серый цвет. При этом на хромированный наш диск не особо похож. Но для наших учебных целях это неважно, т.к. хромирование материала игровой движок производит сам, по своим собственным алгоритмам. Подразумевается, что хром на дисках всё-таки есть.

  • Сохрани проект (File->Save).

Кузов (Frame)

Если справился с созданием колеса, то с кузовом проблем вообще не возникнет. Для кузова создадим отдельный новый объект Frame. Все созданные объекты сохраняем в одном файле проекта Car01.

  • В главном меню выбери Object->New.
  • В появившемся диалоговом окне в поле Name введи Frame.
  • Жми ОК.

Anim8or очистит вьюпорты, подготовив сцену для нового объекта.

Закрыть
noteСовет

Переключаться между разными объектами можно через раздел Object главного меню или клавишами Shift+Вверх/Shift+Вниз на клавиатуре.

Масштабированием рамы относительно колёс займёмся позже.

Создаём кузов из куба (Cube)

Все действия по-прежнему выполняются в режиме Object (Mode->Object).

  • Нажми 4 на клавиатуре для деления окна программы на 4 вьюпорта.

Это поможет разглядеть примитив с разных сторон.

  • На левом тулбаре в группе кнопок Shapes щелкни по кнопке со значком сегментированного куба (Cube).
  • Во вьюпорте Top наведи курсор в центр и, зажав ЛКМ, немного отведи в сторону.

Во вьюпортах появится куб произвольного размера.
Чтобы увидеть рёбра будущего меша:

  • На верхнем тулбаре выбери режим отображения Flat Shaded или в главном меню View->Flat (Ctrl+F).

Конвертируем примитив Cube в редактируемый меш

  • Щёлкни ЛКМ по кубу в любом вьюпорте, сделав объект активным.
  • В главном меню выбери Build->Convert to Mesh.

Сперва покажется, что ничего не изменилось. Но теперь наш примитив обрёл статус редактируемого меша (editable mesh) и мы можем работать с его отдельными элементами (вершины, рёбра, грани).

Придаём кубу форму прямоугольника

  • На левом тулбаре в группе кнопок Mode щёлкни по кнопке с тремя квадратами (Object/Point Edit).

Так мы перешли в подрежим редактирования отдельных элементов.

  • На левом тулбаре в группе кнопок Component щёлкни по кнопке с треугольником (Face Select).

Включён выбор граней (faces).

  • На левом тулбаре в группе кнопок Tools должна быть активна кнопка со стрелкой (Select).

На левом тулбаре в группе Axis по умолчанию активны 3 кнопки X, Y и Z, позволяющие свободное перемещение элементов по всем трём осям. Иногда это неудобно и перемещение ограничивают по одной или двум осям (чтобы по третьей не происходило смещения). Активируя/деактивируя каждую из кнопок осей ты разрешаешь либо запрещаешь перемещение элементов объекта по определённым осям. Сейчас нам надо сплющить (=уменьшить высоту) куб, чтобы получился прямоугольник. Для этого...

  • На левом тулбаре в группе кнопок Axis жми Z.
  • Во вьюпорте Top ЛКМ выбери грань квадратной формы, повёрнутой к камере лицевой поверхностью.

Она окрасится в жёлтый цвет.

  • На левом тулбаре в группе кнопок Tools выбери кнопку с перекрещенными стрелками (Move).
  • В зоне вьюпорта Top, зажав правую кнопку мыши (ПКМ), перемести мышь вверх.
  • Отследи изменение формы куба во вьюпорте Perspective (при необходимости сделай вид с 4-мя вьюпортами, нажав 4 на клавиатуре).
Закрыть
noteПримечание

Можно также изменять форму куба через окно ввода параметров. Но для общего развития мы проделали это путём манипуляций с гранями. К слову, в 3DS Max применяется схожий принцип моделирования: создаётся примитив, конвертится в меш и дальше работают с его отдельными элементами (вершины, рёбра, грани).

Закрыть
noteПримечание

Из-за глюка программы при отпускании кнопки мыши элемент просто возвращается в исходное положение. Чтобы справится с этим, изменяй положение элементов небольшими порциями, понемногу.

Закрыть
noteПримечание

Всякий раз после изменения положения граней/вершин необходимо "перестраивать" меш, путём вызова в главном меню команды 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 (англ.) на клавиатуре.

Появится панель материалов. Пока она пуста. Но если переключиться на объект колеса (Shift + Стрелка вверх/вниз), то ранее созданные материалы шины и диска на месте.

  • Двойной щелчок ЛКМ по надписи New на панели материалов.

Появится окно редактора материалов (Material Editor).

  • В поле Name укажи любое имя или оставь то, что идёт по умолчанию (material01).
  • Напротив строки Ambient (цвет тени) щёлкни ЛКМ по серому прямоугольнику.

В нижней части редактора материалов расположен мастер выбора цвета (цветовая палитра; Color Picker).

  • Перемещая ползунки Color Picker-а выбери любой понравившийся цвет.

Выбранный цвет установится у прямоугольника с образцом в строке Ambient.

  • Жми ОК.

Созданный материал добавится в список материалов.

  • Аналогичным образом создай второй материал произвольного цвета.

Применяем материалы к выбранным граням

Применим первый материал к верхнему прямоугольнику (выбрав нужные грани), а затем к нижнему.

Закрыть
noteПримечание

Желательно чтобы был выбран режим отрисовки Flat Shaded (Ctrl+F).

  • Убедись, что Anim8or переведён в режим Object (Mode->Object).
  • На левом тулбаре в группе кнопок Mode щёлкни ЛКМ по значку с тремя квадратами (Object/Point).

Теперь нам доступны для редактирования отдельные вершины (vertices), рёбра (edges) и грани (faces) меша.
На левом тулбаре в группе Component представлены 5 кнопок:

    • Выбор элемента для редактирования (вершина, ребро, грань);
    • Выбор на лицевой (Front) или обратной (Back, скрытой от наблюдателя) стороне меша.
  • На левом тулбаре в группе Component жми кнопку с треугольником (Face Select).

Теперь можно выбирать грани для редактирования и нанесения материалов.

  • На левом тулбаре в группе Tools жми кнопку с пунктирной рамкой.

Активируется режим выбора элементов меша путём обведения в рамку.

  • Во вьюпорте Front, зажав ЛКМ, обведи рамкой меш так, чтобы оказались выделены все грани верхнего прямоугольника кузова (крыша со стойками).

Они окрасятся в (условный) жёлтый цвет.

  • На панели редактора материалов выбери любой из двух созданных ранее материалов и нажми кнопку Apply, что также расположена в редакторе материалов, чуть повыше списка материалов.
  • Деактивируй выбор граней, нажав ЛКМ на любом пустом участке вьюпорта.

Верхняя часть кузова окрасится в выбранный материал.

  • Аналогичным образом нанеси материал на нижний прямоугольник кузова.
Закрыть
noteСовет

Если с первого раза не получилось и навыделял лишнего, отожми все кнопки и начни выделять заново. Если непреднамеренно сместил грани, то жми Ctrl+Z на клавиатуре для отмены последнего действия.

  • Сохрани проект (File->Save).

Окна автомобиля

Переднее (ветровое стекло) и заднее окна будут (в нашем случае) одинаковы. Боковые окна тоже будут одинаковы у переднего и заднего ряда дверей. Сделаем их з уменьшеных копий ветрового стекла.
При создании ветрового стекла мы просто создадим прямоугольник (примитив Cube) светло-серого цвета, который затем растянем, сделаем очень тонким и наложим на грань кузова. При этом для окон мы создадим отдельные объекты, которые затем будем собирать в режиме Scene Editor (колёса + кузов + окна).
Таким образом все окна разместятся в двух объектах:

  • Окно ветровое/заднее;
  • Окна боковые (пара левых/правых).

Создаём объект окна ветрового/заднего

Для ветрового и заднего окон создадим отдельный новый объект WindowFR. Все созданные объекты сохраняем в одном файле проекта Car01.

  • В главном меню выбери Object->New.
  • В появившемся диалоговом окне в поле Name введи WindowFR.
  • Жми ОК.

Anim8or очистит вьюпорты, подготовив сцену для нового объекта.

Закрыть
noteСовет

Переключаться между разными объектами можно через раздел Object главного меню или клавишами Shift+Вверх/Shift+Вниз на клавиатуре.

Масштабированием окон относительно кузова займёмся позже.

Создаём ветровое/заднее стекло из куба (Cube)

Закрыть
noteПримечание

Данный способ не является единственно правильным. Есть также несколько других.

Все действия по-прежнему выполняются в режиме Object (Mode->Object).

  • Нажми 4 на клавиатуре для деления окна программы на 4 вьюпорта.

Это поможет разглядеть примитив с разных сторон.

  • На левом тулбаре в группе кнопок Mode щёлкни ЛКМ по кнопке со стрелкой (Object/Edit).

Так мы перешли в подрежим работы с объектами сцены.

  • На левом тулбаре в группе кнопок Shapes щелкни по кнопке со значком сегментированного куба (Cube).
  • Во вьюпорте Top наведи курсор в центр и, зажав ЛКМ, немного отведи в сторону.

Во вьюпортах появится куб произвольного размера.
Чтобы увидеть рёбра будущего меша:

  • На верхнем тулбаре выбери режим отображения Flat Shaded или в главном меню View->Flat (Ctrl+F).

Придаём кубу форму стекла

  • В любом вьюпорте дважды щёлкни ЛКМ по созданному кубу для вызова меню ввода параметров объекта.
  • В появившемся диалоговом окне Cube Editor в разделе Size укажи следующие размеры будушего стекла:

X = 2
Y = 60
Z = 120

  • Жми ОК.

Куб превратится в очень тонкий прямоугольник, напоминающий стекло.

  • Сохрани проект (File->Save).

Рис.2 Anim8or. Создаём боковые окна автомобиля
Рис.2 Anim8or. Создаём боковые окна автомобиля

Создаём объект с левым и правым боковыми окнами через копирование ветрового/заднего стекла

Напомним, что левые окна ничем не отличаются от правых. Поэтому для них будет создан только 1 объект.

  • Выдели (выбери) одним щелчком ЛКМ объект стекла, ветрового/заднего созданный в абзаце выше.
  • Скопируй объект в буфер обмена, выбрав в главном меню Edit->Copy.
  • В главном меню выбери Object->New.
  • В появившемся диалоговом окне в поле Name введи WindowSideLR.
  • Жми ОК.
  • Вставь из буфера обмена созданный ранее видоизменённый куб, выбрав в главном меню Edit->Paste.

Объект окна появится во вьюпортах.
Т.к. наш авто - четырёхместный седан, то и боковых окон должно быть 4: два слева и два справа. Между стеклом переднего ряда и заднего должно быть небольшое расстояние (под стойку крыши).
Уменьшим вдвое длину бокового окна:

  • В любом вьюпорте дважды щёлкни ЛКМ по созданному кубу для вызова меню ввода параметров объекта.
  • В появившемся диалоговом окне Cube Editor в разделе Size укажи следующие размеры стекла:

X = 2
Y = 60
Z = 75

  • Жми ОК.

Длина стекла уменьшится. Надо доставить второе такое же правее (или левее) от исходного.

  • Выдели (выбери) одним щелчком ЛКМ объект стекла в любом вьюпорте.
  • Скопируй объект в буфер обмена, выбрав в главном меню 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.
  • Жми ОК.

Anim8or очистит вьюпорты, подготовив сцену для нового объекта.

Закрыть
noteСовет

Переключаться между разными объектами можно через раздел Object главного меню или клавишами Shift+Вверх/Shift+Вниз на клавиатуре. Имя активного объекта указано на статусбаре в парвом нижнем углу окна программы.

Масштабированием фар относительно кузова займёмся позже.

Создаём фару из куба (Cube)

Закрыть
noteПримечание

Данный способ не является единственно правильным. Есть также несколько других.

Все действия по-прежнему выполняются в режиме Object (Mode->Object).

  • Нажми 4 на клавиатуре для деления окна программы на 4 вьюпорта.

Это поможет разглядеть примитив с разных сторон.

  • На левом тулбаре в группе кнопок Mode щёлкни ЛКМ по кнопке со стрелкой (Object/Edit).

Так мы перешли в подрежим работы с объектами сцены.

  • На левом тулбаре в группе кнопок Shapes щелкни по кнопке со значком сегментированного куба (Cube).
  • Во вьюпорте Top наведи курсор в центр и, зажав ЛКМ, немного отведи в сторону.

Во вьюпортах появится куб произвольного размера.
Чтобы увидеть рёбра будущего меша:

  • На верхнем тулбаре выбери режим отображения Flat Shaded или в главном меню View->Flat (Ctrl+F).

Придаём кубу форму фары

Фары бывают разные. В нашем случае фара будет квадратом со скруглёнными углами.
Сначала придадим фаре форму плоского прямоугольника, с одинаковой длиной и шириной.

  • В любом вьюпорте дважды щёлкни ЛКМ по созданному кубу для вызова меню ввода параметров объекта.
  • В появившемся диалоговом окне Cube Editor в разделе Size укажи следующие размеры будушего стекла:

X = 50
Y = 50
Z = 5

  • Жми ОК.

Куб превратится в очень тонкий прямоугольник, напоминающий стекло фары.

Конвертируем примитив Cube в редактируемый меш

  • Щёлкни ЛКМ по будущей фаре в любом вьюпорте, сделав объект активным.
  • В главном меню выбери 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 (англ.) на клавиатуре.

Появится панель материалов. Пока она пуста. Но если переключиться на другие объекты (Shift + Стрелка вверх/вниз), то увидим, что созданные ранее материалы шины и диска на месте.

  • Двойной щелчок ЛКМ по надписи New на панели материалов.

Появится окно редактора материалов (Material Editor).

  • В поле Name укажи любое имя или оставь то, что идёт по умолчанию (material01).
  • Напротив строки Diffuse (цвет рассеянного света) щёлкни ЛКМ по серому прямоугольнику.

В нижней части редактора материалов расположен мастер выбора цвета (цветовая палитра; Color Picker).

  • Перемещая ползунки Color Picker-а выбери белый цвет.

Выбранный цвет установится у прямоугольника с образцом в строке Diffuse.

  • Напротив строки Emissive (цвет излучаемого света) щёлкни ЛКМ по серому прямоугольнику.

В нижней части редактора материалов расположен мастер выбора цвета (цветовая палитра; Color Picker).

  • Перемещая ползунки Color Picker-а выбери светло-жёлтый цвет.

Выбранный цвет установится у прямоугольника с образцом в строке Emissive.

  • В окне ввода значения интенсивности для Emissive введи значение 0.3
  • Жми ОК.

Созданный материал добавится в список материалов.

Применяем материал к объекту фара

Закрыть
noteПримечание

Желательно чтобы был выбран режим отрисовки Flat Shaded (Ctrl+F).

  • Убедись, что Anim8or переведён в режим Object (Mode->Object).
  • На левом тулбаре в группе кнопок Mode щёлкни ЛКМ по значку со стрелкой (Object/Edit).
  • На левом тулбаре в группе кнопок Tools щёлкни ЛКМ по значку со стрелкой (Select).
  • В любом вьюпорте выбери объект ЛКМ.
  • На панели редактора материалов выбери ЛКМ единственный материал и нажми кнопку Apply, что также расположена в редакторе материалов, чуть повыше списка материалов.

Фара окрасится в выбранный материал.

Закрыть
noteСовет

Если с первого раза не получилось и навыделял лишнего, отожми все кнопки и начни выделять заново. Если непреднамеренно сместил грани, то жми Ctrl+Z на клавиатуре для отмены последнего действия.

  • Сохрани проект (File->Save).

Задние фонари (Taillights)

По аналогии с фарами, создадим один объект заднего фонаря, который при финальной сборке просто продублируем. За основу возьмём процесс создания фары. Разве что скруглим её несколько по-другому.
Для заднего фонаря создадим отдельный новый объект Taillight. Все созданные объекты сохраняем в одном файле проекта Car01.

  • В главном меню выбери Object->New.
  • В появившемся диалоговом окне в поле Name введи Taillight.
  • Жми ОК.

Anim8or очистит вьюпорты, подготовив сцену для нового объекта.

Создаём задний фонарь из куба (Cube)

Все действия по-прежнему выполняются в режиме Object (Mode->Object).

  • Нажми 4 на клавиатуре для деления окна программы на 4 вьюпорта.

Это поможет разглядеть примитив с разных сторон.

  • На левом тулбаре в группе кнопок Mode щёлкни ЛКМ по кнопке со стрелкой (Object/Edit).

Так мы перешли в подрежим работы с объектами сцены.

  • На левом тулбаре в группе кнопок Shapes щелкни по кнопке со значком сегментированного куба (Cube).
  • Во вьюпорте Top наведи курсор в центр и, зажав ЛКМ, немного отведи в сторону.

Во вьюпортах появится куб произвольного размера.
Чтобы увидеть рёбра будущего меша...

  • На верхнем тулбаре выбери режим отображения Flat Shaded или в главном меню View->Flat (Ctrl+F).
  • При необходимости, в разделе Tools выбери режим перемещения (кнопка с перекрещенными стрелками) и перемести созданный куб в центр вьюпортов (в начало координатных осей сетки).

Придаём кубу форму фонаря

Сначала придадим фаре форму плоского прямоугольника, с одинаковой длиной и шириной.

  • В любом вьюпорте дважды щёлкни ЛКМ по созданному кубу для вызова меню ввода параметров объекта.
  • В появившемся диалоговом окне Cube Editor в разделе Size укажи следующие размеры:

X = 50
Y = 50
Z = 5

  • Жми ОК.

Куб превратится в очень тонкий прямоугольник.

Конвертируем примитив 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 (англ.) на клавиатуре.

Появится панель материалов. Пока она пуста. Но если переключиться на другие объекты (Shift + Стрелка вверх/вниз), то увидим, что созданные ранее материалы шины и диска на месте.

  • Двойной щелчок ЛКМ по надписи New на панели материалов.

Появится окно редактора материалов (Material Editor).

  • В поле Name укажи любое имя или оставь то, что идёт по умолчанию (material01).
  • Напротив строки Diffuse (цвет рассеянного света) щёлкни ЛКМ по серому прямоугольнику.

В нижней части редактора материалов расположен мастер выбора цвета (цветовая палитра; Color Picker).

  • Перемещая ползунки Color Picker-а выбери насыщенный тёмно-красный цвет.

Выбранный цвет установится у прямоугольника с образцом в строке Diffuse.
Так как по умолчанию между образцами цветов Ambient и Diffuse включена кнопка равенства (=), то цвет Ambient будет автоматически выставлен в схожий с Diffuse.

  • Напротив строки Emissive (цвет излучаемого света) щёлкни ЛКМ по серому прямоугольнику.

В нижней части редактора материалов расположен мастер выбора цвета (цветовая палитра; Color Picker).

  • Перемещая ползунки Color Picker-а выбери красный цвет.

Выбранный цвет установится у прямоугольника с образцом в строке Emissive.

  • В окне ввода значения интенсивности для Emissive введи значение 0.4
  • Жми ОК.

Созданный материал добавится в список материалов.

Применяем материал к объекту фонарь

Закрыть
noteПримечание

Желательно чтобы был выбран режим отрисовки Flat Shaded (Ctrl+F).

  • Убедись, что Anim8or переведён в режим Object (Mode->Object).
  • На левом тулбаре в группе кнопок Mode щёлкни ЛКМ по значку со стрелкой (Object/Edit).
  • На левом тулбаре в группе кнопок Tools щёлкни ЛКМ по значку со стрелкой (Select).
  • В любом вьюпорте выбери объект ЛКМ.
  • На панели редактора материалов выбери ЛКМ единственный материал и нажми кнопку Apply, что также расположена в редакторе материалов, чуть повыше списка материалов.

Фара окрасится в выбранный материал.

Закрыть
noteСовет

Если с первого раза не получилось и навыделял лишнего, отожми все кнопки и начни выделять заново. Если непреднамеренно сместил грани, то жми Ctrl+Z на клавиатуре для отмены последнего действия.

  • Сохрани проект (File->Save).

Собираем авто в редакторе сцены (Scene Editor)

Многие начинающие дизайнеры скорее всего изготовили бы весь авто в режиме объекта. Но на деле куда важнее иметь возможность раздельного редактирования каждого из компонентов. Особенно это становится важно при создании сложных сцен, состоящих из сотен или тысяч отдельных объектов.

  • В главном меню (в верхней части окна программы) выбери: Mode->Scene .

При этом по умолчанию устанавливается всего одно окно (вид) проекции (Front Viewport, View), занимающее всю область редактирования. При желании её можно разделить на 4 вида (как в 3DS Max). Для этого в главном меню выбери View->All или жми на клавиатуре кнопки 1, 2, 3, 4 или 5. Удобнее всего работать с 4-мя вьюпортами (кнопка 4).

  • Выбери желаемую конфигурацию видов проекции (Layout).

В пустой сцене всегда есть объект камера, которая "показывает" вид Camera (в 3DS Max данный вид называется Perspective).

  • В главном меню выбери Build->Add Object ...
  • В появившемся диалоговом окне выбери кузова (Frame).

Объект кузова появится во вьюпортах. Во вьюпорте Camera видим, что честь кузова "провалилась" и находится ниже уровня пола.

  • В разделе Tools левого тулбара выбери режим перемещения (кнопка с перекрещенными стрелками).
  • Подцепив ЛКМ объект кузова поочерёдно перемести его в разных вьюпортах так, чтобы он оказался чуть выше уровня "пола" (у любой машины есть дорожный просвет или клиренс).

Старайся не потерять исходную ориентацию объекта "по сторонам света".

  • Аналогично добавь в сцену стёкла, фары и фонари.

Используй инструменты раздела 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) и сохрани в любом месте на жёстком диске, нажав Сохранить.

Сохранится вся сцена целиком (в нашем случае модель авто). Для сохранения отдельных объейтов надо выбирать в режиме объекта File->Save As...

Извлекаем утилиту conv3ds.exe из DirectX SDK 6.1 . Готовим её к работе.

Данное приложение:

    • Выполняется в командной строке и не имеет пользовательского интерфейса.
    • Содержится в распакованном DirectX SDK 6.1 по пути ..\bin\dxutil\XFiles

  • Скачай DirectX SDK 6.1

Ищи ссылку в Intro к данной статье или раздел Софт нашего сайта. Также его нетрудно нагуглить.

  • Распакуй DirectX SDK 6.1 в любое место на жёстком диске.

Вообще, в архиве находится инсталлятор (=установочный дистрибутив). DirectX SDK 6.1 можно установить, запустив Setup.exe, а можно и не устанавливать. Все файлы DirectX SDK 6.1 доступны путём просмотра директорий инсталлятора через проводник Windows.

  • Найди утилиту conv3ds.exe по пути ..\bin\dxutil\XFiles в поддиректории распакованного DirectX SDK 6.1 и скопируй в заранее созданную папку в корне жёсткого диска.

В нашем случае C:\1.
Для работы conv3ds.exe ей жизненно необходима динамическая библиотека d3drm.dll, которая также содержится в распакованном DirectX SDK 6.1 по пути ..\Redist\DirectX6\directx.

  • Найди d3drm.dll по пути ..\Redist\DirectX6\directx в поддиректории распакованного DirectX SDK 6.1 и скопируй в заранее созданную папку в корне жёсткого диска.

В нашем случае C:\1.

  • Скопируй туда же сохранённый файл модели Car01.3ds.
Закрыть
noteПримечание

В поддиректории ..\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 .

Её можно вызвать через меню Пуск (Пуск->Все программы->Стандартные->Командная строка).
По разным причинам воспользуемся последним способом.

  • Жмём Пуск->Все программы->Стандартные->Командная строка.

Как вариант, можно нажать на клавиатуре Windows+R, вбить в появившееся окно поиска cmd и нажать Enter. Результат будет тот же. На экране появится чёрное окно с серыми символами - окно командного интрепретатора (=консоли, строки) Windows. Далее будем работать в нём.

  • В командной строке набери
cd C:\1
  • Жми Enter. (Здесь и далее после ввода каждой команды жмём Enter. Без напоминаний.)

Команда cd означает change directory - сменить рабочую (текущую) директорию (=папку).
Консольное приложение conv3ds.exe имеет множество опций, которые указываются в командной строке через пробел, сразу после имени исполняемого файла. Чтобы получить полный список опций (параметров), в командной строке введи

conv3ds

В описании программы читаем, что она читает .3ds-файл в память и конвертирует в .x-файл, комбинируя все меши в единый меш, что заметно оптимизирует результирующий .x-файл.
Внизу описания видим дату создания программы 3 мая 1996 года. Настоящая прога из 32-битного прошлого.
Сконвертируем файл Car01.3ds, набрав в командной строке:

conv3ds -m Car01.3ds

После нажатия Enter программа молча переведёт каретку на следующую строку. Вместе с этим в рабочем каталоге C:\1 появится новый файл Car01.3ds. Конвертация завершена успешно. Полученный .x-файл можно загружать в игровой движок. Напомним, что conv3ds генерирует только однофреймовые файлы с одним комбинированным мешем внутри. Для многих игровых движков это критично.

Закрыть
noteСовет

Чтобы программа выдавала допинфу о преобразуемых мешах, в командной строке введи так:
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(external link) (объём прибл. 1 Мб). В некоторых версиях DirectX SDK DXViewer шёл в виде исходного кода, чем и воспользовались программеры с www.cgdev.net(external link), слегка видоизменив стандартный просмотрщик 3D-мешей от Microsoft. Данная версия DXViewer-а не поддерживает показ древовидной структуры встроенной иерархии объектов 3D-меша, что очень плохо, т.к. данная функция очень важна при создании 3D-объектов для игр. Поэтому мы найдём "родной" просмотрщик, идущий в наборе с одной из старых версий DirectXSDK и обладающий полным функционалом. В нашем случае это оказался DirectX SDK 8.1 аж 2001 года выпуска. В те времена DXViewer назывался MeshView. По мнению форумчан с www.gamedev.ru(external link), MeshView более удобен и информативен. Так что на нём и остановимся.

Ссылок на старые версии DirectXSDK с каждым годом становится всё меньше. А с учётом маниакального стремления Майкрософт что-либо вырезать в будущих редакциях, настоятельно рекомендуем сохранить скачанный архив в надёжном месте. В будущем (может даже через годы) он обязательно пригодится тебе в качестве источника дополнительной информации по т.н. "неуправляемому" (unmanaged; т.е. на чистом C++, без использования .NET Framework) игрокодингу. Да и примеры там интересные. Каждый DirectX игрокодер обязательно хранит у себя на компьютере несколько старых версий DirectX SDK.
Скачанный ZIP-архив содержит каталог DirectXSDK с установочными файлами DirectX SDK 8.1.

  • Извлеки (распакуй) папку DirectXSDK в любое место на жёстком диске (например, на Рабочий стол).

Устанавливать DirectX SDK в нашем случае не нужно. Искомая программа mview.exe (MeshView) расположена по пути ..\DirectXSDK\DXSDK\bin\DXUtils .

  • Скопируй файл mview.exe в любое доступное место на жёстком диске (например, на Рабочий стол).

Остальные файлы распакованного дистрибутива можно удалить.

MeshView в действии
MeshView в действии
  • Запусти MeshView (файл mview.exe), изучи меню, настройки и т.д.
  • Открой сконвертированный файл Car01.x, выбрав в строке главного меню File->Open Mesh File... В появившемся диалоговом окне перейди в папку C:\1 и выбери Car01.x . Жми "Открыть".

Модель автомобиля сразу появится в окне DXViewer-а.

  • Покрути трёхмерную модель, "подцепив" её ЛКМ.

Мда, хрома на дисках, конечно, могло бы быть и побольше. Зато мы обошлись без текстур, а программа-конвертер сохранила у модели выбранные в Anim8or цвета кузова, стёкол и других элементов.

  • Рассмотри модель в режиме Wireframe (решётка), выбрав в главном меню View->Wireframe или нажав w на клавиатуре.

Просмотрим древовидную иерархию фреймов модели. Для этого:

  • Открой окно иерархии фреймов. (В главном меню жми View->Hierarchy.)

В появившемся допокне видим свёрнутое дерево фреймов с ключевым фреймом Unnamed Frame. Слева от его имени видим символ +.

  • Щёлкни левой кнопкой мыши по символу +.

Там будет ещё один дочерний фрейм Unnamed Mesh.
Как и обещала утилита conv3ds, в нашей модели (помимо ключевого) 1 фрейм, содержащий 1 меш.
В программе MeshView есть куча других продвинутых возможностей, которые помогают выявлять проблемы с мешем (например некорректные текстурные координаты, материалы, нормали и т.д.).
В нижней части главного окна MeshView в статусбаре отображается информация об открытом меше. В двух крайних правых ячейках стоит кол-во треугольников (tri) и вершин (vert) в модели.
В нашем случае модель авто насчитывала более 13 тыс. треугольников (=полигонов), что для простой игровой модели многовато.

Оптимизируем модель автомобиля в MeshView

По оптимизации игровых моделей написано много книг. Данные способы снижения числа полигонов далеко не единственные.

Общая оптимизация

  • Убедись, что MeshView запущен и в нём открыт файл модели Car01.x.
  • В главном меню жмём MeshOps->Optimize->Compact.

MeshView автоматически "отбросит" ни на что не влияющие полигоны. В нашем случае число полигонов уменьшилось почти на 2 тысячи без видимого ухудшения качества модели. При повторе данной операции ничего не произойдёт.

"Сварка" (объединение) вершин (Weld Vertices)

Здесь комбинируются (=объединяются в одну) две и более близко расположенные вершины. При этом перестраивается треугольная лента (triangle strip) для каждых двух полигонов (граней), которые имеют хотя бы одну общую вершину. В нашем случае модель авто создавалась из нескольких отдельных частей, что неизменно генерирует "лишние" вершины.

  • Убедись, что MeshView запущен и в нём открыт файл модели Car01.x.
  • В главном меню жмём MeshOps->Weld Vertices.
  • В появившемся диалоговом окне отмечаем флажками первые три опции (Remove Back To Back Triangles, Regenerate Adjacency, Partial Weld Vertices).

Опция Remove Back To Back Triangles находит дублирующие друг друга треугольники и убирает лишние.
Опция Regenerate Adjacency перестраивает структуру ленты треугольников (triangle strip) после объединения вершин.
Опция Partial Weld Vertices генерирует дополнительные полигоны для отнесения к ним вершин, оказавшихся на концах одиночных рёбер.

  • Жмём ОК.
Закрыть
noteСовет

В диалоговом окне Weld Vertices вместо ОК можно нажать Apply. В этому случае в нижней его части покажется краткий лог операции, включая значения до и после преобразований.

В нашем случае число вершин уменьшилось почти на 3 тысячи без видимого ухудшения качества модели. При повторе данной операции ничего не произойдёт.

  • В главном меню снова жмём MeshOps->Weld Vertices.
  • В появившемся диалоговом окне отмечаем флажком единственную опцию Weld All Vertices.
  • Жмём ОК.

Число вершин (судя по счётчику в нижнем правом углу главного окна MeshView) уменьшилось ещё на прибл. 1 тысячу без видимой потери качества.

  • Рассмотри модель в режиме Wireframe (решётка), выбрав в главном меню View->Wireframe или нажав w на клавиатуре.

Сохраняем оптимизированный меш

После проведения всех вышеприведённых операций файл модели необходимо пересохранить (желательно в отдельный .x-файл с произвольным новым именем). Для этого:

  • В главном меню MeshView выбери File->Save Mesh As...

В появившемся диалоговом окне в нижней части есть 3 опции "X File Format":

    • Text (текстовый)
    • Binary (двоичный)
    • Compressed Binary (сжатый двоичный)

Обычно работают только с первыми двумя. Формат .x-файлов изначально поддерживал сохранение/чтение файлов как с двоичной структурой, так и в виде текста (содержимое таких .x-файлов легко читается в любом текстовом редакторе). В теории можно выбрать любой, т.к. библиотеки DirectX одинаково хорошо читают модели всех трёх разновидностей.

  • Выбери Binary.

В левой части диалога "Сохранить как" стоит галка у пункта Save Hierarchy. Её пока не трогаем.

  • Введим имя фала (например Car01_opt.x) и жми Сохранить.
Закрыть
noteСовет

В нашем случае (Win7 x64) MeshView требовал принудительно указывать в строке имени расширение .x. Т.е. файл с именем Car01_opt сохранялся вовсе без расширения. В этом случае корректное имя файла выглядит так: Car01_opt.x . Данная опция называется "Автоматически добавлять расширение к зарегистрирвоанным типам файлов" и изменяется в настройках ОС.

  • Поочерёдно сохрани оптимизированную модель авто в другие виды формата .x (Text, Compressed Binary).
  • Сравни размеры полученных файлов.

Конвертируем Car01.3ds в Car01.x с изменением масштаба

Да, консольная утилита conv3ds.exe образца 1996 года позволяет проделывать и такой "фокус".

  • Закрой MeshView.

Чтобы открытый в нём файл Car01.x смог быть перезаписан конвертером conv3ds.exe .

  • Открой окно командной строки Windows, если не сделал этого раньше. (Жмём Пуск->Все программы->Стандартные->Командная строка.)
  • В командной строке набери
cd C:\1

для выбора рабочей директории.

  • В командной строке набери
conv3ds -m -v1 -s0.05 Car01.3ds
  • Повторно открой полученный файл Car01.x в MeshView.

На первый взгляд в авто ничего не изменлось. Но с точки зрения 3D-софта, размер полученного авто составляет всего 5% от исходного. На практике загруженные в игровую сцену модели визуально проверяют на соответствии масштаба. Автомобиль не может быть выше 5-этажного дома, а взрослый человек - меньше ножки стула. Сильно желательно корректировать размеры модели в 3D-редакторе. Но, как видим, это можно делать и на стадии конвертирования.

===
При цитировании статьи просьба указывать ссылку на сайт igrocoder.ru .

Источники:


1. Harbour J.S. Beginning Game Programming. - Thomson Course Technology. 2005

Contributors to this page: slymentat .
Последнее изменение страницы Воскресенье 25 / Апрель, 2021 08:04:27 MSK автор slymentat.

Помочь проекту

yoomoney.ru (бывший Яндекс-деньги): 410011791055108