3D для каждого: Как игры врут про физику — и почему это сложнее, чем кажется. 3d.. 3d. 3d graphics.. 3d. 3d graphics. 3d-графика.. 3d. 3d graphics. 3d-графика. 3d-моделирование.. 3d. 3d graphics. 3d-графика. 3d-моделирование. Блог компании FirstVDS.. 3d. 3d graphics. 3d-графика. 3d-моделирование. Блог компании FirstVDS. графика игр.. 3d. 3d graphics. 3d-графика. 3d-моделирование. Блог компании FirstVDS. графика игр. научно-популярное.. 3d. 3d graphics. 3d-графика. 3d-моделирование. Блог компании FirstVDS. графика игр. научно-популярное. Разработка игр.. 3d. 3d graphics. 3d-графика. 3d-моделирование. Блог компании FirstVDS. графика игр. научно-популярное. Разработка игр. Физика.. 3d. 3d graphics. 3d-графика. 3d-моделирование. Блог компании FirstVDS. графика игр. научно-популярное. Разработка игр. Физика. физика в играх.. 3d. 3d graphics. 3d-графика. 3d-моделирование. Блог компании FirstVDS. графика игр. научно-популярное. Разработка игр. Физика. физика в играх. физика частиц.. 3d. 3d graphics. 3d-графика. 3d-моделирование. Блог компании FirstVDS. графика игр. научно-популярное. Разработка игр. Физика. физика в играх. физика частиц. Читальный зал.
3D для каждого: Как игры врут про физику — и почему это сложнее, чем кажется - 1

Доброго времени суток, дорогие хабражители и хабражительницы!

Среди читателей есть как графонодрочеры, так и любители лоу-поли аниме. И те, и другие любят, когда что-то красивенько колыхается в такт погоде и походке персонажа. И те, и другие не любят, когда ГГ проваливается “под текстуры” и улетает на другой конец карты. Но мало кто знает, что оба этих явления имеют одну общую природу. И природа эта — ложная физика.

Плащ героя развевается на ветру, мяч отскакивает от пола, дракон при падении смешно кувыркается. Всё это выглядит как физика — но движок давно научился врать убедительно. За каждым красивым эффектом стоит выбор: честно просчитать или ловко сымитировать. Разбираемся, как виртуальный мир притворяется настоящим — и почему это искусство не менее сложное, чем сама физика.

Забегая вперед: да, физика груди Леди Димитреску и сочные ягодицы героини Stellar Blade — тоже обман.

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

На очереди разбора — физические законы виртуального мира.

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

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

В посте могут встречаться упоминания программ, игр, фильмов и студий. Не сочтите это за рекламу — всего лишь демонстрация для понимания контекста.

Глоссарий

Под 3D в данном посте понимается система визуализации трехмерного представления программного кода. Графические штуки, которые вы видите в играх с трехмерной графикой, в мультиках, в фильмах наподобие «Аватара» — это 3D-модели, о которых мы говорим. Принципиальной разницы между моделями для игр, кино, рекламы и мультиков нет. Все различия заключаются в подробности модели и наличии дополнительных «аксессуаров» (текстур, костей, физики, анимации) и качестве финального рендеринга.

Рендеринг (render, rendering) — процесс визуализации 3D-моделей. В зависимости от нужд и настроек, рендеринг может включать только саму модель, модель с текстурой, шейдеры, а также один статичный кадр или серию кадров в формате видео или гиф-анимации.

Меш (mesh) — «кожа» или «ткань» модели, состоящая из вершин (axis, point), соединяющих их ребер (ribs, edges) и заполняющих пространство между ребрами граней — полигонов (polygons). Подробнее про меш и вообще геометрию модели тутова.

Скелет или риг, а также кости (bones, rig, skeleton, armature) — «каркас» модели, служащий для удобства позирования и анимации модели.

UV-карта (UV-map) — координаты наложения текстур на меш модели в формате двумерной проекции-мозаики. Напоминает выкройку. Определяет, как и в каком масштабе текстура накладывается на модель. Создание данной карты называется разверткой.

