Что вы думаете о следующем.
- вычислите
cam_pos
, cam_dest
, cam_up
как обычно.
- вычислить
cam_right
как крест (cam_pos
, cam_up
)
- создать поплавок
camera_time
(при ходьбе camera_time += delta_time;
)
- вычислить
offset_factor = sin(camera_time);
Затем вы можете вызвать gluLookAt
или аналогичную функцию следующим образом.
gluLookAt(cam_pos + cam_right * offset_factor, cam_des + cam_right * offset_factort, cam_up)
Это заставит камеру поворачиваться справа налево. Вы можете добавить то же самое для вектора cam_up
с некоторыми изменениями.