第11章 创建第一人称摄像机

本文介绍了3D游戏中摄像机的重要组成部分——投影矩阵和视矩阵,并详细解释了如何通过重建视矩阵来实现摄像机的动态移动。此外还讨论了如何在第一人称摄像机中进行侧移和旋转操作。

  3D游戏中最重要的东西之一就是摄像机。

移动3D相机的组件

  之前创建了摄像机的GameComponent组件,它能使你看到三角形和飞船模型。

  摄像机由两个不同的矩阵组成:投影矩阵和视矩阵。投影矩阵定义视椎体,视矩阵定义摄像机在世界里呆的位置。

  与投影矩阵不同,当摄像机移动时它不必改变,视矩阵会不断地改变以反映摄像机新的旋转和位置。

  之前的Camera代码中设计的摄像机是静态的。如果要创建动态的摄像机,你要修改view矩阵。

  实际上,不是修改view矩阵,而是你会在每一帧中重建这个矩阵。

  注意到cameraDirection变量与Matrix.CreateLookAt方法中第二个参数target不同。target是摄像机正看着的点,而cameraDirection是一个相对的方向,要得到target,需要把cameraPosition与cameraDirection相加。

在第一人称摄像机中移动

  侧移(strafing):已经知道摄像机的朝向和Up向量,用叉积得到摄像机的侧向量。

  cameraPosition += Vector3.Cross(cameraUp, cameraDirection )* speed;

在第一人称摄像机中旋转

    yaw、pitch、roll并不与绕X、Y、Z对应。对于你的摄像机,一个偏航(yaw)不是绕Y旋转,而是绕着摄像机的Up向量。类似地,横滚(roll)绕摄像机的朝向旋转。俯仰(pitch)绕侧向量旋转。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值