1. 准备工作
获取视点 eye
获取观察方向点 look
观察方向为 dir = look - eye
其中eye觉定走路效果,而dir决定了向四周观察的效果。
至于这两个参数如何取得,取决于你的程序与用户交互的方式。
2 正交化观察向量
dir 单位化 --------------------z
上一次“向上“的向量叉乘dir,将结果单位化-------------------------x
根据斯密特方法,随便乘个不共线的就OK,但是要考虑到观察的连续性问题。
z叉乘x--------------------------y
3 构造观察矩阵
观察矩阵等于
x.x y.x z.x 0
x.y y.y z.y 0
x.z y.z z.z 0
0 0 0 1
乘以
1 0 0 -eye.x
0 1 0 -eye.y
0 0 1 -eye.z
0 0 0 1 -----注意乘法顺序
4 使用你的模型-世界变换矩阵右乘刚才得到的观察矩阵。
5 将4中的矩阵转置之后,在ModelView设置时,用glLoadMatrix设置
完成
这是教科书式的方法,效果不一定很自然,但基本上可以实现CS一类游戏的行走观察效果。
这种方式有个好处在于以基向量定义旋转,可以避免万象锁。
很简单,把glulookat放在drawglscene里的开始的位置,清屏之后lookat.
Photoshop|
Dreamweaver|
SVG|
WebGL|
Visual Studio|
PowerDesigner|
Eclipse|
Git|
Apache Ant|
Atom|
Composer|
CodeSmith|
Flex|
Gradle|
Maven|
Sublime Text3|
SVN|
Tableau|
Vim|
Chrome开发者工具|
OpenGL|
Unity|
Direct3D|
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字
上传中....