|
|
小弟我在编一个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算包围球,结果一样不对。
下面是代码段:
- ID3DXMesh* g_Mesh;
- //载入mesh
- D3DXLoadMeshFromX( meshname,
- D3DXMESH_SYSTEMMEM, DXUTGetD3DDevice(),
- NULL,NULL,NULL,NULL,&g_Mesh);
- //...
- //计算包围盒
- D3DXVECTOR3 pMin,pMax;
- BYTE* v = NULL;
- g_Mesh->LockVertexBuffer(D3DLOCK_READONLY,(void**)&v);
- D3DXComputeBoundingBox((D3DXVECTOR3*)v,
- g_Mesh->GetNumVertices(),
- D3DXGetFVFVertexSize(g_Mesh->GetFVF()),
- &pMin,&pMax);
- g_Mesh->UnlockVertexBuffer();
- //...
复制代码
不知道是否有人遇到过相同的问题,希望大侠给指点一下,谢谢了先。
|
|