[Brlcad-commits] CVS: brlcad/src/liboptical shade.c,14.10,14.11
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: Sean M. <br...@us...> - 2005-10-31 23:41:45
|
Update of /cvsroot/brlcad/brlcad/src/liboptical In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29845/src/liboptical Modified Files: shade.c Log Message: if the intersection normal that's returned is knowingly reversed, flip it (while still complaining). this usually indicates a bug in the underlying primitive or a problem with the geometry itself, but rendering nothing/black is pretty worthless. also, limit the number of shade_input messages about flipped normals to just 100 so as not to spew unnecessarily to the console and slowing down the raytrace. Index: shade.c =================================================================== RCS file: /cvsroot/brlcad/brlcad/src/liboptical/shade.c,v retrieving revision 14.10 retrieving revision 14.11 diff -w -u -r14.10 -r14.11 --- shade.c 23 Oct 2005 04:44:34 -0000 14.10 +++ shade.c 31 Oct 2005 23:41:37 -0000 14.11 @@ -175,17 +175,25 @@ f = VDOT(ap->a_ray.r_dir,swp->sw_hit.hit_normal); if (f > 0.0 && !BN_VECT_ARE_PERP(f, &(ap->a_rt_i->rti_tol))) { + static int counter = 0; + if (counter++ < 100 || (R_DEBUG&RDEBUG_SHADE)) { bu_log("shade_inputs(%s) flip N xy=%d,%d %s surf=%d dot=%g\n", pp->pt_inseg->seg_stp->st_name, ap->a_x, ap->a_y, - rt_functab[ - pp->pt_inseg->seg_stp->st_id - ].ft_name, + rt_functab[pp->pt_inseg->seg_stp->st_id].ft_name, swp->sw_hit.hit_surfno, f); + } else { + if (counter++ == 101) { + bu_log("shade_inputs(%s) flipped normals detected, additional reporting suppressed\n", + pp->pt_inseg->seg_stp->st_name); + } + } if( R_DEBUG&RDEBUG_SHADE ) { VPRINT("Dir ", ap->a_ray.r_dir); VPRINT("Norm", swp->sw_hit.hit_normal); } + /* reverse the normal so it's lit */ + VREVERSE(swp->sw_hit.hit_normal, swp->sw_hit.hit_normal); } } if( R_DEBUG&(RDEBUG_RAYPLOT|RDEBUG_SHADE) ) { |