游戏开发论坛

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

请问世界矩阵能够控制某一个模型的方向,位置么

[复制链接]

54

主题

116

帖子

122

积分

注册会员

Rank: 2

积分
122
发表于 2007-7-10 14:24:00 | 显示全部楼层 |阅读模式
我在一本书上看到世界矩阵第一行是模型自身向右的向量,第二行是向上的,第三行是向前的,第四行是位置。
而且书上写了这样一个函数来控制模型


VOID SetWorldMatrix()
{
        static long curTime=0;
        static float elapsetime=0;
        elapsetime = (timeGetTime()-curTime)/1000.0f;
        curTime = timeGetTime();

    //创建并设置世界矩阵
        float fRoll, fPitch, fYaw;
        fRoll = fPitch = fYaw = 0.0f;

        if (m_bKey['D']) fRoll  -= 3*elapsetime;
    if (m_bKey['A']) fRoll  += 3*elapsetime;
        if (m_bKey['S']) fPitch -= 3*elapsetime;
    if (m_bKey['W']) fPitch += 3*elapsetime;
        if (m_bKey['Q']) fYaw   -= 3*elapsetime;
    if (m_bKey['E']) fYaw   += 3*elapsetime;

        //更新网格模型姿态
    static D3DXVECTOR3 vRight, vUp, vLook, vPos;

        vRight.x = g_matWorld._11;
        vRight.y = g_matWorld._12;
        vRight.z = g_matWorld._13;
        vUp.x    = g_matWorld._21;
        vUp.y    = g_matWorld._22;
        vUp.z    = g_matWorld._23;
        vLook.x  = g_matWorld._31;
        vLook.y  = g_matWorld._32;
        vLook.z  = g_matWorld._33;
        vPos.x   = g_matWorld._41;
        vPos.y   = g_matWorld._42;
        vPos.z   = g_matWorld._43;

        D3DXVec3Normalize(&vLook, &vLook);
        D3DXVec3Cross(&vRight, &vUp, &vLook);
        D3DXVec3Normalize(&vRight, &vRight);
        D3DXVec3Cross(&vUp, &vLook, &vRight);
        D3DXVec3Normalize(&vUp, &vUp);

        static D3DXMATRIX matPitch, matYaw, matRoll;
       
        D3DXMatrixRotationAxis(&matYaw, &vUp, fYaw);
        D3DXVec3TransformCoord(&vLook,  &vLook, &matYaw);
        D3DXVec3TransformCoord(&vRight, &vRight, &matYaw);

        D3DXMatrixRotationAxis(&matRoll, &vLook, fRoll);
        D3DXVec3TransformCoord(&vRight, &vRight, &matRoll);
        D3DXVec3TransformCoord(&vUp,    &vUp, &matRoll);

        D3DXMatrixRotationAxis(&matPitch, &vRight, fPitch);
        D3DXVec3TransformCoord(&vLook, &vLook, &matPitch);
        D3DXVec3TransformCoord(&vUp,   &vUp,  &matPitch);

        g_matWorld._11 = vRight.x;
        g_matWorld._12 = vRight.y;
        g_matWorld._13 = vRight.z;
        g_matWorld._21 = vUp.x ;
        g_matWorld._22 = vUp.y  ;
        g_matWorld._23 = vUp.z;
        g_matWorld._31 = vLook.x;
        g_matWorld._32 = vLook.y;
        g_matWorld._33 = vLook.z;

        //向前移动
    if (m_bKey['F'])
        {
                g_matWorld._41 += 30*elapsetime * vLook.x;
                g_matWorld._42 += 30*elapsetime * vLook.y;
                g_matWorld._43 += 30*elapsetime * vLook.z;
        }

        //向后移动
    if (m_bKey['V'])
        {
                g_matWorld._41 -= 30*elapsetime * vLook.x;
                g_matWorld._42 -= 30*elapsetime * vLook.y;
                g_matWorld._43 -= 30*elapsetime * vLook.z;
        }
    g_pd3dDevice->SetTransform( D3DTS_WORLD, &g_matWorld );
}

我想知道这个函数里世界是转动的模型自身还是整个世界。

还有如何控制单个模型的大小位置而不影响场景中的其他模型呢?
谢谢了

5

主题

755

帖子

757

积分

高级会员

Rank: 4

积分
757
发表于 2007-7-10 14:58:00 | 显示全部楼层

Re:请问世界矩阵能够控制某一个模型的方向,位置么

建议换本书

54

主题

116

帖子

122

积分

注册会员

Rank: 2

积分
122
 楼主| 发表于 2007-7-10 15:20:00 | 显示全部楼层

Re:请问世界矩阵能够控制某一个模型的方向,位置么

为什么啊

0

主题

769

帖子

1052

积分

金牌会员

Rank: 6Rank: 6

积分
1052
发表于 2007-7-10 23:28:00 | 显示全部楼层

Re:请问世界矩阵能够控制某一个模型的方向,位置么

晕哦~~~
什么垃圾书来着
讲得乱七八糟的- -#

世界矩阵在OPENGL怎么设置的我就不清楚
在DX下面不是这么用的
具体怎么定的说出来一匹布长都说不完
你上百度或者看DX的SDK文档好了

而你想做到在改变一个模型的方向和位置的时候不影响其他模型
这个只需要在渲染这个模型之前把当前的世界矩阵保存起来
等把这个模型改变好矩阵渲染完毕后再把原来矩阵恢复过来
然后下一个模型渲染时候重复这样的步骤就是了

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2009-10-12 10:48:00 | 显示全部楼层

Re: 请问世界矩阵能够控制某一个模型的方向,位置么

这个应该没有错误。这个得到的世界矩阵是当前物体在世界坐标中的对于位置及旋转的角度的描述


还有种叫做世界变换矩阵,是本地坐标向世界坐标转换时用到的


关于LZ说的矩阵我也是今天刚刚用到,特意登陆回个帖,LS不要随意教唆啊

0

主题

769

帖子

1052

积分

金牌会员

Rank: 6Rank: 6

积分
1052
发表于 2009-10-13 17:39:00 | 显示全部楼层

Re: Re: 请问世界矩阵能够控制某一个模型的方向,位置么

cuicui: Re: 请问世界矩阵能够控制某一个模型的方向,位置么

这个应该没有错误。这个得到的世界矩阵是当前物体在世界坐标中的对于位置及旋转的角度的描述


还有种叫...

建议你去把SDK里面关于矩阵的东西搞懂再说,我没教唆,确实LZ的书可以扔了 [em20]

34

主题

629

帖子

629

积分

高级会员

Rank: 4

积分
629
发表于 2009-10-13 19:15:00 | 显示全部楼层

Re:请问世界矩阵能够控制某一个模型的方向,位置么

很多东西自己没弄明白之前不要随便说别人垃圾
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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