游戏开发论坛

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

怎样才能让同一份x文件里的多个物体分别移动呢???郁闷

[复制链接]

23

主题

68

帖子

68

积分

注册会员

Rank: 2

积分
68
发表于 2006-4-2 11:12:00 | 显示全部楼层 |阅读模式
我想让一份x文件中的多个物体区分开来 请问怎样做??我loadx的代码如下:
bool CBasicXFile:oadXFile(TCHAR* szXFileName,IDirect3DDevice9 *device)
{
        if(FAILED(D3DXLoadMeshFromX(szXFileName,D3DXMESH_MANAGED,
        device,&m_pAdjacencyBuffer,&m_pMaterialBuffer,0,&m_dwMaterials,
        &m_pD3DXMesh)))
                {MessageBox(NULL,"装入.X文件失败.","提示",0);
                return false;
        }
              if(m_pMaterialBuffer==NULL || m_dwMaterials==0)  
                return false;
              D3DXMATERIAL* pD3DXMaterial=(D3DXMATERIAL*)m_pMaterialBuffer-              >GetBufferPointer();  
       
               if(pD3DXMaterial!=NULL)
                {  m_pD3DMaterialArray=new D3DMATERIAL9[m_dwMaterials];
            m_ppDirect3DTextureArray=new IDirect3DTexture9*[m_dwMaterials];
                
                          for(DWORD i=0;i<m_dwMaterials;i++)
                          {  m_pD3DMaterialArray=pD3DXMaterial.MatD3D;
                             m_pD3DMaterialArray.Ambient=m_pD3DMaterialArray.Diffuse;
                m_ppDirect3DTextureArray=NULL;
               
                                 if(pD3DXMaterial.pTextureFilename!=NULL)
                                {   if(FAILED(D3DXCreateTextureFromFile(device ,pD3DXMaterial
                                     .pTextureFilename,&m_ppDirect3DTextureArray)))
                                     {m_ppDirect3DTextureArray=NULL;}
                                 }
                       }                                       
                }                    
     m_pD3DXMesh->OptimizeInplace(
       
                D3DXMESHOPT_COMPACT |
                D3DXMESHOPT_ATTRSORT|
                D3DXMESHOPT_VERTEXCACHE,
        (DWORD*)m_pAdjacencyBuffer->GetBufferPointer(),
                NULL, NULL, NULL);
        m_pMaterialBuffer->Release();
        m_pAdjacencyBuffer->Release();
        return true;
}
渲染的代码如下:
void CBasicXFile::Render()
{
m_pIDirect3DDevice->Clear(0,NULL,D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(0,255,0),1.0f,0);
m_pIDirect3DDevice->BeginScene();

for(DWORD j=0;j<m_dwMaterials;j++){
        m_pIDirect3DDevice->SetMaterial(&m_pD3DMaterialArray[j]);
        m_pIDirect3DDevice->SetTexture(0,m_ppDirect3DTextureArray[j]);
                m_pD3DXMesh->DrawSubset(j);
        }

m_pIDirect3DDevice->EndScene();
m_pIDirect3DDevice->SetRenderState(D3DRS_ZENABLE,D3DZB_TRUE);
m_pIDirect3DDevice-&gtresent(NULL, NULL, NULL, NULL);

}

假如我加载了一个xfile,它里面包括3个图形,怎样才能让其中一个移动呢???请高手帮我改改上边的代码,感激不尽       

                                       
               

11

主题

123

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2006-4-4 13:25:00 | 显示全部楼层

Re:怎样才能让同一份x文件里的多个物体分别移动呢???郁闷

  你好,我也在研究.X文件,你的问题俺研究过,不过我失败了,我只能将物体做成多个.X文件,再分别移动。
  不过我没深入研究,我用的方法是,锁住物体顶点,优化mesh后,锁主顶点,找到你.X文件要控制的部分,我当时做到了,的确移动了,后来发现有bug,有些别的顶点也移动了,原来DX里顶点序号很混乱,同样的序号能用在别的顶点上,不过DX一些书上说的就是这个方法,不知是不是我的建模有问题,我没深入研究,因为我在赶制我的DEMO,希望你能成功。
  以下是我的QQ:30259612;
  EMAIL:applell@126.com;
希望我们能互相交流。

25

主题

134

帖子

134

积分

注册会员

Rank: 2

积分
134
发表于 2006-4-6 17:06:00 | 显示全部楼层

Re:怎样才能让同一份x文件里的多个物体分别移动呢???郁闷

建模时将模型进行分块,然后导为X文件,根据不同的Frame名字进行判断,然后进行处理就ok了

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2006-4-6 21:24:00 | 显示全部楼层

Re:怎样才能让同一份x文件里的多个物体分别移动呢???郁闷

还是分成几个X文件为妙啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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