Обзор создания модели

From Valve Developer Community
< Ru
Jump to: navigation, search
English (en)Français (fr)Русский (ru)Translate (Translate)
Эта страшная статья сейчас перерабатывается с целью разбиения на статьи поменьше.
Уже появились отдельные статьи: Studiomdl(en), Экспорт модели(en), Компиляция модели(en)

Эта статья - введение в моделирование персонажей, оружия, транспорта и предметов для движка Source. Другие статьи в Категории: Моделирование(en) подробнее описывают процесс создания моделей, привязки, анимации, сборки и назначения игровой физики.

Базовые файлы и инструменты

Softimage|XSI Mod Tool для Half-life 2

Все модели в Half-Life 2 были созданы в Softimage XSI(en). Бесплатную версию Softimage Mod Tool, специально созданную для разработки модификаций, можно найти на сайте Autodesk. Также на сайте вы найдете аддон для движка Source (необходимый для создания контента в Source), уроки, форумы и другие полезные вещи, которые помогут вам освоиться с Softimage Mod Tool.

.SMD - файлы

.SMD(en)-файлы экспортируются из XSI в меню file/export. Они бывают трех типов.

  • Базовый (reference) файл SMD - точный "снимок" модели, с ее геометрией, структурой костей, текстурой и связями между вершинами сетки и ее скелетом. Референсные .SMD не содержат данных об анимации -- они лишь создают статичный слепок всей модели в заданный момент времени.
  • Физический (physbox) .SMD содержит информацию об объемах, которые физический движок использует для расчета столкновений и о привязке вершин к скелету.
  • Анимационные (animation) .SMD-файлы содержат только данные об анимации, а также информацию о скелете, достаточные, чтобы программа StudioMdl знала, что анимация соотвествует скелету reference-модели.

Как можно видеть, для анимированной модели нужны по крайней мере два .SMD -- а беглый взгляд на исходные файлы Half-Life в SDK показывает, что большинство моделей имеют очень много файлов анимаций. С другой стороны, очень многим моделям нужен один-единственный базовый .SMD-файл.

.QC-файлы

Файлы .QC(en) можно считать чем-то вроде таблицы с содержанием проектов моделей: .QC содержит полный список всего, что будет включено в законченную модель. Основная задча .QC-файла -- говорить компилятору StudioMdl, где искать текстуры и .SMD-файлы.

Также в .QC определяется информация, относящаяся уже к игровому движку. Например, .QC-файл дает движку сведения о том, где должны быть эффекты -- сияние (glow) или дым, -- какие анимации отвечают различным действиям AI, а также когда и какие звуки проигрывать.

StudioMDL

Studiomdl.exe это работающая из командной строки программа, которая на самом деле создает файлы моделей Half Life. В качестве параметра командной строки она получает имя файла .QC, а затем использует его, чтобы найти нужные .SMD-файлы моделей и файлы текстур. Также программа выдает информацию о том количестве памяти, которое занимают геометрия модели, ее текстуры и анимации. Это может быть полезно в отладке и оптимизиции моделей. It takes the name of a .QC file as a command parameter and uses the .QC to find the relevant .SMD and texture files. The program also provides feedback on the amount of memory used for the completed model's geometry, textures, and animation data, which can be useful in debugging and optimizing your models. О компиляции моделей с помощью studiomdl.exe см.Основы компиляции моделей(en).

Если вам неудобно использовать командную строку, можете попробовать созданные сторонними разработчиками инструменты, такие как GUIStudioMDL(en) или Studiocompiler(en).

.MDL-файлы

Конечный результат описанного выше процесса -- файл модели Half-Life (.MDL), который содержит всю информацию о модели: геометрию, анимацию, работу AI и т.п. Он готов, и соответсвующий код сможет использовать модель.

Процесс моделирования

