Tilemap 2D реалистичная физика жидкости

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

Terraria использует воду на основе плитки, которой я не являюсь поклонником .. Я хочу что-то более продвинутое.

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

Проблема, о которой я думаю, заключается в том, что каждый блок имеет размер 16×16, поэтому на сцене 1600×900 насчитывается около 5 тысяч плиток.

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

У кого-нибудь есть идеи по этому поводу? Язык C ++, я сомневаюсь, что это актуально.

РЕДАКТИРОВАТЬ: я думаю, что мне придется прогибаться и использовать воду на основе сетки. Я полагаю, в ретроспективе на основе частиц просто все усложняется, но для чего?

5

Решение

Ваш вопрос о плиточных жидкостях, но вы, похоже, на самом деле спрашиваете о подходе на основе частиц.

Если это так, то вам нужна «Гидродинамика сглаженных частиц», или SPH, которая является очень популярной техникой для моделирования 2D и 3D флюидов в реальном времени.

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

Вы можете визуализировать частицы в виде точек, если их у вас достаточно, или вы можете использовать их в качестве источника для получения поверхности (например, с помощью марширующих кубов, хотя в 2D я бы об этом не беспокоился).

http://en.wikipedia.org/wiki/Smoothed-particle_hydrodynamics

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

На самом деле, я думаю, что это, вероятно, лучший подход, чем попытка какого-либо подхода на основе плиток, и вы получите более интересные результаты, такие как разбрызгивание брызг, удары по краям объектов и т. Д. что-то приятное работает, я бы попробовал.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]