游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1901|回复: 2

[求助]还是矩阵问题

[复制链接]

227

主题

1793

帖子

1866

积分

金牌会员

Rank: 6Rank: 6

积分
1866
发表于 2008-8-21 10:51:00 | 显示全部楼层 |阅读模式
我和几个朋友正在尝试写一个飞行模拟游戏,是根据nehe的45课源代码修改的,现在遇到一个问题,如何实现场景内某物体以自身为基准来旋转。
我们现在尝试的方法是这样

float MaTemp[16] = {1.0, 0.0, 0.0,0.0,  0.0, 1.0, 0.0, 0.0,  0.0, 0.0, 1.0, 0.0,  0.0, 0.0, 0.0, 1.0};

void Draw (void)
{
..................//movecode
        glMultMatrixf(MaTemp);
.................//Drawland
.................
        glGetFloatv(GL_MODELVIEW_MATRIX,MaTemp);
       
}

用这个方法确实能够实现目的,但是又出现了一个新问题,如何才能获取视点相对场景的位置和方向。

这是源代码:
OBJMAPs.rar

29

主题

157

帖子

163

积分

注册会员

Rank: 2

积分
163
发表于 2008-8-22 20:58:00 | 显示全部楼层

Re:[求助]还是矩阵问题

比如,你已有一个旋转矩阵M,已知视点位置为posX、posY、posZ和视点方向的向量dirX、dirY、dirZ。
将dirX,dirY,dirZ乘上旋转矩阵M,即得到旋转后的视点方向,而旋转变换不会影响视点的位置。

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2008-8-24 16:07:00 | 显示全部楼层

Re:[求助]还是矩阵问题

我用的是一本书上的做法--用一个pos向量代表物体位置,另外再用2个向量表示物体自身的Z,Y轴。
绕自身旋转时,只需要变换物体自身的Z,Y轴这两个向量即可,不涉及位置问题;
而移动的时候只需要修改pos向量而不涉及方向。
(每frame使用这些向量可简单填写出世界变换矩阵,也可以填写出观察矩阵)
这种简单的方法可以进行任何物体或摄影机的位置控制。所以LZ的这个问题我不觉得多难~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-21 13:15

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表