Эта статья документации для всего, что использует платформу Source. Нажмите для получения дополнительной информации.
This article's documentation is for Source 2. Click here for more information.

Полигональная сетка (Mesh)

From Valve Developer Community
< Ru
Jump to navigation Jump to search
English (en)Русский (ru)Translate (Translate)

Source

В Source Source термин "сетка(en)" обычно используется для обозначения отображаемой геометрии, а не габаритов столкновений модели. Иногда его называют облачением envelope или обликом skin. Отображаемый облик(en) проецируется(en) на сетку(en), которая облачается(en) на скелет(en).

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

Все данные сетки экспортируются из редактора моделей(en) в файлы SMD(en), DMX(en), OBJ(en) или FBX(en), а затем компилируются в двоичные файлы модели VVD и VTX. Данные сетки состоят из следующих составляющих для каждого треугольника :

Tip.pngСовет:Смотрите формат SMD-файла(en), чтобы узнать, как именно эти данные хранятся в блоке треугольников файла "Studio Model Data".

Сетка тела

Основная сетка тела (body mesh) отображается по умолчанию, если она не заменена другой сеткой с низким уровнем детализации. Иногда ее называют отображаемой сеткой (Reference mesh), потому что она определена в файле Reference.smd(en) модели и была скомпилирована с помощью QC-команды $body(en) или $model(en).

Дополнительные сетки

При необходимости дополнительные сетки можно включать и выключать во время игры. Как и основная сетка тела, они облачены(en) на скелет этой модели и будут деформироваться (растягиваться и сгибаться), как если бы были частью основной сетки тела. Некоторые предметы одежды являются хорошими кандидатами для переключаемых дополнительных сеток, например, различные типы бронежилетов или головные уборы. В отличие от этого, подмодели (например, оружие) могут быть прикреплены к определенным точкам крепления(en) на скелете модели, но они остаются облачением своего собственного скелета; их геометрия будет перемещаться скелетом модели, но не будет деформироваться им.
  • Параметр $bodygroup(en) позволяет добавлять к основной сетке тела любое количество дополнительных сеток (SMD(en)). При указании нескольких $bodygroup(en), переключение дополнительных сеток может запускаться событиями (на уровне кода).
  • В то время как "Альтернативные облики(skins)" подменяют основной облик, дополнительные сетки не заменяют основную сетку тела.
  • Дополнительные сетки не влияют на габарит столкновений(en) модели.
  • (
    Нужно сделать: Сетка лица модели(en) для лицевой анимации?
    )
  • Дополнительные сетки должны быть экспортированы в отдельные .smd файлы как и основная сетка тела, но все они должны быть облачены(en) на один и тот же скелет, чтобы их движения совпадали с моделью (см. $bonemerge(en)).

Сетка низкой детализации (LOD mesh)

Система уровней детализации (LOD)(en) Source позволяет отображать "дешевую" (упрощенную) версию основной сетки тела на больших расстояниях, где потеря "дорогих" деталей незаметна для пользователя. Любое количество замещающих сеток низкой детализации может быть создано из упрощенной основной сетки тела, и скомпилирована в lod.SMD с помощью параметра $lod(en). Сетка тела используется, когда ни одна сетка низкой детализации не активна; можно сказать, что это сетка "lod0". Смотрите раздел Создание моделей низкой детализации(en).

Source 2

Неполная

This article or section is a stub. You can help by expanding it.

В Source 2 Source 2, BSP элементы больше не применяются, и карты теперь создаются с использованием сеточной геометрии.

Устранение неоднозначности

  • Модель - это функциональный набор компонентов, включающий в себя все данные, необходимые для выполнения определенной роли: облик(skin), сетку, скелет, геометрию столкновений, соответвующие анимации, звуки, физические свойства и т.д. Часто моделью называют непосредственно файл SMD(en) или Studiomodel(en), чтобы отличить её от анимации или элемента карты(en); например, "отображаемая модель" обычно относится к файлу reference.smd(en), тогда как все данные "$collisionmodel" (включая данные physbox.smd и другие параметры) компилируются в PHY-файл(en). Studiomodel(en) используется только для обозначения полностью скомпилированной модели, используемой платформой Source, редактором Hammer, просмотрщиком HLMV и т.д. Конкретная Studiomodel обычно указывается с помощью файла "modelname.mdl", поскольку MDL-файл используется для индексации других файлов данных, необходимых Studiomodel для функционирования (т.е. её данных геометрии MDL, PHY, VVD, VTX и облика VMT).
  • В Source термин габарит столкновений (Collision Hull) предпочтительнее, чем сетка столкновений (Collision Mesh), потому что каждый элемент трёхмерной геометрии столкновений должен быть выпуклой оболочкой, независимо от того, определена ли геометрия вершин (в исходном коде) простым конструктором BoundingBox или форматом треугольников SMD. Чтобы сохранить выпуклость, геометрия вершин оболочки также должна быть жёсткой, то есть не деформируемой. Вогнутая модель столкновения состоит из жесткой системы (перекрывающихся) жестких корпусов, модель сочлененного столкновения состоит из гибкой системы жестких оболочек, которые смещаются, но не деформируются при движениях скелета. Таким образом, "габарит столкновений" всегда является жёсткой выпуклой оболочкой, а "отображаемая сетка" всегда является деформируемой и допускающую вдавливание сеткой. Даже прямоугольные элементы карты "разделяются" на треугольники перед их отображением (поскольку конвейеры графического процессора оптимизированы для обработки треугольников).