Текстуры (map, texture) — файлы изображений, определяющих цвет (diffuse/color), имитацию рельефа (normal), блика (specular), объема (displacement), прозрачности (alpha) и так далее. Что такое текстура и как ее создают можно почитать здесь

Физика (physics) — имитация физических взаимодействий (столкновения, ветра, жидкости).

Физика в играх и вообще графике — это общее название для всех виртуальных процессов, которые так или иначе изображают действие реальных законов физики. В широком смысле, физика включает в себя движение волос при повороте головы, трепетание знамени на ветру, разлет дыма от костра, падение и подпрыгивание мяча. Физика в виртуальном моделировании играет важную функцию, и дело не только в приятном глазу реалистичном поведении предметов, но и в базовом функционировании таких привычных и примитивных вещей, как ходьба и стрельба в играх. Рядовой геймер даже не подозревает, насколько притворная физика делает игру удобной и привычной. Мячик падает на пол под действием ложного тяготения, прыжок с ящика не приводит к парению в воздухе (если у нас игра не про космос, конечно), а пуля в шутере “честно” изображает полет по параболе и попадание в цель. Даже самая простейшая “Три в ряд” на телефоне использует физическую симуляцию, хотя для неискушенного пользователя это неочевидно.

Важное примечание: поскольку большая часть доступных движков 3D-моделирования и визуализации работает по принципу полигонального моделирования, описывать и разбирать мы будем именно его, с небольшими оговорками. Это значит, что физические стимуляции в первую очередь учитывают наличие полигональной сетки с вершинами (vertex, pointed, axis). В классических движках расчёт физики основывается в основном на положении и столкновения вершин. Далее мы раскроем это более подробно. 

Памятка: объект состоит из меша — полигональной поверхности. Полигон содержит вершину, ребро и грань (сам полигон).

Памятка: объект состоит из меша — полигональной поверхности. Полигон содержит вершину, ребро и грань (сам полигон).

Имитация и симуляция

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

Имитация физикипроцесс, создающий видимость работы законов физики. Обычно это предзаписанные (запеченные) анимации. Скажем, при ходьбе персонажа должен колыхаться плюмаж из перьев на шлеме или плащ. У нас два пути — просчитать физику или имитировать ее. О расчетах мы поговорим ниже, а вот сымитировать ее достаточно легко. Мы можем заранее задать ткани изменение либо прямым морфингом (изменением поверхности модели плаща), либо задав ей скелетную анимацию и записав положение костей. Еще можно задать траекторию движения, по которой будет передвигаться объект. И то, и другое будет работать независимо от внешних условий и вычислительной мощности видеокарты — они уже записаны в память компьютера и машине остается только отрендерить (визуализировать) модель.

Наследие тихого холма

В первых играх Silent Hill игровой движок не мог отрендерить целую улицу города, поэтому персонажа на некотором расстоянии окружал многослойный шар полупрозрачных слоев тумана. 

3D для каждого: Как игры врут про физику — и почему это сложнее, чем кажется - 3
3D для каждого: Как игры врут про физику — и почему это сложнее, чем кажется - 4
3D для каждого: Как игры врут про физику — и почему это сложнее, чем кажется - 5

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

Для капель дождя обычно используют спрайты типа billboards — маленькие плоскатики в один полигон с текстурой капли, которые всегда повернуты к камере (зрителю, независимо от угла обзора).

Для капель дождя обычно используют спрайты типа billboards — маленькие плоскатики в один полигон с текстурой капли, которые всегда повернуты к камере (зрителю, независимо от угла обзора).

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

В играх с реалистичным средневековым боем даже специально записывают анимации с усилием, изображающим поднятие и удары тяжелым оружием (медленное начало удара и быстрое окончание с падением кончика меча). Для этого либо записывают реальные движения человека с утяжеленными муляжами (как в Dark Souls и Elden Ring), либо дорабатывают через параметры смешения и “весов” анимаций.

Также имитацией физики можно считать VFX (эффекты огня, снега и дыма), за некоторым исключением. Об этом мы поговорим позже. 

