OpenGL алгоритм реального дрожания камеры - PullRequest
1 голос
/ 03 февраля 2012

Я бы хотел, чтобы моя камера дрожала в opengl

мой старый алгоритм:

setCamPosXYZ(x+randx,y+randy,z+randz);

но это не самый лучший. Что является лучшим решением, дрожание камеры в реальном мире?

Ответы [ 3 ]

4 голосов
/ 03 февраля 2012

Я нашел функцию sin с высокой частотой, и постепенно уменьшающаяся амплитуда выглядит очень убедительно.Если вы хотите, чтобы он выглядел более случайным, вы можете использовать разные частоты для каждого направления, и он будет подпрыгивать более случайно.Функция греха также имеет физический смысл, потому что если вы думаете, что камера установлена ​​на очень жесткой пружине с некоторым демпфированием, то она будет колебаться, как кривая демпфирования.

1 голос
/ 03 февраля 2012

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

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

Кроме того, вы должны добавить небольшое вращение камеры вместе с движением.

1 голос
/ 03 февраля 2012

Генерация x + randx, y + randy, z + randz а затем плавно анимировать (интерполяция лайнера) между существующим положением камеры и x + randx, y + randy, z + randz для плавного встряхивания.

Чтобы анимировать плавно установить ваш новый х на каждом шаге по времени к синцитиальному + k (randx)

Как только вы достигнете случайной точки встряхивания, создайте новую случайную точку и снова оживите с использованием линейной интерполяции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...