游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1915|回复: 4

关于在D3D中得模型旋转

[复制链接]

12

主题

24

帖子

26

积分

注册会员

Rank: 2

积分
26
发表于 2005-3-25 00:17:00 | 显示全部楼层 |阅读模式
用D3DXmatrixRotation..()可以让模型绕着对应得轴旋转(自转)
那么,当模型移动过后,我希望模型能绕着新的轴自转,改怎么做呢?
也就是说,假设模型的中心和世界中心重合,绕着世界的y轴旋转。
然后,模型移动了,模型的中心不再和世界中心重合。但仍然绕着y轴旋转。
[em6]

7

主题

54

帖子

54

积分

注册会员

Rank: 2

积分
54
发表于 2005-3-25 00:46:00 | 显示全部楼层

Re:关于在D3D中得模型旋转

g_pApp.GetDevice()->GetTransform(D3DTS_WORLD,&matWorld); //得到原来的World矩阵
matOrig=matWorld; //保存原来的矩阵
D3DXMatrixRotationYawPitchRoll(&matTrans, rx, ry, rz);
//可以得到一个物体的转置矩阵
D3DXMatrixMultiply(&matWorld, &matTrans, &matWorld);
//得到新的物体旋转的矩阵
g_pApp.GetDevice()->SetTransform(D3DTS_WORLD,&matWorld); //设定旋转矩阵

渲染物体

g_pApp.GetDevice()->SetTransform(D3DTS_WORLD,&matOrig); //设定回原矩阵

只要改变ry,让他顺时针或者逆时针变化的。
ty是弧度.

1

主题

48

帖子

48

积分

注册会员

Rank: 2

积分
48
发表于 2005-3-27 20:42:00 | 显示全部楼层

Re:关于在D3D中得模型旋转

模型相对世界原点移动的矩阵m1,模型旋转矩阵m2,最终变形矩阵为m = m2 * m1(相乘顺序不能颠倒,相当于先在原点旋转再移动出去)。

4

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2005-3-27 23:16:00 | 显示全部楼层

Re:关于在D3D中得模型旋转

先旋转再移动

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2005-3-28 08:39:00 | 显示全部楼层

Re:关于在D3D中得模型旋转

D3DXMatrixRotationQuaternion 用这个就好了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-25 00:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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