Симуляция физикиболее точное изображение взаимодействия объектов. Заранее прописаны только правила (сила, плотность среды, направление) и характеристики объектов (резина пружинит, вода стекает, камень твердый), а все остальное рассчитывается в момент запуска взаимодействия. Скажем, у нас есть ящик мячиков для рендера. Мы можем вручную поместить десяток мячиков без пересечений в ящик, это займет минут десять. Но если мячиков будет не десять, а сто или тысяча?

А можем создать “облако” мячиков, поместив их над ящиком. Затем нам надо “сказать” движку, что ящик и мячики имеют должны взаимодействовать по законам физики. Для этого следует задать ящику и мячам свойство твердого объекта (чтобы мячи не провалились), и присвоить им атрибуты гравитации. Запускаем симуляцию — мячи красиво раскатались по ящику. Причем каждый раз, как мы будем запускать этот процесс, мячи будут падать немного по-разному, ведь мы не задали им траекторию, мы только сообщили им правила игры. 

Ручная имитация (полигональная анимация), затем физика ткани на низком разрешении, в конце физика ткани на высоком разрешении

Ручная имитация (полигональная анимация), затем физика ткани на низком разрешении, в конце физика ткани на высоком разрешении

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

Синий шарик - ручная анимация, красный - симуляция физики падения

Синий шарик – ручная анимация, красный – симуляция физики падения

Кроме того, ручная имитация физики нужна для стилизации. Например, когда нам нужно нарочно утрированное движение для динамики кадра.

Виды физики в играх

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

Силы

Физика гравитации (обычно так и называют gravity) — симулирует действие земного притяжения. Обычно по умолчанию находится в среде 3D-визуализации (всегда есть в движке), и её нужно только включать в параметрам объекта, чтобы на него начала воздействовать гравитация. По умолчанию она примерно равна средней земной гравитации (1G) и соответствует ускорению свободного падения в воздухе.

3D для каждого: Как игры врут про физику — и почему это сложнее, чем кажется - 9

Интересный факт

Сила тяжести на земле неодинакова. В некоторых местах земного шара вы будете легче, а в других — тяжелее. Всего на несколько грамм, так что вы вряд ли это ощутите. 

Однако для высокоточных приборов, например, GPS-навигаторов и ускорителей частиц, это сверхважно.

3D для каждого: Как игры врут про физику — и почему это сложнее, чем кажется - 10

Для более точных расчетов используют геоид — симуляцию поверхности земли с гипертрофированным влиянием гравитации. Простым языком это объясняется тут  

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

Blender: Параметры потери движения (имитация сопротивления среды) можно задать прямо во вкладке физики объекта

Blender: Параметры потери движения (имитация сопротивления среды) можно задать прямо во вкладке физики объекта

Первый задается через характеристики объекта (например, в Blender 3D), второй — через собственно среду. В первом случае настройка тонкая и применяется для одного объекта или нескольких объектов в сцене для красивой демонстрации. Во втором случае мы можем задать целиком среду физического действия, либо создать большой объект с нужным параметром плотности, а все взаимодействующие объекты поместить внутрь.

Физика ветра (wind) похожа на работу вентилятора. Технически мы размещаем в сцене источник ветра (объект, зону или плоскость), задаем ему размер, силу/скорость испускаемого ветра и в некоторых случаях — форму и отклонение потоков воздуха. Эта штука не запускает ветер в прямом смысле слова — молекулы воздуха не вылетают из источника, как это происходит в жизни. В большинстве движков это лишь векторы, которые “сообщают” вершинам, как им нужно сдвигаться относительно предыдущего кадра.

3D для каждого: Как игры врут про физику — и почему это сложнее, чем кажется - 12
Симуляция ветра в Blender 3D

Симуляция ветра в Blender 3D

Физика взрыва по сути своей близка к физике ветра. Но если ветер действует постоянно и с небольшой силой, то взрыв происходит за секунды и имеет более мощные векторы воздействия. Взрыву также можно задать основное направление, но, как правило, используют сферу или полусферу.

VFX (Visual Effects)

