游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2133|回复: 6

关于局阵相乘的问题

[复制链接]

36

主题

109

帖子

111

积分

注册会员

Rank: 2

积分
111
发表于 2007-9-3 17:12:00 | 显示全部楼层 |阅读模式
假如R代表旋转局阵,T代表平移局阵,那么D3DXMatrixMultiply(&matWorld,&T,&R)函数代表是先旋转再平移,或者是先平移后旋转哪,小弟实验的结果是先旋转后平移,但是为什么SDK上写的是T*R而不是R*T,不解,希望大家解释下. [em7]

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2007-9-3 21:40:00 | 显示全部楼层

Re:关于局阵相乘的问题

D3DXMatrixMultiply(&matWorld,&T,&R) 是先平移后旋转
但这时的旋转是以原点为中心。你的结果是对的,但是你理解错了,不是是先旋转后平移产生的。

36

主题

109

帖子

111

积分

注册会员

Rank: 2

积分
111
 楼主| 发表于 2007-9-3 22:30:00 | 显示全部楼层

Re:关于局阵相乘的问题

哦,谢谢,我说怎么回事哪,那OPENGL中为什么glRotate(),然后glTranslate() ,结果和上面的一样哪,都是围绕某个轴转动

36

主题

109

帖子

111

积分

注册会员

Rank: 2

积分
111
 楼主| 发表于 2007-9-4 00:13:00 | 显示全部楼层

Re:关于局阵相乘的问题

我的意思是说,是不是OPENGL中任何关于局阵的操作都是和当前局阵相乘,就象我上面提到的,虽然我先用了
glRotate()函数旋转了局阵,然后再glTranslate()函数平移了局阵,但是最后OPENGL内部是用glTranslate()所产生的局阵乘以glRotate()所产生的局阵,这样就和DX中的一致了,不知道我说的是不是

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2007-9-4 13:44:00 | 显示全部楼层

Re:关于局阵相乘的问题

嗯,gl下,起作用的顺序和代码编写的顺序是反的。

36

主题

109

帖子

111

积分

注册会员

Rank: 2

积分
111
 楼主| 发表于 2007-9-4 14:42:00 | 显示全部楼层

Re:关于局阵相乘的问题

谢谢楼上,我明白了

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2007-9-5 02:35:00 | 显示全部楼层

Re:关于局阵相乘的问题

这是 matrix 的乘法规则,d3d 是左乘行向量,opengl 是右乘列向量,这样造成 matrix 的相乘顺序不同,d3d 是从左到右,opengl 是从右到左。如果希望先平移再旋转,d3d:M = T*R,opengl:M=R*T。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-18 21:56

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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