Как добиться "эффекта флага" на OpenGL?

Нужно построить прямоугольник из triangle_strip и как-то менять край, но не пойму с какой формулой связать


Ответы (1 шт):

Автор решения: Kromster

Для начала, можно перемножить 2 эффекта: смещение вершин в сторону по синусу в зависимости от расстояния от древка, и градиент от 0 до 1 от древка к свободному краю - получите флаг тем более изогнутый, чем дальше он от древка. Далее анимируйте синус (добавляйте время к значению от которого считается синус). Далее можете добавить вторую волну с другим интервалом. Можете добавить эффект провисания вниз (так же помноженное на градиент от древка). Можете сделать смещение волнам в зависимости от высоту вершины во флаге.

То есть можно продолжать наслаивать эффекты добавляя и обогащая финальный результат. Ну и конечно, все параметры можно регулировать, а градиенты делать не линейными, а, например, x^2 или sqrt(x).

Вот что примерно можно получить:

введите сюда описание изображения

→ Ссылка