游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1882|回复: 8

为什么不能同步的移动摄影机和Mesh

[复制链接]

125

主题

364

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
QQ
发表于 2006-3-30 11:25:00 | 显示全部楼层 |阅读模式
我移了半天也不好使。大侠救命。

7

主题

299

帖子

305

积分

中级会员

Rank: 3Rank: 3

积分
305
发表于 2006-3-30 15:53:00 | 显示全部楼层

Re:为什么不能同步的移动摄影机和Mesh

怎么个不能同步??

0

主题

237

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
发表于 2006-3-30 16:58:00 | 显示全部楼层

Re:为什么不能同步的移动摄影机和Mesh

LZ, camera和mesh都有?自的matrix, ?然不能"同步", 何?rcamera用的是view-matrix, 和mesh 用的 world transform matrix 不一?? 怎可以在 mesh 上用view matrix 呢 ??

以上是我估?LZ ???的意思.....

125

主题

364

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
QQ
 楼主| 发表于 2006-3-30 22:36:00 | 显示全部楼层

Re:为什么不能同步的移动摄影机和Mesh

我是想让 摄影机动 , 模型也跟着动。

9

主题

198

帖子

198

积分

注册会员

Rank: 2

积分
198
发表于 2006-3-30 23:17:00 | 显示全部楼层

Re:为什么不能同步的移动摄影机和Mesh

那就把transform matrix作用在摄像机和模型上。

9

主题

50

帖子

70

积分

注册会员

Rank: 2

积分
70
发表于 2006-3-31 09:19:00 | 显示全部楼层

Re:为什么不能同步的移动摄影机和Mesh

移动模型, 然后摄象机获得模型的矩阵,AffineInverse一下,就可以了。

9

主题

50

帖子

70

积分

注册会员

Rank: 2

积分
70
发表于 2006-3-31 09:19:00 | 显示全部楼层

Re:为什么不能同步的移动摄影机和Mesh

CMatrix44F& CMatrix44F::AffineInverse()
{
        float temp[16];
        memcpy(temp, m, 16 * sizeof(float));

        m[4] = temp[1];
        m[1] = temp[4];
        m[8] = temp[2];
        m[2] = temp[8];
        m[9] = temp[6];
        m[6] = temp[9];

        m[12]  = -(temp[0]*temp[12] + temp[1]*temp[13] + temp[2]*temp[14]);
        m[13]  = -(temp[4]*temp[12] + temp[5]*temp[13] + temp[6]*temp[14]);
        m[14] = -(temp[8]*temp[12] + temp[9]*temp[13] + temp[10]*temp[14]);

        return *this;
}

125

主题

364

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
QQ
 楼主| 发表于 2006-3-31 23:43:00 | 显示全部楼层

Re:为什么不能同步的移动摄影机和Mesh

我照楼上这么移动的对不,我试了可屏幕还是移动了,我希望按下 A D时一动不动。
就表示摄影机和模型都动了。
HRESULT CMyD3DApplication::AffineVerse(D3DXMATRIX m)
{
  float temp[16];
  memcpy(temp, m, 16 * sizeof(float));

m[4] = temp[1];
m[1] = temp[4];
m[8] = temp[2];
m[2] = temp[8];
m[9] = temp[6];
m[6] = temp[9];

m[12]  = -(temp[0]*temp[12] + temp[1]*temp[13] + temp[2]*temp[14]);
m[13]  = -(temp[4]*temp[12] + temp[5]*temp[13] + temp[6]*temp[14]);
m[14] = -(temp[8]*temp[12] + temp[9]*temp[13] + temp[10]*temp[14]);

  return S_OK;
}
          //移动世界
                   D3DXMatrixTranslation(&matMoveWorld,m_MoveWorld,0.0f,0.0f);
           m_pd3dDevice->SetTransform(D3DTS_WORLD,&matMoveWorld);
           m_pd3dDevice->GetTransform(D3DTS_VIEW,&matMoveWorld);
           AffineVerse(matMoveWorld);
           m_pMeshT1->DrawSubset(0);

125

主题

364

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
QQ
 楼主| 发表于 2006-4-1 01:47:00 | 显示全部楼层

Re:为什么不能同步的移动摄影机和Mesh

找到了因为 移动模型相当 反向移动了摄影机,所以求一下模型的逆矩阵再设置为摄影机矩阵就行了。

D3DXMatrixInverse(&matInver,NULL,&matMove); 此函数解决问题。

参考
http://www.86vr.com/game/tech/design/200505/5771_6.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 02:38

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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