游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4688|回复: 13

怎样让物体围绕自我中心的y轴旋转 谢谢各位高手!

[复制链接]

23

主题

68

帖子

68

积分

注册会员

Rank: 2

积分
68
发表于 2006-4-10 00:12:00 | 显示全部楼层 |阅读模式
我想让物体围绕自己 中心的轴原地旋转,可是他总围绕 另外一个轴,也不是地图中间的轴,我让它边旋转边移动的时候 它的旋转半径还是不变的,可是就是 不做原地旋转!我设置的矩阵代码:
world=D3DXMATRIX(1.0f,0.0f,0.0f,0.0f,
                                 0.0f,1.0f,0.0f,0.0f,
                                 0.0f,1.0f,1.0f,0.0f,
                                 0.0f,1.0f,0.0f,0.0f);
D3DXMATRIX ok;//旋转矩阵
D3DXMatrixIdentity(&world);
       
                vright.x=world._11;
        vright.y=world._12;
        vright.z=world._13;
        vup.x=world._21;
        vup.y=world._22;
        vup.z=world._23;
        vlook.x=world._31;
        vlook.y=world._32;
        vlook.z=world._33;
        vpos.x=world._41;
        vpos.y=world._42;
                vpos.z=world._43;

D3DXVec3Normalize(&vlook,&vlook);
D3DXVec3Cross(&vright,&vup,&vlook);
D3DXVec3Normalize(&vright,&vright);
D3DXVec3Cross(&vup,&vlook,&vright);
D3DXVec3Normalize(&vup,&vup);

rolly+=0.03f;
D3DXMatrixRotationAxis(&ok,&vup,rolly);

D3DXVec3TransformCoord(&vlook,&vlook,&ok);
D3DXVec3TransformCoord(&vright,&vright,&ok);

                world._11=vright.x;
        world._12=vright.y;
        world._13=vright.z;
        world._21=vup.x;
        world._22=vup.y;
        world._23=vup.z;
        world._31=vlook.x;
        world._32=vlook.y;
        world._33=vlook.z;
        world._41=vpos.x;
        world._42=vpos.y;
        world._43=vpos.z;

m_pIDirect3DDevice->SetTransform(D3DTS_WORLD,&(world));
        render();
请高手帮我看看,可能的话帮我改改 谢谢了~~

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2006-4-10 09:09:00 | 显示全部楼层

Re:怎样让物体围绕自我中心的y轴旋转 谢谢各位高手!

struct CMyObject
{
float rotate;
float x,y,z;
...
...
};

myObject;

D3DXMATRIX matWorld,matRotate,matTrans;
D3DXMatrixRotationY(&matRotate,myObject.rotate);
D3DXMATRIXTranslation(&matTrans,myObject.x,myObject.y,myObject.z);
D3DXMATRIXMultiply(&matWorld,&matRotate,&matTrans);
m_pIDirect3DDevice->SetTransform(D3DTS_WORLD,&matWorld);
RenderObject(&myObject);

不知道对不对,我没验证

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2006-4-10 09:29:00 | 显示全部楼层

Re:怎样让物体围绕自我中心的y轴旋转 谢谢各位高手!

旋转矩阵要不断变化。。。

25

主题

134

帖子

134

积分

注册会员

Rank: 2

积分
134
发表于 2006-4-10 12:12:00 | 显示全部楼层

Re:怎样让物体围绕自我中心的y轴旋转 谢谢各位高手!

你要先将模型移动至原点,然后再旋转,再移回去
才能实现绕自己中心旋转的效果
好像是这样~~

23

主题

68

帖子

68

积分

注册会员

Rank: 2

积分
68
 楼主| 发表于 2006-4-10 18:01:00 | 显示全部楼层

Re:怎样让物体围绕自我中心的y轴旋转 谢谢各位高手!

能给个实例吗?

25

主题

134

帖子

134

积分

注册会员

Rank: 2

积分
134
发表于 2006-4-10 19:25:00 | 显示全部楼层

Re:怎样让物体围绕自我中心的y轴旋转 谢谢各位高手!

        //Create the rotation transformation matrices around the x, y and z axis
        D3DXMatrixRotationY(&matRotationY, timeGetTime()/400.0f);


        //Create the translation (move) matrices
        D3DXMatrixTranslation(&matMoveRight27, 27.0, 0.0, 0.0);
        D3DXMatrixTranslation(&matMoveLeft27, -27.0, 0.0, 0.0);
       
        //Combine the matrices to form 4 transformation matrices
        D3DXMatrixMultiply(&matTransformation, &matMoveRight27, &matRotationY);
        D3DXMatrixMultiply(&matTransformation, &matTransformation, &matMoveLeft27);

    //Apply the transformations and render our objects
m_pD3DDevice->SetTransform(D3DTS_WORLD, &matTransformation);
    m_pCube1->Render();

25

主题

134

帖子

134

积分

注册会员

Rank: 2

积分
134
发表于 2006-4-10 19:29:00 | 显示全部楼层

Re:怎样让物体围绕自我中心的y轴旋转 谢谢各位高手!

m_pCube1的初始位置(-27.0, 0.0, 0.0)

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2006-4-10 19:52:00 | 显示全部楼层

Re:怎样让物体围绕自我中心的y轴旋转 谢谢各位高手!

如果用
D3DXMatrixIdentity(&world);
m_pIDirect3DDevice->SetTransform(D3DTS_WORLD,&(world));
render();
你的那个物体是显示在原点吗?

23

主题

68

帖子

68

积分

注册会员

Rank: 2

积分
68
 楼主| 发表于 2006-4-10 21:48:00 | 显示全部楼层

Re:怎样让物体围绕自我中心的y轴旋转 谢谢各位高手!

不是呀 所以困惑呢 书上说要先移动到 原点旋转,再移回去,可是我哪知道 mesh在哪里呀?要移动多少,书上就给出在原点时候的移动代码了

23

主题

68

帖子

68

积分

注册会员

Rank: 2

积分
68
 楼主| 发表于 2006-4-10 21:52:00 | 显示全部楼层

Re:怎样让物体围绕自我中心的y轴旋转 谢谢各位高手!

踏雪飞鸿朋友,我怎样设置导入的
mesh的 初始位置呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 04:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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