Перед созданием любой модели лучше подготовить четкое изображение вашего персонажа, транспорта или вещи. Это изображение чем-то похоже на чертеж.. Когда дизайн персонажа готов, можно приступать к созданию геометрии, редактировать жесткие ребра, чтобы модель правильно освещалась, добавлять текстурные координаты, привязывать сетку к скелету, делать мимику.

Анализ моделирования персонажа

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


Как этот персонаж будет использоваться?

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

Концепты

Лучше всего моделирование начинать с создания концепт-арта, который разом решает большинство проблем дизайна. На этом этапе вы решаете, кто ваш персонаж, какой он формы, как выглядят материалы и даже какими могут быть базовые позы для набора анимаций. Также это относительно безболезненный способ проверить с командой ваши идеи, не тратя время на моделирование, текстурирование и анимацию персонажа. Перед тем, как продолжать, лучше постараться собрать как можно больше отзывов о дизайне. Все персонажи Half-Life 2 пережили несколько версий и доработок прежде чем были завершены.

Проекция модели

Model sheet, изображающий бойцов сопротивления женского и мужского пола из Half-Life 2 спереди и сбоку.

Концепт обычно изображает персонажа во вполне определенной позе, причем с того угла, который может затруднить использование рисунка в качестве образца для моделирования. Поэтому следующий шаг -- это создание Model Sheet ("проекция модели"). Это листы пришли из традиционной анимации. Чертеж модели изображает персонажа в нейтральной позе спереди и сбоку, без перспективы. Проекции персонажа это своего рода чертеж его геометрии, на котором конкретизируются ваши соображения о его пропорциях, силуэте и форме. Как правило, этот скетч вы будете использовать при моделировании как фоновое изображение в окнах проекций XSI (иногда метод называют ротоскопией -- Rotoscopy,-- см. в документации XSI)

На этом скетче показаны проекции повстанцев: мужчины и женщины из Half-Life 2.

Производительность и технические требования

Число полигонов в некоторых моделях персонажей из Half-Life 2:

  • Солдаты: 4682
  • Полиция: 3852
  • Сопротивление: 4976
  • Зомби: 4290
  • Вертолет: 6415
  • Страйдер: 6444
  • Аликс: 8323

Не существует жестких правил, фиксирующих, сколько треугольников можно потратить на модель или текстуры какого разрешения можно использовать. Есть верхний предел возможностей движка (10000 полигонов на модель, 17433 вершин и текстуры со стороной 2048 пикселей), но это не к этому нужно стремиться. Следует продумать, сколько таких персонажей/машин/предметов будет в кадре. Если вам хотелось бы показывать их десятками в любой момент игры, то ограничение на количество треугольников будет другим, нежели в случае, если на экране этот объект будет один. Для человекоподобных существ, особенно в моделях для мультиплеера, не следует тратить более 4000 полигонов на хорошую модель персонажа - которая имеет достаточно создающих форму деталей, достаточно ребер для корректного освещения и правильно сгибается в суставах. Разумеется, вы можете выделить на персонажа и больше, но при использовании карт нормалей и текстур высокого разрешения необходимости в этом обычно не возникает.

