Changed the method of expanding of the near and far planes in

CullVisitor::popProjectionMatrix so that it better handled models of zero
thickness orthogonal to the viewing direction.
This commit is contained in:
Robert Osfield 2002-05-28 11:39:51 +00:00
parent 02fc6ad5f8
commit 165cc1bf42

View File

@ -224,8 +224,8 @@ void CullVisitor::popProjectionMatrix()
// so it doesn't cull them out. // so it doesn't cull them out.
osg::Matrix& projection = *_projectionStack.back(); osg::Matrix& projection = *_projectionStack.back();
double desired_znear = _computed_znear; double desired_znear = _computed_znear*0.98f;
double desired_zfar = _computed_zfar; double desired_zfar = _computed_zfar*1.02f;
double min_near_plane = _computed_zfar*0.0005f; double min_near_plane = _computed_zfar*0.0005f;
if (desired_znear<min_near_plane) desired_znear=min_near_plane; if (desired_znear<min_near_plane) desired_znear=min_near_plane;
@ -233,7 +233,7 @@ void CullVisitor::popProjectionMatrix()
double trans_near_plane = (-desired_znear*projection(2,2)+projection(3,2))/(-desired_znear*projection(2,3)+projection(3,3)); double trans_near_plane = (-desired_znear*projection(2,2)+projection(3,2))/(-desired_znear*projection(2,3)+projection(3,3));
double trans_far_plane = (-desired_zfar*projection(2,2)+projection(3,2))/(-desired_zfar*projection(2,3)+projection(3,3)); double trans_far_plane = (-desired_zfar*projection(2,2)+projection(3,2))/(-desired_zfar*projection(2,3)+projection(3,3));
double ratio = fabs(2.0f/(trans_near_plane-trans_far_plane))*0.95; double ratio = fabs(2.0f/(trans_near_plane-trans_far_plane));
double center = -(trans_near_plane+trans_far_plane)/2.0f; double center = -(trans_near_plane+trans_far_plane)/2.0f;
projection.postMult(osg::Matrix(1.0f,0.0f,0.0f,0.0f, projection.postMult(osg::Matrix(1.0f,0.0f,0.0f,0.0f,