Структура модели

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

Свойства/особенности модели

Отображаемые поверхности

В конечном итоге, на экране отображается только внешний вид (облик(en)) модели. Двумерные текстуры, представляющие собой облик, проецируются на сетку в трёхмерное пространство с учётом UV-разметки. Геометрия сетки, в свою очередь, деформируется движениями скелета модели.

  • Отображаемая модель/сетка : (aka Renderbox(en), Render geometry) includes Rendered Geometry: 3D Vertices, $origin, UV-разметка(en))
    • Параметры сетки : $bodygroup(en)s allow optional add-on sub-meshes to be included in the Render model.
Нужно сделать: confirm: NPC LOS tests are traced against the Render Mesh.

Поверхности столкновений

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

Габарит столкновений используется для движения скелета под действием сил столкновений виртуальной физики (vphysics). Для жёсткой модели это ограничивается смещением и/или вращением всей модели вокруг её центра масс (по умолчанию, её точки отсчёта $origin ? ... центр масс = центр вращения).

Анимация

Система скелетных движений

When a bone is moved any hitbox and mesh vertices "parented" to it moves with it. Unlike hitboxes, mesh vertices may be "parented" to more than one bone. When the parent bones move apart, the "joint mesh" is stretched, when the joint is closed, the mesh compresses. The Skeleton deforms the Mesh which deforms the rendered skin(en).

The skeleton can be articulated by either a prescribed (aka canned or keyframe) kinematic sequence applied directly to the bone positions, or by runtime-calculated kinetic (aka ragdoll or vphysics) forces (including jointconstraints) acting through the collision model, in which case we can say that the collision model articulates the Skeleton which then deforms the mesh which deforms the rendered Skin in the normal way. Without the collision model as a deformer, vphysics forces have no effect on the model's skeleton or position. The collision model cannot be deformed in any way by kinematic sequences, they belong to different movement systems. The entity dictates which system is applied to the model, whether it is moved by vphysics or kinematics.

Таким образом, физическая SMD является особым видом подвижной SMD, поскольку в обоих случаях к исходной SMD применяется движение скелета. Физическая SMD - это оснащение виртуальной физикой, которая используется для управления движениями скелета с кукольной физикой. Скелетом перемещаются только исходная SMD и облик.

  • Физические ограничения :
    • $collisionjoints(en): ragdoll.smd = jointed collision model convex bone-hulls & skeleton
    • Note.pngПримечание: A joint is where a bone attaches to its parent bone. All bones (except the root bone) must have only one joint, so the "bonename" is also used to specify its joint. bone's position is offset from joint
    • Ограничения(en) физических объектов и func_physbox(en)
  • Покадровые ограничения : eg func_door motion ?
    • Обратная кинематика : $ikchain(en): used for "collision" modifiers to $sequence(en)s
    • Развесовка вершин : $weightlist(en): Rigging? can be "modified" by other properties, eg iklock ... blend anims
    • Ограничения/движение функциональных объёмных объектов (func_rotating, func_conveyor, etc)

Взаимное позиционирование объектов

Движения поверхностей

Тип анимации, применяемый к вершинам сетки без использования облачения на скелет. Она смешивает переходные состояния (например, выражений лица) для создания плавных переходов между каждым состоянием/выражением. Для правильной работы анимации начальное и конечное состояния должны иметь одинаковое количество вершин. Также называется лицевой анимацией. [Нужно сделать] (смотрите анимация поверхности(en))

Словарь моделирования

Подмодели

  • $collisionmodel(en) or $collisionjoints(en) specifies a very important sub-model which is used for vphysics animation. Almost(en) all World Models must have a 3D "physics shadow" of their Mesh. The collision model's geometry, smoothing group and envelope data are defined in the Physics.smd(en) which is usually a pared-down version of the Default Mesh. The collision model is Rigged (if necessary) using the QC $collisionjoints(en) configuration, and compiled to the model's PHY(en) file. A Jointed Collision Model causes skeletal articulation resulting only from vphysics forces (ie passive or "Ragdoll" animation). Models under active or "Dynamic" animation use an Entity-specific Collision Hull(en) and the IK system(en) for collision detection.
  • $attachment(en) points allow many world prop models, such as the character's "current weapon", to be constrained to a specific bone or bones on the main model. These sub-models will move relative to the bone they are attached to, but will not deform like the Mesh(en)es. They are essentially prop-constraints used for skeletal(en) or movement hierarchy(en) animation.
  • $bonemerge(en) submodels include w_weapons enveloped to reference skeleton.
  • $bodygroup(en) submodels include clothing enveloped to reference skeleton.

Геометрия столкновений

Ограничивающий (размерный) короб

Ограничивающий (размерный) короб - это простой выпуклый параллелепипед, который охватывает все Материальные и Видимые части модели, то есть её гарабарит столкновений, короба воздействий и т.д.

  • Любая геометрия за пределами ограничивающего короба будет считаться нематериальной (NotSolid) для пуль, линии видимости (LOS)(en) и материальных (Solid) объектов.
  • Он используется только для простых проверок присуствия, так как нет необходимости проводить сложные (затратные) проверки на столкновения с объектами, которые не попадают в ограничивающий короб.
  • По умолчанию ограничивающий короб дублируется из габарита столкновений, который может быть слишком маленьким. Для его корректировки используется QC-команда $bbox.
  • Смотреть также раздел Surrounding Bounds статьи CollisionProperty(en).
  • Смотреть также Габарит столкновений(en).

Габарит столкновений

  • Каждый материальный(Solid) объект имеет какой-либо Габарит столкновений (Collision Hull). Это может быть
  • Sometimes called a Physbox or Movement Hull, it is used for vphysics(en) collisions between one or more moving objects; even Static Solid objects can collide with Moving Solid objects. Смотрите CollisionProperty(en).

Короб воздействий

Нужно сделать: ...WIP

Типы моделей

Нужно сделать: develop & move this somewhere more appropriate ?


  • Studiomodels
  • Видовые модели (Viewmodels)
  • Модели небосвода (Skyboxmodels) и мелкие модели (Detailmodels)
  • Модели мира игры (Worldmodels)
    • Неподвижные модели (Static models)
    • Физические модели (Physics models)
    • Модели машин/механизмов (Machine models)
    • Модели персонажей (Character models)
  • Элементные модели (Brush models) и заготовки (prefabs)

VTF слои

Нужно сделать: move this somewhere more appropriate, Texture(en) perhaps?

Текстуры VTF(en) (via VMT Skin)

Основная текстура VTF Описание VMT-команды
modelname_clr.vtf Массив цветности КЗС $basetexture(en)
modelname_clr_t.vtf Массив цветности КЗС с маской сплошности (Opacity) в альфа-канале $basetexture(en) $translucent(en)
modelname_clr_s.vtf Массив цветности КЗС с маской бликов (Specular) в альфа-канале $basetexture(en) $basealphaenvmapmask(en)
modelname_clr_l.vtf Массив цветности КЗС с маской свечения (Luminosity) в альфа-канале $basetexture(en) $selfillum(en)
modelname_clr_h.vtf Массив цветности КЗС с маской рельефа (Heightmap) в альфа-канале (только для хранения : используется для редактирования нормалей normalmap)
Маска рельефа (Bumpmap) VTF Описание VMT-команды
modelname_nrm.vtf Массив нормалей КЗС $bumpmap(en)
modelname_nrm_s.vtf Массив нормалей КЗС с маской бликов (Specular) в альфа-канале $bumpmap(en) $normalmapalphaenvmapmask(en)

Смотреть также