OpenGL相机控制
OpenGL相机控制简介
在上一课中,我们研究了如何将相机安装在 3D 空间的任意位置。下一步是允许用户管理它。控制将是免费的 - 用户可以向四面八方移动它。摄像机将由两个输入设备控制:键盘将更改位置,鼠标将更改浏览方向。这与第一人称射击游戏提供的东西非常相似。本课将重点放在键盘上,下一课将放在鼠标上。
我们将以熟悉的方式添加对 4 个键的支持。请记住,我们的相机由其位置、方向向量和顶部向量决定。当我们使用键盘时,只有位置会改变。我们不能倾斜或旋转相机,这意味着向量向上和方向将保持不低。
要使用键盘,我们需要另一个 GLUT’a API:glutSpecialFunc()。如果按下"特殊"键,此功能将记录我们的呼叫。特殊键组包括:F{1…12}、箭头和页面/页面向下/主页/结束/插入。如果您需要常规按钮(符号和数字),请使用 glutKeyboardFunc()。
源代码剖析
摄像机功能封装在摄像机类中。此类存储摄像机设置,并可以根据它接收的运动事件更改它们。摄像机属性将由管道类执行,管道类将从中创建转换矩阵。
class Camera