commit 3ad78d40ea529fd8857130e49afed280b4eec66e
parent 5ac2332e467351d048decc69b8e5e4d6378c0ebd
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date: Tue, 3 Jan 2012 11:01:47 +0100
Ajustement de la taille des splitBox et mergeBox en fonction du volume de l'objet (pour que quand deux objets ont la même taille z sur leur AABB, le z de la splitBox du plus gros soit plus grand).
Diffstat:
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/bugs/new/2011-18-12-1926-reperelocal.txt b/bugs/closed/2011-18-12-1926-reperelocal.txt
diff --git a/rules/chose.cpp b/rules/chose.cpp
@@ -68,9 +68,14 @@ void Chose::addBBPoint(Vertex v) {
void Chose::updateAABB() {
lod.firstBBPoint = true;
getBoundingBoxPoints();
+ float dx = lod.aabb[1] - lod.aabb[0];
+ float dy = lod.aabb[3] - lod.aabb[2];
+ float dz = lod.aabb[5] - lod.aabb[4];
+ float volume = dx*dy*dz;
+ float pseudoLength = std::max(1.f, std::pow(volume, 1.f/3.f) / 1000.f);
+ float splitFactor = 24 * pseudoLength;
+ float mergeFactor = 25 * pseudoLength;
for (int i = 0; i < 3; i++) {
- float splitFactor = 24;
- float mergeFactor = 25;
float center = (lod.aabb[2*i] + lod.aabb[2*i+1]) / 2;
lod.splitBox[2*i] = (lod.aabb[2*i] - center) * splitFactor + center;
lod.splitBox[2*i+1] = (lod.aabb[2*i+1] - center) * splitFactor + center;