Рубрика «физическая модель»

Симуляция эрозии рельефа на основе частиц - 1

Примечание: полный исходный код проекта, а также пояснения о его использовании и чтении можно найти на Github [здесь].

Я сделал перерыв в своей работе над магистерской диссертацией, чтобы потрудиться над тем, что уже давно откладывал: улучшенной генерацией рельефа для моего проекта Territory. Простым способом её реализации является гидравлическая эрозия, поэтому её я и создал!

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

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

Результаты рендерятся при помощи урезанной версии моего движка Homebrew OpenGl Engine, который я модифицировал для рендеринга 2D-массива точек в качестве карты высот. Урезанную версию движка намного проще понять, если вас интересует изучение OpenGL на C++.
Читать полностью »

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

От создания нового проекта в Юнити до публикации бета-версии в Стиме прошло 10 месяцев. 90% времени ушло на создание, оптимизацию и вылизывание физической модели, остальное — на геймплей.

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

Сделал всё из взаимодействующих частиц: землю, здания, танки игроков, врагов, снаряды и бонусы — всё. Взаимодействия между частицами реализовал на видеокарте, поскольку для параллельных вычислений она в 50-100 раз производительней процессора.

Получившаяся из частиц материя сначала выглядела странно, и напоминала то ли жидкость, то ли газ:

image

А для игры нужно было что-то прочное, способное держать форму. Испробовав разные способы взаимодействия частиц, я нашёл, что сила Леннарда-Джонса даёт самую прочную субстанцию. Получилось что-то вроде манной каши. Для экспериментов я добавил взрывы по клику мыши.Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js