Полигональная сетка (Mesh)
Source
В
Source термин "сетка" обычно используется для обозначения отображаемой геометрии, а не габаритов столкновений модели. Иногда его называют облачением envelope или обликом skin. Отображаемый облик проецируется на сетку, которая облачается на скелет.
Для каждой отображаемой модели требуется как минимум одна полигональная сетка сетка тела, но она также может содержать дополнительные сетки. Каждая из этих сеток также может иметь несколько версий, оптимизированных для замены уровней детализации.
Все данные сетки экспортируются из редактора моделей в файлы SMD, DMX, OBJ или FBX, а затем компилируются в двоичные файлы модели VVD и VTX. Данные сетки состоят из следующих составляющих для каждого треугольника :
- Данные смещений : Координаты вершин (относительно назначенной родительской кости),
- Данные сглаживания : Вектор нормали вершинs (относительно назначенной родительской кости),
- Данные облика : Координаты вершин UV-разметки и имена основного облика,
- Данные облачения : Значения развесовки вершин и родительской кости.
треугольников файла "Studio Model Data".Сетка тела
- Основная сетка тела (body mesh) отображается по умолчанию, если она не заменена другой сеткой с низким уровнем детализации. Иногда ее называют отображаемой сеткой (Reference mesh), потому что она определена в файле Reference.smd модели и была скомпилирована с помощью QC-команды $body или $model.
Дополнительные сетки
- При необходимости дополнительные сетки можно включать и выключать во время игры. Как и основная сетка тела, они облачены на скелет этой модели и будут деформироваться (растягиваться и сгибаться), как если бы были частью основной сетки тела. Некоторые предметы одежды являются хорошими кандидатами для переключаемых дополнительных сеток, например, различные типы бронежилетов или головные уборы. В отличие от этого, подмодели (например, оружие) могут быть прикреплены к определенным точкам крепления на скелете модели, но они остаются облачением своего собственного скелета; их геометрия будет перемещаться скелетом модели, но не будет деформироваться им.
- Параметр $bodygroup позволяет добавлять к основной сетке тела любое количество дополнительных сеток (SMD). При указании нескольких $bodygroup, переключение дополнительных сеток может запускаться событиями (на уровне кода).
- В то время как "Альтернативные облики(skins)" подменяют основной облик, дополнительные сетки не заменяют основную сетку тела.
- Дополнительные сетки не влияют на габарит столкновений модели.
- (Нужно сделать: Сетка лица модели для лицевой анимации?)
- Дополнительные сетки должны быть экспортированы в отдельные
.smdфайлы как и основная сетка тела, но все они должны быть облачены на один и тот же скелет, чтобы их движения совпадали с моделью (см. $bonemerge).
Сетка низкой детализации (LOD mesh)
- Система уровней детализации (LOD) Source позволяет отображать "дешевую" (упрощенную) версию основной сетки тела на больших расстояниях, где потеря "дорогих" деталей незаметна для пользователя. Любое количество замещающих сеток низкой детализации может быть создано из упрощенной основной сетки тела, и скомпилирована в lod.SMD с помощью параметра $lod. Сетка тела используется, когда ни одна сетка низкой детализации не активна; можно сказать, что это сетка "lod0". Смотрите раздел Создание моделей низкой детализации.
Source 2
В
Source 2, BSP элементы больше не применяются, и карты теперь создаются с использованием сеточной геометрии.
Устранение неоднозначности
- Модель - это функциональный набор компонентов, включающий в себя все данные, необходимые для выполнения определенной роли: облик(skin), сетку, скелет, геометрию столкновений, соответвующие анимации, звуки, физические свойства и т.д. Часто моделью называют непосредственно файл SMD или Studiomodel, чтобы отличить её от анимации или элемента карты; например, "отображаемая модель" обычно относится к файлу reference.smd, тогда как все данные "$collisionmodel" (включая данные physbox.smd и другие параметры) компилируются в PHY-файл. Studiomodel используется только для обозначения полностью скомпилированной модели, используемой платформой Source, редактором Hammer, просмотрщиком HLMV и т.д. Конкретная Studiomodel обычно указывается с помощью файла "modelname.mdl", поскольку MDL-файл используется для индексации других файлов данных, необходимых Studiomodel для функционирования (т.е. её данных геометрии MDL, PHY, VVD, VTX и облика VMT).
- В Source термин габарит столкновений (Collision Hull) предпочтительнее, чем сетка столкновений (Collision Mesh), потому что каждый элемент трёхмерной геометрии столкновений должен быть выпуклой оболочкой, независимо от того, определена ли геометрия вершин (в исходном коде) простым конструктором BoundingBox или форматом треугольников SMD. Чтобы сохранить выпуклость, геометрия вершин оболочки также должна быть жёсткой, то есть не деформируемой. Вогнутая модель столкновения состоит из жесткой системы (перекрывающихся) жестких корпусов, модель сочлененного столкновения состоит из гибкой системы жестких оболочек, которые смещаются, но не деформируются при движениях скелета. Таким образом, "габарит столкновений" всегда является жёсткой выпуклой оболочкой, а "отображаемая сетка" всегда является деформируемой и допускающую вдавливание сеткой. Даже прямоугольные элементы карты "разделяются" на треугольники перед их отображением (поскольку конвейеры графического процессора оптимизированы для обработки треугольников).