Одна из полезных особенностей XSI заключается в возможности работать с моделью из четырехугольников, и иметь правильно расположенные ребра (петли, edge loops), задающие форму. В такой модели можно легко добавлять и удалять сечения -- особенно когда сохраняются текстурные координаты, -- а также можно изменить геометрию модели, сохраняя веса вершин. В движке Source поддерживаются Дискретные уровни детализации (LOD'ы)(en). Они могут существенно поднять скорость обсчета сцены.

Создание геометрии

К этому времени вы имеете приблизительное представление о том, как персонаж будет использоваться, о том, какой именно дизайн вы создаете, о том, как выглядит геометрия спереди и сбоку, и о том, сколько треугольников отведено на этого персонажа. Пора приступить к моделированию. Процесс создания геометрии для движка Source не является специфичным только для этого движка, поэтому здесь он не будет подробно рассматриваться. Мы просто рассмотрим некоторые общие указания, которые могут упростить процесс моделирования.

Подходы к моделированию

Есть много способом начать создавать модель, но стандартом индустрии de facto является subdivision-моделирование (дополнительное разбиение, "подразделение", участка поверхности и затем увеличения детализации - примечание переводчика). При создании моделей для Source вы скорее всего будете использовать только один-два уровня subdivision, но тем не менее это неплохой способ получить органические формы из низкополигональных контрольных, базовых моделей. При использовании этого метода, большая часть работы производится путем выдавливания геометрии и перемещения получившихся вершин и ребер, пока они не станут соотвествовать проекциям персонажа, которые вы поставили фоном в окнах проекций. Распространенная ошибка начинающих 3д-моделлеров состоит в том, что они не используют преимущества влияния веса вершины на получающееся разбиение поверхности. Пожалуйста, обратитесь к документации XSI за более подробной информацией о создании моделей по методу subdivision surface. На определенной стадии моделирования вам понадобится напрямую редактировать получающуюся сетку чтобы произвести окончательную проработку мелких деталей.

Симметричное моделирование

Умение определять симметричные области модели может сэкономить время при создании модели, развертки и текстур. Также, повторяющиеся элементы вашего дизайна лучше создать один раз и клонировать по модели нужное число раз. Существуют разные способы симметричного создания модели, но использование Symmetrize Polygons -- безусловно, наиболее эффективный из них. С помощью этого инструмента XSI (Model>Modify>Poly. Mesh>Symmetrize Polygons) вы можете копировать области сетки, с заданной трансформацией, при этом сохраняя UV-координаты и другие параметры, которые вы можете задать.

Реберные петли (Edgeloops) и Анимация

Одно из требований при создании модели -- хорошее расположение ребер около суставов, чтобы они могли аккуратно сгибаться, сохраняя правильность формы и привязки; у вас даже могут быть плечи, правильно работающие почти в любом положении. Положение и вес edge loop'ов практически всегда будут требовать правки после привязки сетки к скелету и проверки нескольких поз.

Редактирование острых/сглаженных ребер

После того, как геометрия модели воссоздана, понадобится определить, какие ребра на модели должны быть острыми. Возможно использовать автоматическое сглаживания, но это обычно дает результат, далекий от идеального. Выбрать, какие ребра сделать острыми, не так просто. Несглаженные ребра обычно использут чтобы изобразить сгибы, трещины, границы между материалами, места, где у модели большие углы между гранями (ориентировочно, больше 75 градусов). Вообще говоря, все ребра с углом между гранями более 90 градусов должны быть острыми, поэтому можно начать с автоматического сглаживания для такого значения угла. Чтобы редактировать острые ребра, войдите в режим выделения ребер (например, горячей клавишей "i"), выделите ребра, нажмите правую кнопку мыши на выделенных ребрах и выберете Mark hard edge/vertex (у меня работает по-другому: Model>Modify-Component>Mark hard edge/vertex - прим. перев.). Если выделить эти ребра еще раз и выбрать эту же опцию, то острые ребра будут становиться сглаженными и наоборот. Можно также убрать свойство жесткости ребер, удалив их ветвь в иерархии модели в Проводнике (XSI Explorer).

Задание UV-координат

XSI.

Следующим шагом в создании модели будет редактирование UV-координат вашей модели. За базовой информацией по редактированию UV-координат обратитесь к документации XSI (разделы Shaders, Lights and Cameras. Section: Texturing Basics). Один из подводных камней в работе с текстурным редактором XSI заключается в том, что в результате получается несколько наборов UV-координат. Вам нужно, чтобы у модели был только один набор текстурных координат. На этом рисунке вы можете видеть, как в одном узле текстурных координат можно в какой-то момент получить несколько наборов текстурных координат.

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

Чтобы с чего-то начать, попробуйте использовать тип маппинга Get>Property>Texture Projection>Cubic, он даст набор хороших кусков развертки, так называемых UV Islands. Затем можно воспользоваться инструментом Island Heal в текстурном редакторе, чтобы быстро соединить эти куски и повернуть/отмасштабировать их. Также обратитесь к разделу The Texture Editor, Healing Polygon Islands документации XSI.

После какого-то времени, проведенного за сшиванием и перетаскиванием кусков развертки, вы получите набор UV-координат с небольшими искривлениями или растяжками. Оценить правильность развертки можно поставив в качестве текстуры эту: Checkerboard Starter Texture (нажмите правой кнопкой мыши и выберете Save As... - у меня ссылки не видно, видимо, ее забыли. Имеется в виду тестовая текстура, на которой нарисованы квадратики, раскрашенные в шахматном порядке - легко можно изготовить такую текстуру в Paint'е - прим.перев.). Если обнаружится место с неприемлемым искажением текстуры, большинство проблем можно исправить применяя Relax UV в должном количестве. В случаях, когда это не сработает, просто используйте Subprojection в Texture Editor, чтобы заново наложить текстурные координаты в этом месте модели.

Привязка сетки модели к скелету

Когда вы решили проблемы с геометрией модели, назначили развертку и получили приемлемый скелет, нужно привязать сетку к костям. Это можно сделать через панель анимации. Нажав 2 вы переведете панель инструментов в режим анимации. Когда ваша сетка выделена, выберете оболочку Deform>Envelope>Set, затем выделите кости, которые хотите включить. Чтобы редактировать получившиеся envelope'ы (оболочки), используйте панель весов, в которую можно попасть через иконку кисти в нижнем левом углу интерфейса. В этой панели также есть редактор весов, в котором можно сохранять и загружать веса envelope'ов. Подробное объяснение процесса привязки к скелету можете прочитать в разделе Envelopes документации XSI.

Правка envelope'ов и геометрии для анимации

Обычно первая настройка оболочек делается в исходной позе скелета. Однако, это ничего не скажет о том, как привязка на самом деле работает. Чтобы увидеть ее в действии, необходимо несколько итераций подстройки: нужно подергать скелет, а затем подправить деформацию немного перенастроив envelope'ы, потом посмотреть на скелет в другой позе и т.п.. На этой стадии может понадобиться добавить сечений на сгибах, если не получается добиться хорошей деформации суставов подгонкой привязки. Хотя, XSI идеально подходит для такой правки. Так как он нелинеен, вы можете исправить геометрию без необходимости постоянно делать привязку оператором.

Настройка директорий и рабочей среды (workspace)

Структура директорий

Информацию о расположении скомпилированных моделей и исходных файлов смотрите в статье Файлы Source SDK b структура директорий(en). Чтобы узнать, как компилировать модели, используя эту структуру, см. Компиляция моделей(en).

Советы по работе в Windows

В проводнике Windows откройте Tools > Folder Options > File Types. Свяжите с файлами типа .MDL приложение HLMV.exe, и двойной клик на файле .mdl автоматически откроет его в программе просмотра моделей. Файлам .QC выставьте приложение studiomdl.exe, чтобы можно было компилировать модель просто дважды кликнув на .QC-файле. Вы всегда можете использовать команду Open With..., чтобы открыть его в текстовом редакторе (например, в Блокноте), или же можете добавить команду Edit в меню, вызываемое по правому клику мыши, которая откроет .QC в текстовом редакторе. Также можете добавить в меню, появляющееся при правом щелчке мыши, команду для компиляции .TGA с помощью Vtex(en).

В качестве альтернативы (или вдобавок к перечисленным настройкам), создайте ярлыки для studiomdl.exe и vtex.exe на рабочем столе. После этого можно просто перетаскивать .QC-файлы на ярлык StudioMdl , а картинки .TGA -- на ярлык VTex, чтобы их скомпилировать.

См. также