Fix for setting in perspective view mode the ALT+B clipping planes.

Fun: do exact camera viewborder to see camera volume!
This commit is contained in:
2005-08-20 20:30:13 +00:00
parent fff5d816ab
commit 7e4b62894e

View File

@@ -2039,21 +2039,29 @@ void view3d_edit_clipping(View3D *v3d)
viewport[1] = 0;
/* four clipping planes and bounding volume */
/* first do the bounding volume */
for(val=0; val<4; val++) {
xs= (val==0||val==3)?rect.xmin:rect.xmax;
ys= (val==0||val==1)?rect.ymin:rect.ymax;
gluUnProject(xs, ys, 0.0, mvmatrix, projmatrix, viewport, &p[0], &p[1], &p[2]);
VECCOPY(v3d->clipbb->vec[val], p);
VECCOPY(v3d->clip[val], G.vd->viewinv[val & 1]);
if(val>1) VecMulf(v3d->clip[val], -1.0f);
v3d->clip[val][3]= - v3d->clip[val][0]*p[0] - v3d->clip[val][1]*p[1] - v3d->clip[val][2]*p[2];
gluUnProject(xs, ys, 1.0, mvmatrix, projmatrix, viewport, &p[0], &p[1], &p[2]);
VECCOPY(v3d->clipbb->vec[4+val], p);
}
/* then plane equations */
for(val=0; val<4; val++) {
CalcNormFloat(v3d->clipbb->vec[val], v3d->clipbb->vec[val==3?0:val+1], v3d->clipbb->vec[val+4],
v3d->clip[val]);
v3d->clip[val][3]= - v3d->clip[val][0]*v3d->clipbb->vec[val][0]
- v3d->clip[val][1]*v3d->clipbb->vec[val][1]
- v3d->clip[val][2]*v3d->clipbb->vec[val][2];
}
}
}