www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

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:
Rbugs/new/2011-18-12-1926-reperelocal.txt -> bugs/closed/2011-18-12-1926-reperelocal.txt | 0
Mrules/chose.cpp | 9+++++++--
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;