Важное уточнение: физика взрыва и визуальный эффект взрыва в 3D — не одно и то же. Как правило, визуальная часть — это VFX, то есть оптическая иллюзия, включающая плоскатики со спрайтами огня/дыма или систему частиц (в случае продвинутой графики). Некоторые движки способны работать с однополигональными спрайтами и частицами как с физическими объектами, но для игр обычно используют заранее записанные анимированные ассеты, меняя лишь их текстуру (внешний вид), размер и направление. Однако для красивого кадра VFX и физическую симуляцию совмещают. В играх это делается просто — ставится в одно место и маркер взрыва, и маркер источника частиц. В фильмах и синематиках используют более сложные системы, сочетающие частицы с физикой, вектор расширения (взрыва) и привязанные к частицам визуальные эффекты. Там мы получаем обтекающий препятствия огонь и дым. (Niagara system)

Физика давления, по-простому, надувательство (inflation или tension) — физика, изображающая действие внутреннего или внешнего давления на меш. Это специфическая физика, которую используют на замкнутых объектах (без дыр и швов), как правило, с симуляцией ткани. В основном ее применяют для создания различных элементов мебели, например, надувают подушки, пуфики, диваны и игрушки, хотя для создания “дутых” пуховиков тоже подходит. 

В Blender 3D симуляция давления вынесена под симуляцию ткани

В Blender 3D симуляция давления вынесена под симуляцию ткани

Для придания реалистичности создают якорные точки (pin groups), на которые не действует давление, и повышают плотность вершин. Чем выше плотность, тем естественнее натяжение поверхности. Силу давления и направление можно регулировать, а полученный результат “запечь” после симуляции, чтобы сохранить новую форму и снизить нагрузку за счет вычисления давления.

3D для каждого: Как игры врут про физику — и почему это сложнее, чем кажется - 15

Колебание (joint, wiggle, jiggle) — симуляция колебания отдельных частей. Как правило, симуляцию качания используют в связке с костной анимацией, привязывая к основанию кости. Джоинты вставляют в хвосты и уши животных, пряди волос, плюмажи и детали одежды. Последнее активно используется в играх, где технически почти невозможно вставить реал-тайм симуляцию ткани на основе вершин (об этом позже). Для этого в плащи, юбки и волосы ставят длинные цепочки костей. Чем более плавное влияние и чем больше костей, тем лучше джоинты имитируют поведение ткани. В сочетании с капсульной физикой, контролирующей столкновение поверхностей классической коллизии и снабженных джоинтами и капсулами моделей, можно добиться интересных и экономичных результатов. Да, волосы, юбки и грудь у моделей в играх использует обычно эту физику.

3D для каждого: Как игры врут про физику — и почему это сложнее, чем кажется - 16

Взаимодействия

Физика столкновения (collision) отвечает, как это ни странно, за столкновение объектов и частиц. Вернее, за столкновение вершин в объекте или меше объекта с другими вершинами этого же объекта или вершинами других объектов. Ребра полигонов выступают в роли каркаса, если модель “жёсткая” или в виде нитей, на которые нанизаны бусины вершин. Специфическая форма коллизии отвечает за деформацию одного объекта другим.

В играх к моделям с физикой столкновения и хитбоксами добавляют специфические реакции. Например, когда дракон на полном ходу врезается в препятствие, он не только останавливает движение: специальный скрипт запускает анимацию оглушения, накладывает ограничение на скорость на несколько секунд и проигрывает жалобный рев. Ну и маленький урон тоже получает.

В играх к моделям с физикой столкновения и хитбоксами добавляют специфические реакции. Например, когда дракон на полном ходу врезается в препятствие, он не только останавливает движение: специальный скрипт запускает анимацию оглушения, накладывает ограничение на скорость на несколько секунд и проигрывает жалобный рев. Ну и маленький урон тоже получает.

Капсульная физика или физика контрольных объектов (capsule physics, hitboxes)не все игровые движки могли использовать в расчетах массив вершин объектов, поэтому долгое время поверхности, например, пол и стены в играх, снабжали дополнительными маркерами физики, обычно реализованными в виде невидимых (не отрендеренных) примитивов — кубов, прямоугольников, сфер и капсул. Сейчас капсульную физику используют в качестве дополнительного контроля физики в виде невидимых стен, суппортов в платформинге, рэгдолла и регистратора попадания (хитбокс). Суппорты невидимые объекты на краях полок, они не дают вашему персонажу соскользнуть, когда вы прыгаете или стоите на краю полочек (по крайней мере, там, где это не предусмотрено геймплеем). Рэгдоллимитация мешка с песком, в который превращается персонаж после отключения костной анимации, об этом ниже.

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

