游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2446|回复: 2

D3DXComputeBoundingBox得到错误的包围盒结果

[复制链接]

1

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2006-10-17 11:37:00 | 显示全部楼层 |阅读模式
小弟我在编一个DX程序时需要计算一个mesh的包围盒,这个mesh是直接从x文件读入的。然后想使用D3DXComputeBoundingBox得到包围盒的结果。我试了几个模型,发现算出来的包围盒跟正确结果完全不一样,应该是算错了。

假设pMin代表包围盒的左下角,pMax代表包围盒的右上角
以茶壶模型(teapot.x)为例,我在deep exploration中查看,pMin在(-1,-1,-1)附近,pMax在(1,1,1)附近,但是用D3DXComputeBoundingBox计算结果却是pMin=pMax=(0.678873, 0.330678, 0),这个也太汗了,居然算到同一点了 [em4]。 我又试了一下D3DXComputeBoundingSphere算包围球,结果一样不对。

下面是代码段:

  1. ID3DXMesh*      g_Mesh;
  2. //载入mesh
  3. D3DXLoadMeshFromX( meshname,
  4.                 D3DXMESH_SYSTEMMEM, DXUTGetD3DDevice(),
  5.                 NULL,NULL,NULL,NULL,&g_Mesh);
  6. //...
  7. //计算包围盒
  8. D3DXVECTOR3 pMin,pMax;
  9. BYTE* v = NULL;
  10. g_Mesh->LockVertexBuffer(D3DLOCK_READONLY,(void**)&v);

  11. D3DXComputeBoundingBox((D3DXVECTOR3*)v,
  12.                                          g_Mesh->GetNumVertices(),
  13.                                          D3DXGetFVFVertexSize(g_Mesh->GetFVF()),
  14.                                          &pMin,&pMax);
  15. g_Mesh->UnlockVertexBuffer();
  16. //...
复制代码


不知道是否有人遇到过相同的问题,希望大侠给指点一下,谢谢了先。

3

主题

121

帖子

121

积分

注册会员

Rank: 2

积分
121
QQ
发表于 2006-10-17 20:28:00 | 显示全部楼层

Re:D3DXComputeBoundingBox得到错误的包围盒结果

D3DXComputeBoundingBox((D3DXVECTOR3*v,  g_Mesh->GetNumVertices(), g_Mesh->GetNumBytesPerVertex(),&pMin,&pMax);

3

主题

121

帖子

121

积分

注册会员

Rank: 2

积分
121
QQ
发表于 2006-10-17 20:38:00 | 显示全部楼层

Re:D3DXComputeBoundingBox得到错误的包围盒结果

我试了一下,不是这个问题.Sorry!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 15:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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