游戏开发论坛

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

先给各位同仁拜个年!然后问个问题:)

[复制链接]

5

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2005-2-6 17:51:00 | 显示全部楼层 |阅读模式
嗨!过年好先! [em2]
然后,问两个问题:
1。DirectX 8.1或9的SkinMesh范例和mutiAnimaition范例不知哪位高人弄的通透了,我看了很久也没全搞懂,自己就更写不了导入SkinMesh的东西了,很是郁闷,这样的话什么3D游戏也写不了啊。不知哪位高人有相关文档或者有那两个范例的带详细注释的版本,请发给我可以吗?谢谢了!我的邮箱是:yankai1223@126.com [em24]
2。不知大家是否有用DX3D写游戏的,反正我在咱们这的作品区没有看到过,哪位大仙知道什么好的免费DX3d引擎吗?我们三个人没事做着玩,觉得很多基本功能要是都从头写是不是没有必要?不知大家的看法是怎样的。。。
恩 就着两个问题了   祝大家过个好年!!! [em19]

37

主题

727

帖子

740

积分

高级会员

Rank: 4

积分
740
发表于 2005-2-6 18:00:00 | 显示全部楼层

Re:先给各位同仁拜个年!然后问个问题:)

第一个问题回答不了,我不学DX,但建议你看看PIKE的教程,可能有帮助

第二个嘛:

OGRE很出名
免费开源的图形3D引擎
www.ogre3d.org

国内好的研究站有www.yanchen.com
是我朋友的BLOG,OGRE学习者必去
现在他回家了,让tarkey管理

下载地址嘛,yanchen.com的固顶帖有
请下载稳定版本

编译方法请参考它的论坛~~

5

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2005-2-6 23:56:00 | 显示全部楼层

Re: 先给各位同仁拜个年!然后问个问题:)

内酷殿下,道谢先!追问一句:“PIKE的教程”指的是什么啊?我现在饥不择食,但分可能有用的文档全想看 [em17]

37

主题

727

帖子

740

积分

高级会员

Rank: 4

积分
740
发表于 2005-2-7 10:58:00 | 显示全部楼层

Re:先给各位同仁拜个年!然后问个问题:)

大家都是学习中嘛
互相帮助

PIKE教程下载:
http://www.amanpage.com/articles/DirectX/DX8Tutorial.zip

代码下载:
http://www.amanpage.com/articles/DirectX/DX8TS.ZIP

17

主题

80

帖子

85

积分

注册会员

Rank: 2

积分
85
发表于 2005-2-7 13:16:00 | 显示全部楼层

Re:先给各位同仁拜个年!然后问个问题:)

楼主是要调入纹理还是想调入做好的网格(已转换成.X文件那种)

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2005-2-7 13:19:00 | 显示全部楼层

Re:先给各位同仁拜个年!然后问个问题:)

最近正在研究TV3D……这个引擎还可以吧……

37

主题

727

帖子

740

积分

高级会员

Rank: 4

积分
740
发表于 2005-2-7 13:20:00 | 显示全部楼层

Re:先给各位同仁拜个年!然后问个问题:)

先要使用D3D给我们提供的模型接口定义一个模型的指针出来。

  LPD3DXMESH          g_pMesh        = NULL;  // 模型对象指针
  D3DMATERIAL8*       g_pMeshMaterials = NULL; // 模型的材质数组(一个模型可以有多个材质)
  LPDIRECT3DTEXTURE8* g_pMeshTextures = NULL; // 模型的纹理数组(一个模型可以有多个纹理)
  DWORD               g_dwNumMaterials = 0L;  // 材质的数量(等于纹理数量)

//接着就是从.x文件读入我们的模型。

  // 材质缓冲
  LPD3DXBUFFER pD3DXMtrlBuffer;

  // 读入tiger.x到我们的模型
  if( FAILED( D3DXLoadMeshFromX(
            "Tiger.x",              // [输入].x文件名
            D3DXMESH_SYSTEMMEM,     // [输入]使用系统内存
            g_pd3dDevice,           // [输入]d3d设备指针
            NULL,                   // 不用管
            &pD3DXMtrlBuffer,       // [输出]获取模型的材质缓冲
            &g_dwNumMaterials,      // [输出]材质的数量
            &g_pMesh ) ) )          // [输出]模型对象指针
  {
    return E_FAIL;
  }

//遗憾的是D3DXMESH并没有为什么提供模型的材质和纹理管理,所以必须自己做这件事情。

    // 获取材质指针
  D3DXMATERIAL* d3dxMaterials = (D3DXMATERIAL*)pD3DXMtrlBuffer->  GetBufferPointer();
  g_pMeshMaterials = new D3DMATERIAL8[g_dwNumMaterials];
  g_pMeshTextures  = new LPDIRECT3DTEXTURE8[g_dwNumMaterials];

  for( DWORD i=0; i<g_dwNumMaterials; i++ )
  {
       // 把需要的材质拷贝到我们的材质对象中
       g_pMeshMaterials = d3dxMaterials.MatD3D;

       // 为材质设置环境色
       g_pMeshMaterials.Ambient = g_pMeshMaterials.Diffuse;

       // 创建对应的纹理
       if( FAILED( D3DXCreateTextureFromFile( g_pd3dDevice,
                                                d3dxMaterials.pTextureFilename,
                                                &g_pMeshTextures ) ) )
       {
           g_pMeshTextures = NULL;
       }
  }

  // 释放缓冲
  pD3DXMtrlBuffer->Release();

//一切准备就绪,渲染吧。要注意,在.x文件被读入时,模型是被切分了的,每一个材质对应一部分的模型。

    // 根据材质的数量我们的模型被切分了,每个材质对应一部分
    // 所以渲染的时候也要分几个部分渲染
    for( DWORD i=0; i<g_dwNumMaterials; i++ )
    {
        // 为这一部分设置材质
        g_pd3dDevice->SetMaterial( &g_pMeshMaterials );
        g_pd3dDevice->SetTexture( 0, g_pMeshTextures );

        // 渲染这一部分
        g_pMesh->DrawSubset( i );





看看吧

5

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2005-2-8 17:55:00 | 显示全部楼层

Re: Re:先给各位同仁拜个年!然后问个问题:)

学习再学习: Re:先给各位同仁拜个年!然后问个问题:)

楼主是要调入纹理还是想调入做好的网格(已转换成.X文件那种)

就是带多套动作的.x文件的调入和使用,DX9里有一个很叫Tiny4Anim.x的文件,除了微软的代码没有没有哪个程序能顺畅的调入它,就是电子书里的配套源码也不行,很糟糕。。。 [em17]

5

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2005-2-8 17:58:00 | 显示全部楼层

Re:先给各位同仁拜个年!然后问个问题:)

内酷大人,你给我的那个引擎很好,可是没有找到范例,下不了手啊,能再多给点关于那个引擎的消息吗?◎_◎

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2005-2-8 20:26:00 | 显示全部楼层

Re: Re: Re:先给各位同仁拜个年!然后问个问题:)

yankai1223: Re: Re:先给各位同仁拜个年!然后问个问题:)


就是带多套动作的.x文件的调入和使用,DX9里有一个很叫Tiny4Anim.x的文件,除了微软的代码没有没有哪个程序能顺畅的调入它,就是电子书里的配套源码也不行,很糟糕。。。 [em17]

弄清skin mesh的原理即可,奉劝你不要钻研.x文件,可以自己写一种格式,包括顶点位置,顶点索引,权重,骨骼控制的顶点,骨骼矩阵。skin mesh关键是父矩阵和子矩阵的调节。
[em2]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-24 07:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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