Деформирующие поверхности

10

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

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

Это сложно объяснить, поэтому я проиллюстрировал то, о чем я говорю, вот пример со сферой:

иллюстрация деформирующая поверхность игры

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

Я программирую на C / C ++ с OpenGL, но любые советы в правильном направлении будут в порядке.

Constantin
источник

Ответы:

5

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

Таким образом, чтобы сделать отступ под персонажем, выберите точку, на которой он стоит, и сместите ее вниз.

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

Простой пример отступа плоскости с использованием функций sin / cos falloff можно найти на сайте www.lighthouse3d.com/opengl/terrain/.

Exilyth
источник
1
Я получаю 403 запрещенных ошибок по ссылке.
Джордж Дакетт
1
Ну ... тогда все в порядке (также непосредственно к соответствующему разделу): web.archive.org/web/20100927141645/http://lighthouse3d.com/…
Exilyth