|
|
最近做了个AABB的演示程序,却发觉精度上存在问题,通过将模型的每个顶点添加进AABB中来进行计算,结果计算出来的AABB我觉得实在是太大了,换了几个模型结果还是一样,太大了!不知道是模型的问题还是代码的问题!
下面是关键代码,希望哪位知道怎么优化AABB的精度的话,请不吝赐教.
// 向AABB中添加顶点,需要重新计算AABB
GLvoid AABB3::AddVertex(const Vector3 &vertex)
{
// 必要的时候扩张边界框以包含这个点
if (vertex.x < m_vecMin.x) { m_vecMin.x = vertex.x; }
if (vertex.x > m_vecMax.x) { m_vecMax.x = vertex.x; }
if (vertex.y < m_vecMin.y) { m_vecMin.y = vertex.y; }
if (vertex.y > m_vecMax.y) { m_vecMax.y = vertex.y; }
if (vertex.z < m_vecMin.z) { m_vecMin.z = vertex.z; }
if (vertex.z > m_vecMax.z) { m_vecMax.z = vertex.z; }
}
// 模型类成员函数中的关键代码
// 将模型中的所有顶点添加进AABB中
for (GLuint i = 0; i < m_uiTotalVertexNumner; ++i)
{
m_AABB.AddVertex(m_pVertex);
} |
|