3D для каждого: Как игры врут про физику — и почему это сложнее, чем кажется - 18

Тряпичная кукла (ragdoll)имитация поведения сочлененных объектов, как бусины на нитке или как тряпичной или БЖД-куклы со слабыми шарнирами. Может использоваться как самостоятельно, имитируя поведение падающего мешка с шариками, так и в совокупности с костной анимацией (например, для человеческого тела или андроида). Во втором случае в роли шарниров используются сочленения костей скелета. 

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

Например, общий скелет анимации гуманоидных рас (людей, эльфов, орков), общий скелет волков и собак, общий скелет нескольких видов медведей или драконов и т. д. 

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

Интересный факт, открытый фанатами Elden Ring — во время прыжка часть капсульной коллизии персонажа отключается из симуляции столкновения и регистрации попадания (зеленая). Это было сделано для избегания нижних атак, взрывов, магмы, а также для преодоления препятствий (чтобы персонаж не зацепился мизинчиком за полку). Верхняя часть тела сохраняет регистрацию попаданий (синяя). Если руки опущены, безопасная зона отключенной регистрации урона кончается на уровне промежности, но поднятые вверх руки с двуручным оружием увеличивают окно безопасности.

Интересный факт, открытый фанатами Elden Ring — во время прыжка часть капсульной коллизии персонажа отключается из симуляции столкновения и регистрации попадания (зеленая). Это было сделано для избегания нижних атак, взрывов, магмы, а также для преодоления препятствий (чтобы персонаж не зацепился мизинчиком за полку). Верхняя часть тела сохраняет регистрацию попаданий (синяя). Если руки опущены, безопасная зона отключенной регистрации урона кончается на уровне промежности, но поднятые вверх руки с двуручным оружием увеличивают окно безопасности.

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

Кроме того, хитбоксы играют важную роль в платформинге. Специальные системы регистрации записывают, когда последний раз у персонажа под ногами была твердая земля или устойчивая полка, и заносят это положение в память. Для чего? В первую очередь, для того, чтобы корректно сохранить игру в случае внезапного вылета. Иначе игрок попадет в петлю, когда при входе в игру он летит в пропасть и умирает, а потом снова летит в пропасть. Во вторую, для возможности отката и переигровки там, где это задумано. В Hollow Knight: Silksong пока у главной героини достаточно жизни, она возрождается после падения на шипы. Возрождение происходит на последней устойчивой полке. Но иногда достаточно коснуться края следующей горизонтальной платформы для регистрации нового состояния, чем пользуются спидранеры (те, кто проходит игры на скорость ради рекорда).

Коллизии и хитбоксы в Hollow Knight: Silksong. Оранжевый — хитбокс Хорнет, зеленые прямоугольники — физика поверхности, на которую можно встать или зацепиться, зеленые круги — точки для отталкивания оружием, синие — моментальный урон с возрождением на последней твердой полке.

Коллизии и хитбоксы в Hollow Knight: Silksong. Оранжевый — хитбокс Хорнет, зеленые прямоугольники — физика поверхности, на которую можно встать или зацепиться, зеленые круги — точки для отталкивания оружием, синие — моментальный урон с возрождением на последней твердой полке.
Особенности игровой коллизии — выталкивание.

Думаю, хитрость со стулом давно известна любителям поиграть немножко против правил. Если коротко, совмещение коллизий объектов в некоторых случаях приводит к чудесам, позволяя выполнять трюки с полетом в стратосферу, выходом в out of bounds (за пределы предусмотренного пространства) и телепортацией к главному боссу. Это происходит потому, что коллизия “сопротивляется” при попытке засунуть один объект с коллизией в другой.

Ящик пересекся с землей менее, чем на миллиметр, однако коллизия в начале симуляции выкинула его так, что он еще минуту скакал по сцене

