Як повторити ефект деформації з воєн "Геометрія"?


12

Я намагаюся досягти ефекту деформації, який ви бачите в таких іграх, як Geometry Wars .

Знімок війн геометрії, включаючи деформацію основи

Може хтось допоможе пояснити, що тут відбувається? Я відчуваю, що вісь z сітки якимось чином маніпулює програмістом, але чи може бути якесь відоме математичне рівняння, щоб дійсно отримати правильний ефект викривлення?

Редагувати: Щоб бути більш конкретним, я маю на увазі викривлення сітки. Як все виглядає потягнуто до негативної осі z, а потім відскакує.


1
Ви маєте на увазі згинання фону? Оскільки це геометричні війни , на екрані скріншоту багато хаосу, який змусив мене почекати голову на деякий час, щоб спробувати сказати, на що ви маєте на увазі.
Примітка про благодать

Так вигин тла.
Joey Green

Відповіді:


12

10-хвилинна реалізація простої весняної системи (або так він говорить у своєму блозі ;)). Система може обробляти декілька деформацій та інших речей, що спотворюють сітку.

Оновлено, щоб додати незначну детальну інформацію про доповнення:

Ще кілька деталей. З інтерв'ю, яке раніше розміщувалося на веб-сайті Bizarre Creations (цей сайт зник через закриття компанії), виникло питання:

З: Однією з найяскравіших нових графічних особливостей у грі є ігрова зона «гравітаційна сітка». Як ви зробили це виглядати так круто; чи справді кожен предмет у грі має власну гравітацію? Сама сітка складається з 60 000 очок, кожен з яких прикладає малу силу на свого сусіда. Саме моделювання сидить на межі стійкості, і саме це змушує його так сильно розгойдуватися, коли один із ігрових об’єктів дає йому невеликий поштовх! Лише кілька типів об'єкта впливають на сітку. Оскільки обчислювальна система досить дорога для обчислення, вона фактично працює на другому ядрі разом із аудіосистемою (перше ядро ​​присвячене геймплею та частинкам, третє використовується для надання аудіо).


1

Я не знаю, чи є "правильний" спосіб це зробити, але це, мабуть, лише естетично приємна лінійна трансформація, застосована з випаданням, обчисленою від відстані до точки.

Отже, для будь-якого елемента, з яким ви працюєте, ви:

  • знайти відстань до центру основи (d)
  • обчислити 1 - d / максимальну відстань ефекту, який ти хотів би (i для інтенсивності)
  • затискати, що на [0-1]
  • перетворити елемент на lerp (тотожність, перетворення, i)

Iirc, Geometry wars застосували це як спотворюючу основу до деяких елементів, тоді як інші елементи, як частинки, просто впливали на "силу", не перекручуючись. Ви можете застосувати спотворення у вершинній шейдері, припускаючи, що у вас достатньо вершин для плавного вибору ефекту. Крім того, ви можете спочатку викласти все, що потребує впливу, на буфер поза екраном, а потім вивести результати на добре тессельований квадратик, до якого ви застосуєте спотворення, перш ніж додавати всі не спотворені елементи зверху.

Що стосується трансформації, масштабування надасть вам смоктання на вигляд. Якщо я добре пам’ятаю, також відбувалося певне скручування, яке було б просто невеликим обертанням.

Ви можете отримати фантазії та вигадливіші з розрахунками коефіцієнта інтенсивності, щоб отримати ефективніші ефекти. Ви можете, наприклад, обчислити кут (a), що елемент відносно центру, і коефіцієнт, який є дюйма. Візьміть cos (a) і ви можете зробити радіальні хвилі в результаті. Що ви хочете зробити, це налаштувати себе з необхідним кодом лісу, а потім вирушайте в місто, експериментуючи з різними комбінаціями факторів.


Хороший спасибі, я спробую це. Чи алгоритм, який ви описуєте, в основному ефект пружини?
Joey Green

Ні, я не описав, як це змінюватиметься з часом, тож не весна. Я щойно описав, як отримати форму викривлення, яку ви шукаєте. Анімація в стилі GW вимагає додати ще один фактор, модулюючи i з часом. Спробуйте реалізувати все це, і вам повинно стати зрозуміло, що ви можете розгорнути масштаб i, щоб розслабитися або посилити свій ефект. Пропустіть синусоїду через це модулююче значення або відмовте її як 1D пружина, і ви ефективно відмовтеся від усієї справи. Знову ж таки, як тільки у вас буде запрягатися з купою змінних, що пливуть навколо, експеримент стане вашим другом.
Кріс Субаджо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.