游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1597|回复: 3

模型旋转的问题

[复制链接]

16

主题

66

帖子

66

积分

注册会员

Rank: 2

积分
66
发表于 2008-8-11 03:28:00 | 显示全部楼层 |阅读模式
一个很简单的问题,可小弟就是不会,智力水平有限,所以上来请教.
我画了一个简单的模型A,另有一个设置了旋转矩阵的函数:
void M1()
{
  D3DXMATRIX m1;
  D3DXMatrixRotationY(&m1,angle);
  SetTransform(D3DTS_WORLD,&m1);
}
在Render过程中,首先调用M1(),然后开始绘制模型A,运行调试很成功,模型A能绕Y轴旋转,可当我在Render中继续绘制模型B时,结果是模型A和模型B一起旋转了,就是整个场景的物体都在转,我希望只有应用了m1旋转矩阵的模型A才会旋转,而不想模型B也跟着旋转,请问思路是怎样的? 最有有点代码(或者伪代码)参考参考,多谢!

14

主题

43

帖子

84

积分

注册会员

Rank: 2

积分
84
发表于 2008-8-11 09:42:00 | 显示全部楼层

Re:模型旋转的问题

你好,我也是新手,我随便说说,仅供参考。

你设置了世界矩阵,所以之后被渲染的所有对象都被此矩阵所作用。

所以如果你想旋转A而不旋转B,你可以在调用M1()之前先渲染B,然后再M1(),A.
或者是调用M1()->A之后再生成一个世界矩阵比如:
void M2()
{
  D3DXMATRIX m2;
  D3DXMatrixIdentity(&2);         //
  SetTransform(D3DTS_WORLD,&m2);
}
之后再渲染B即可。

4

主题

220

帖子

220

积分

中级会员

Rank: 3Rank: 3

积分
220
发表于 2008-8-11 09:45:00 | 显示全部楼层

Re: 模型旋转的问题

呵呵,在调用了你的M1函数后d3d里的世界矩阵就都是m1了,在后面画的物体当然都要旋转.两种解决方法,
1. 在模型A前画其他模型.
2. 在模型A后画物体的话,设其他物体自己的世界矩阵,比如:单位阵

16

主题

66

帖子

66

积分

注册会员

Rank: 2

积分
66
 楼主| 发表于 2008-8-11 12:59:00 | 显示全部楼层

Re:模型旋转的问题

好的,多谢两位的帮忙.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-21 16:11

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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