Ящик пересекся с землей менее, чем на миллиметр, однако коллизия в начале симуляции выкинула его так, что он еще минуту скакал по сцене

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

Без отскока 

Без отскока 
Белые шарики имеют высокий коэффициент отскока, красный низкий, остальные не имеют

Белые шарики имеют высокий коэффициент отскока, красный низкий, остальные не имеют

Физика твердого тела (solid body)симулирует поведение твердотельного объекта. Все его грани — жёсткий каркас, словно из стальной арматуры, а вершины не покидают своего положения относительно центра масс и общей конфигурации. Такое тело может падать под действием гравитации вращаться, катиться, но не может деформироваться (если не применить соответствующий модификатор). 

Набор из Solid body. Чтобы все работало корректно, твердым телом должен быть и ящик

Набор из Solid body. Чтобы все работало корректно, твердым телом должен быть и ящик

Физика мягкого тела (soft body)изображает поведение всевозможных нежестких объектов, включая резину, желе, упругий пластик, а также элементов живых объектов (кожи, мышц, жира). Как правило, мягкому телу можно задать конкретное значение упругости, жесткости и растяжения ребер (будет ли деформация сохранять расстояние между вершинами или объект может полностью обтекать препятствие, растягиваясь в кляксу). 

Soft body с высокой свободой деформации и низкой упругостью. Чем больше полигонов (подразбиений), тем “естественнее” симуляция желе

Soft body с высокой свободой деформации и низкой упругостью. Чем больше полигонов (подразбиений), тем “естественнее” симуляция желе

Физика ткани (Cloth)симуляция ткани, как если бы прямоугольник или куб были созданы из тряпочки. Каждая вершина в объекте изображает из себя узел, а каждое ребро — нить.

Как и в других видах симуляции, основную роль играют именно вершины, поэтому чем больше плотность вершин, тем более реалистично ведет себя ткань.

Причем вершин должно быть много не только у ткани, но и у объекта, с которым ткань взаимодействует.

Есть даже софт, который специализируется на создании и симуляции ткани через выкройки и столкновения вершин, например, Marvelous designer. Если вам нужны складки и реалистичные швы, их можно получить в дизайнере, запечь и экспортировать как статичный объект для рендера. Также физику ткани используют в связке с физикой давления (надутием) и физикой гравитации.

В некоторых случаях физику ткани используют для симуляции поведения травы, листвы, плавников и волос, когда нужна разовая симуляция для синематиков или красивого рендера. Реалистичное поведение ткани в играх почти не используется, вместо этого делают костную физику и предзапеченные деформации.

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

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

Жидкости (fluid mode)показывает поведение различных жидкостей путем симуляции столкновения частиц, на близком расстоянии соединенных общей поверхностью. Чем мельче частицы, чем выше скорость и чем более упругое столкновение, тем более текучая будет жидкость. Крупные медленные частицы изображают гели или органическую жижу, мелкие быстрые — воду или спирт. В играх реалистичную жидкость используют редко, вместо этого вставляя маркеры VFX брызг воды, реагирующих на капсулы и коллизию персонажа, а волны на поверхности либо предзаписывают, либо применяют шейдеры с анимацией.

Но про жидкости подробно как-нибудь в другой раз.

Итого

Мир 3D-визуализации огромен. Рядовой игрок даже не представляет, как сложно на деле сложно устроена его любимая стрелялка или симулятор повара. Текстуры, свет и анимации — далеко не самое сложное, что упаковано в архив и добавлено в вашу библиотеку. За простыми действиями, такими как ходьба, подбор предметов, прыжок и падение, стоят тысячи часов работы математиков и программистов, которые когда-то изобрели физическую симуляцию, и сотни часов геймдизайнеров, ее внедривших и настроивших.

Надеюсь, что сегодня вы узнали немного больше о мире, с которым соприкасаетесь ежедневно.

Всего хорошего и не болейте!


НЛО прилетело и оставило здесь промокод для читателей нашего блога:— 15% на заказ любого VDS (кроме тарифа Прогрев) — HABRFIRSTVDS

Автор: phanerostroi_evidence

Источник

Rambler's Top100