KEngine KCamera

在写camera之前要确定camera要实现那些功能。camera的基本功能有:forward,back,left,right,up,down,turn left,turn rifht,turn up, turn down.这些功能都可以通过glLookAt函数来实现,glLookAt的前三个参数表示视点的位置,随后的三个参数表示要看的位置,最后三个参数表示哪个轴是表示向上。

文中是另外一种实现方式,更原始。类维护了两个表示视点角度的变量和一个表示前进速度的变量,这三个变量的组合可以表示camera在场景中的位移。x = speed * sin(-angle[1]);z = speed * cos(angle[1]);文中的角度显然是以camera坐标系中心为中心而设定,以z轴正方向为角度原点,以x轴负方向为角度旋转方向。angle[0]表示的是绕x轴旋转的角度,angle[1]表示绕y轴旋转的角度。其实无论是从x轴正方向为角度原点,是沿向z轴正方向还是负方向旋转都只是不同的角度的表示方式而已,重要的是能够通过角度得到camera现在的坐标。

文中在camera up或down得时候只是改变了camera的y坐标。

文中作者改变的是整个模型的旋转角度,整个模型的世界坐标,分别通过:

glRotatef( m_pfAngle[0], 1, 0, 0 );  
glRotatef( m_pfAngle[1], 0, 1, 0 );  
  
glTranslatef( -m_pfPrevPosition[0], -m_pfPrevPosition[1], -m_pfPrevPosition[2] ); 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值