I´m having problens to update the BoundBox of my models.
When I translate the model, ou rotate the BoundBox don´t are update. I have all the transformation of the model in 3 matrices translate, rotate and scale. And multiply then by MODEL_VIEW before rendering.
But how i will do this with my BB ??
I need to have a copy of the original BB, to make transformations, and I don´t want to do this all frames, only when the model are updated!
Well, if you are using axis aligned bounding box, coded as min/max point, transform all box corners by the model transformation and find the new min and max. (if you code the BB by center/extents, it works exactly the same, you just have some extra works)
Here a piece of code i wrote as an exemple :
for (i = 0; i < 8; i++) {
v[i] = mat * GetCorner(i, v[i]);
}
min = max = v[0];
for (i = 1; i < 8; i++) {
if (v[i].x < min.x) min.x = v[i].x;
else if (v[i].x > max.x) max.x = v[i].x;
if (v[i].y < min.y) min.y = v[i].y;
else if (v[i].y > max.y) max.y = v[i].y;
if (v[i].z < min.z) min.z = v[i].z;
else if (v[i].x > max.x) max.z = v[i].z;
}
return AABB(min,max);
}
[edit]
oh i forgot, if you want the bounding box to be aligned with world axis, the matrix should be the local->world matrix, and the original bounding box should be in local space (computed directly from vertices) (By the way why use 3 matrices ?)
[This message has been edited by delbass (edited 02-15-2004).]
[This message has been edited by delbass (edited 02-15-2004).]