rust第三人称视角插件_一个第三人称游戏相机的实现(基于rust语言和cgmath库)...

本文介绍如何使用rust编程语言和cgmath库来实现一个第三人称视角的游戏相机。通过详细解释如何计算相机的视线向量、旋转以及平移,展示了在角色不移动情况下,相机如何围绕玩家在一个球面上运动。核心在于利用向量旋转和平移来更新相机的位置和视角。
摘要由CSDN通过智能技术生成

我在学校时就对角色扮演类3D游戏感兴趣,毕业那会研究过第三人称视角的游戏相机的实现(基于D3D),但由于没有想到合适的计算方法,最后实现出来的程序有BUG,并且没找出原因。

最近看到git有rust写游戏的示例,于是就想再尝试解决这个问题,发现cgmath库做矩阵运算非常方便,顺便也找到一个自认为比较不错的解决办法。

第三人称游戏相机的特点是,无论相机移动或旋转,视点始终在屏幕中心的某个点(不会作图,只能先语言描述了)。即在游戏角色不移动的情况下旋转视角,相机始终是绕着游戏玩家在一个球面上运动。cgmath提供了一个计算取景矩阵的函数:

pub fnlook_at(eye: Point3,center: Point3,up: Vector3) -> Matrix4

该函数接受3个参数,eye表示眼睛的位置,即相机的位置,是3维空间的一个点,center表示视线的焦点,在游戏里可以认为是游戏玩家的位置,是3维空间的一个点,up表示相机向上的方向,是一个向量。游戏视角的旋转变化,实际上就是要计算这3个值。一般游戏视角旋转由鼠标控制,我们假设鼠标在屏幕x轴方向移动了x,y轴方向移动了y,我们来计算旋转后的取景矩阵(假设鼠标移动的距离与相机旋转的角度之间的系数为1,并且假设玩家不移动,简化问题)。

为了计算这3个参数,我首先由 center-eye 得到一个向量,即相机的视线向量sight。旋转的过程中,center点的位置是不变的,所以我们可以先对sight向量绕center点作旋转,得到新的sight方向,然后再

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值