From 879a753ee2434f0f5c0724bf631756e0a8a5bd80 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Sat, 10 Nov 2001 15:46:05 +0000 Subject: [PATCH] Fixed osgUtil::Optimizer::FlatternStaticTransformsVisitor so that the apply(osg::LOD) scaled the ranges in addition to transform the center point and children. --- src/osgUtil/Optimizer.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/osgUtil/Optimizer.cpp b/src/osgUtil/Optimizer.cpp index db6ff5d8a..b21c1eb51 100644 --- a/src/osgUtil/Optimizer.cpp +++ b/src/osgUtil/Optimizer.cpp @@ -329,7 +329,23 @@ void Optimizer::FlattenStaticTransformsVisitor::apply(osg::LOD& lod) { if (!_matrixStack.empty()) { - lod.setCenter(lod.getCenter()*_matrixStack.back()); + osg::Matrix& matrix = _matrixStack.back(); + osg::Matrix matrix_no_trans = matrix; + matrix_no_trans.setTrans(0.0f,0.0f,0.0f); + + osg::Vec3 v111(1.0f,1.0f,1.0f); + osg::Vec3 new_v111 = v111*matrix_no_trans; + float ratio = new_v111.length()/v111.length(); + + // move center point. + lod.setCenter(lod.getCenter()*matrix); + + // adjust ranges to new scale. + for(int i=0;i