游戏开发论坛

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

世界矩阵的难题!

[复制链接]

29

主题

56

帖子

56

积分

注册会员

Rank: 2

积分
56
发表于 2007-10-19 11:46:00 | 显示全部楼层 |阅读模式
程序的目的是缩小物体后可以利用键盘输入来平移物体。程序中通过键盘的A,S,D,W,可以将世界矩阵前后左右平移,之后用了D3DXMatrixScaling(),将物体缩小到0.5倍,运行时,A.S.D.W,四个键就不管用了,不知怎样才能缩小物体之后,还可以平移物体,附程序代码:

                static float angle1  = 0.0f;
                static float height1 = 0.0f;
       
                if( ::GetAsyncKeyState('A')  & 0x8000f )
                        angle1 -= 5.0f * timeDelta;

                if( ::GetAsyncKeyState('D') & 0x8000f )
                        angle1 += 5.0f * timeDelta;

                if( ::GetAsyncKeyState('W')  & 0x8000f)
                        height1 += 5.0f * timeDelta;

                if( ::GetAsyncKeyState('S') & 0x8000f)
                        height1 -= 5.0f * timeDelta;

            D3DXMatrixTranslation(&ObjWorldMatrices[0], angle1, 0, height1);
       D3DXMatrixScaling(&ObjWorldMatrices[0],  0.2f, 0.2f,  0.2f);
        Device->SetTransform(D3DTS_WORLD, &ObjWorldMatrices[0]);

36

主题

109

帖子

111

积分

注册会员

Rank: 2

积分
111
发表于 2007-10-19 12:06:00 | 显示全部楼层

Re:世界矩阵的难题!

D3DXMatrixTranslation(&ObjWorldMatrices[0], angle1, 0, height1);
       D3DXMatrixScaling(&ObjWorldMatrices[0],  0.2f, 0.2f,  0.2f);
        Device->SetTransform(D3DTS_WORLD, &ObjWorldMatrices[0]);
你应该把两个矩阵相乘,你上面的写法是只用到了一个缩放矩阵,压根平移矩阵就没有起作用

3

主题

17

帖子

21

积分

注册会员

Rank: 2

积分
21
发表于 2007-10-19 12:26:00 | 显示全部楼层

Re:世界矩阵的难题!

    D3DXMatrixTranslation(&ObjWorldMatrices[0], angle1, 0, height1);
D3DXMATRIX mat;
D3DXMatrixIdendity(&mat);
       D3DXMatrixScaling(&mat,  0.2f, 0.2f,  0.2f);
ObjWorldMatrices[0]=mat*ObjWorldMatrices[0];
        Device->SetTransform(D3DTS_WORLD, &ObjWorldMatrices[0]);

6

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
QQ
发表于 2007-10-19 12:39:00 | 显示全部楼层

Re:世界矩阵的难题!

楼上的两位正解.
最后的变换矩阵=平移矩阵*缩放矩阵.

29

主题

56

帖子

56

积分

注册会员

Rank: 2

积分
56
 楼主| 发表于 2007-10-19 14:46:00 | 显示全部楼层

Re:世界矩阵的难题!

多谢各位!这是小弟第一次发帖,就被顺利解决,很感动!

0

主题

769

帖子

1052

积分

金牌会员

Rank: 6Rank: 6

积分
1052
发表于 2007-10-19 16:18:00 | 显示全部楼层

Re: Re:世界矩阵的难题!

superoil: Re:世界矩阵的难题!

楼上的两位正解.
最后的变换矩阵=平移矩阵*缩放矩阵.

大哥,别把人家搞糊了
是放缩*旋转*平移的顺序 [em23]

6

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
QQ
发表于 2007-10-19 19:05:00 | 显示全部楼层

Re:世界矩阵的难题!

真是羞愧.我只想到告诉他怎样得到最后的矩阵,忘记了矩阵相乘的顺序.
矩阵的乘法不支持交换率.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-20 04:02

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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