Малювання частинок у вигляді гладкої краплі


12

Я новачок у розробці ігор / графіки і граю з частинками (в 2D). Я хочу намалювати частинки близько один до одного, як крапля, як рідина / вода. Я не хочу малювати великі кола, що перекриваються, оскільки плівка не буде гладкою (і не надто великою). Я не знаю фізики, але я припускаю, що я хочу щось схоже на поверхневий натяг.

Я не зміг знайти нічого в stackexchange або в Google (можливо, я не знаю правильних ключових слів?). Поки що я знайшов два можливі рішення, але не можу знайти конкретну інформацію про алгоритми.

Один з них - обчислити увігнутий корпус частинок, які я вважаю крапкою. Я можу обчислити крапку, створивши клас еквівалентності (за відношенням "близько один до одного"). Як не дивно, мені не вдалося знайти жодного алгоритму, який би пояснював, як обчислити увігнутий корпус. Багато постів (і серед stackexchange) посилань на бібліотеки або комерційні продукти, які роблять це (мені потрібні бібліотеки для роботи в C #), але ніколи не існує жодного алгоритму. Також у цьому рішенні може виникнути проблема з колом частинок, який би не виявив порожній простір посередині.

Під час дослідження увігнутого корпусу я натрапив на щось, що називається альфа-формою. Яке, здається, саме те, що я хочу зробити, однак так само, як і увігнутого корпусу, я не знайшла жодного джерела, яке б пояснило, як вони насправді працюють. Я знайшов деякі презентаційні матеріали, але недостатньо для продовження. Це як великий секрет, який знають усі, крім мене: - /

Після обчислення увігнутої форми корпусу або альфа, я хочу зробити його кривою Безьє, щоб зробити його гладким і приємним.

Хоча я вважаю свій підхід трохи надто складним, можливо, я намагаюся вирішити це неправильно? Якщо ви можете запропонувати будь-яке інше рішення моєї проблеми, або пояснити, які мені бракують, я був би дуже радий і вдячний :-)

Дякую.



@BlueRaja Дякуємо за ваш коментар Хоча я вже знайшов цю посаду, але звільнив її, тому що відповіді або посилаються на документи, які безпосередньо не вирішують мою проблему, але їхні посилання можуть бути патентом, який я не можу відкрито використовувати (я думаю, я не добрий з бюрократією) (Я взагалі навіть не знайшов посилання для завантаження).
Nömmik

1
Термін дії патенту на "кубиків, що рухаються" закінчився в 2005 році, більшість двомірних прикладів набагато старіші, і саме тому ви, можливо, бачили, як вони попереджають вас про їх використання на старих веб-сторінках.
Патрік Х'юз

1
Ось стаття про gamedev, яка входить як у метаболи, так і в ізоповерхні, з деякими зразками, щоб зробити ідеї зрозумілими: посилання
Патрік Хьюз

Дякую, що просвітили мене про метаболи, вони, здається, роблять те, що я хочу :-)
Nömmik

Відповіді:


8

Ключове слово, яке вам може знадобитися, - "Metaballs", і варіюється від складного зразка NVidia GPU Gems аж до демо-версій, розроблених лише для того, щоб виглядати добре і швидко працювати.


Дійсно, я не знав ключового слова :-) Я детальніше ознайомлюсь із ним, і якщо воно здасться тим, що мені потрібно, тоді я прийму вашу відповідь. Дякую!
Nömmik

1
+1 для мене думав, що це "фрикадельки", перш ніж я прочитав його вдруге.
Джеймс

2
Чи можете ви додати трохи детальніше до цієї відповіді? +1, якщо ви робите.
AttackingHobo

@James Я думаю, що кожен робить цю помилку вперше, коли бачить слово!
Джефф

1

Щоб перетворити групу частинок у сітку для візуалізації, стилю метаболів, ви можете подивитися алгоритм маршируючих кубів , який генерує полігональну сітку з даних вокселів. Є демонстраційна демонстрація, яка має чудовий приклад цього, з усім, що генерується на GPU: numb res .


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.