游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2460|回复: 9

[请教]旋转立方体的问题

[复制链接]

3

主题

12

帖子

37

积分

注册会员

Rank: 2

积分
37
发表于 2006-11-27 11:04:00 | 显示全部楼层 |阅读模式
我用DrawIndexedPrimitive在场景中画了一个立方体,立方体顶点的位置都保存在一个D3DXVECTOR3类型的数组里,现在我想让立方体绕其中心点旋转,但是我使用如下代码3DXMatrixRotationAxis(&rotMatrix,&axis,angle);
D3DXVec3TransformCoordArray(cubeVertexes ,sizeof(D3DXVECTOR3),cubeVertexes ,sizeof(D3DXVECTOR3),&rotMatrix,VertexesNum);
旋转这个立方体的顶点,它总是绕原点(0,0,0)旋转,如果立方体的中心不在原点的话,该怎么让它绕自己的中心点旋转呢?  多谢各位高手指教

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2006-11-27 11:24:00 | 显示全部楼层

Re:[请教]旋转立方体的问题

先旋转再平移

3

主题

12

帖子

37

积分

注册会员

Rank: 2

积分
37
 楼主| 发表于 2006-11-27 11:30:00 | 显示全部楼层

Re: Re:[请教]旋转立方体的问题

congy: Re:[请教]旋转立方体的问题

先旋转再平移



如果立方体在场景中不停移动的话,难道每次旋转之前先移动到原点,然后再移动到新的位置,这样有些麻烦吧

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-11-27 13:56:00 | 显示全部楼层

Re:[请教]旋转立方体的问题

模型的朝向和位置分开处理,分两个矩阵保存,渲染前再合成

3

主题

12

帖子

37

积分

注册会员

Rank: 2

积分
37
 楼主| 发表于 2006-11-27 14:24:00 | 显示全部楼层

Re: Re:[请教]旋转立方体的问题

jk20012001: Re:[请教]旋转立方体的问题

模型的朝向和位置分开处理,分两个矩阵保存,渲染前再合成


怎么分开处理能说具体点吗,旋转和平移肯定是两个距阵啊,但是都是要对顶点坐标进行变换的

3

主题

12

帖子

37

积分

注册会员

Rank: 2

积分
37
 楼主| 发表于 2006-11-28 10:44:00 | 显示全部楼层

Re:[请教]旋转立方体的问题

这里竟然没一个人解决这个问题吗,晕啊!

不过我已经在GameDev里得到解决了,看来学技术还得上国外网站.

代码如下:

//假设立方体中心点为D3DXVECTOR3 center.
D3DXVECTOR3 temp;
D3DXMatrixRotationAxis(&rotMatrix,&axis,angle);//得到旋转距阵
D3DXVec3TransformCoord(&temp,&center,&rotMatrix);//旋转中心点
for(int i=0;i<VertexesNum;i++)
{
//旋转每个顶点坐标
D3DXVec3TransformCoord(&cubeVertexes,&cubeVertexes ,&rotMatrix);
cubeVertexes-=temp;
cubeVertexes+=center;
}
//更新顶点缓冲区
..........................................

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2006-11-28 10:49:00 | 显示全部楼层

Re:[请教]旋转立方体的问题

不是没人能解决,而是象这种“世界/物体”坐标系转换的基础问题,他们都懒的回答。

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2006-11-28 11:08:00 | 显示全部楼层

Re:[请教]旋转立方体的问题

国内的技术都来源于老外,这是不争的事实。不过,我们的口号是“引进——消化——创新”

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2006-11-28 12:18:00 | 显示全部楼层

Re:[请教]旋转立方体的问题

将 matrix 分为 rotate\translation\scale 三个部分,在变更 matrix 时分别更改这3个值,在最终送入到 pipeline 时再进行合成操作: rotate*VertexPos[n]*scale+translation。

16

主题

65

帖子

75

积分

注册会员

Rank: 2

积分
75
发表于 2006-12-3 20:30:00 | 显示全部楼层

Re:[请教]旋转立方体的问题

这种问题 应该自己在百度里找基础的教程学
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 00:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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