Тема: Физические конструкции (ограничения) Ключевые слова: конструкция ограничение constraint скрепить прикрепить См. также:
Для создания определённых конструкций - попарного скрепления различных объектов, движок Source использует специальные constraint-энтити. Т.е. для скрепления каждой пары объектов между собой используется constraint-энтити. Аналогично, каждая пара образуемых таким образом физических конструкций может скрепляться, в свою очередь, посредством ещё одной constraint-энтити.
Формально слово "constraint" переводится как "ограничение", но в конечном счёте данные энтити помогают в создании разнообразных (в основном, динамических) конструкций. Хотя каждая constraint-энтити отвечает именно за ограничение перемещения двух VPhysics-объектов относительно друг друга. Так что будет разумно использовать как прямой перевод, так и смысловое именование. VPhysics-объекты представляют из себя энтити, у которых имеются модель (mdl). В файле модели как правило описывается внешний вид, коллизионная модель (collision model), задаются некоторые характеристики объекта (масса, материал). Сам VPhysics представляет из себя встроенный в Source движок 3D-моделирования физических свойств и явлений: масс, гравитации, трения, сопротивления воздуха, инерции и плавучести. Прообразом VPhysics послужил Havok. Примечание: constraint-энтити манипулируют с физическими центрами масс подчинённых энтити. Чтобы использовать конкретную точку присоединения (attachment) на модели, к изначальной конструкции прикрепляется энтити info_constraint_anchor, для которой можно указать родительскую энтити (см. далее). Примечание: чтобы просто ограничить движение энтити относительно игрового мира (т.е. прикрепить её к некоторой неподвижной точке), один из указателей constraint-энтити на подчинённый объект можно оставить пустым. Примечание: основное предназначение constraint-энтити - скрепление именно VPhysics-объектов. Несмотря на это, можно в качестве подчинённых объектов указывать, например, env_sprite. А вообще, для подобных объектов (в т.ч. QPhysics - с упрощённой физикой) обычно используют привязку к родительской энтити (parent). Замечание: если нужно управлять конкретным скреплением во время игры (включать/отключать), не используйте для него phys_constraintsystem (не указывайте атрибут Constraint System Manager). В противном случае скрепление будет всё время активным, до момента разрушения. Также имейте ввиду, что скрепление вычисляется на этапе загрузки карты, поэтому даже те объекты, скрепление между которыми изначально выключено, необходимо сразу располагать в желаемом конечном виде относительно друг друга. Простые конструкции phys_constraint блокирует движение подчинённых объектов относительно друг друга (эффект склеивания или примагничивания).phys_lengthconstraint ограничивает максимальное и минимальное расстояние между подчинёнными объектами, либо расстояние, на которое может переместиться объект (если задан один) от текущего положения (эффект связывающей верёвки).phys_keepupright стремится придать подчинённому объекту вертикальное положение. Имейте ввиду, что результат может быть сильно неудовлетворительным.phys_ballsocket блокирует движение подчинённого объекта, допуская при этом свободное вращение (эффект сустава, который задаётся положением данной энтити).phys_hinge блокирует движение подчинённого объекта, допуская при этом вращение относительно выбранной оси (эффект насаженного на стержень объекта).phys_slideconstraint ограничивает движение подчинённого объекта вдоль выбранной оси (эффект скольжения вдоль определённой линии). Сложные конструкции phys_pulleyconstraint конструкция из двух phys_lengthconstraint с общими значениями расстояний (эффект веревки, связывающей два крепления, за которые подвешены объекты).phys_ragdollconstraint конструкция из phys_ballsocket с ограничением углов вращения (аналогичен эффекту сустава, но допустимо отклонение объектов на определенный угол, для каждой оси).phys_spring жёстко ограниченная длина с эффектом пружины (в дополнительных энтити контроля не нуждается). Специальные энтити phys_constraintsystem управляет группой взаимодействующих (перекрывающихся) конструкций, делая их стабильными (подавляет ненужные коллизии и "дёргания").info_constraint_anchor используется как составная часть - для прикрепления конструкции к определённой точке энтити (по-умолчанию конструкция действует относительно центров масс подчинённых объектов). Обычно конструкция прикрепляется к данной энтити, которая с помощью Parent прикрепляется к необходимой энтити. Возможно и прикрепление info_constraint_anchor, в свою очередь, к другой конструкции. Статьи (рус): Статьи (eng): Constraint, VPhysics
Номер статьи: 50
|