--- ray/src/cv/obj2rad.c 1994/04/14 13:36:18 2.7 +++ ray/src/cv/obj2rad.c 1994/06/15 09:51:31 2.9 @@ -70,6 +70,8 @@ RULEHD *ourmapping = NULL; char *defmat = DEFMAT; /* default (starting) material name */ char *defobj = DEFOBJ; /* default (starting) object name */ +int flatten = 0; /* discard surface normal information */ + char *getmtl(), *getonm(); char mapname[128]; /* current picture file */ @@ -99,6 +101,9 @@ char *argv[]; case 'm': /* use custom mapfile */ ourmapping = getmapping(argv[++i], &qlist); break; + case 'f': /* flatten surfaces */ + flatten++; + break; default: goto userr; } @@ -125,7 +130,7 @@ char *argv[]; } exit(0); userr: - fprintf(stderr, "Usage: %s [-o obj][-m mapping][-n] [file.obj]\n", + fprintf(stderr, "Usage: %s [-o obj][-m mapping][-n][-f] [file.obj]\n", argv[0]); exit(1); } @@ -435,7 +440,7 @@ register char *vs; if (vi[0]-- > nvs) return(0); } else if (vi[0] < 0) { - vi[0] = nvs + vi[0]; + vi[0] += nvs; if (vi[0] < 0) return(0); } else @@ -449,7 +454,7 @@ register char *vs; if (vi[1]-- > nvts) return(0); } else if (vi[1] < 0) { - vi[1] = nvts + vi[1]; + vi[1] += nvts; if (vi[1] < 0) return(0); } else @@ -463,7 +468,7 @@ register char *vs; if (vi[2]-- > nvns) return(0); } else if (vi[2] < 0) { - vi[2] = nvns + vi[2]; + vi[2] += nvns; if (vi[2] < 0) return(0); } else @@ -472,7 +477,7 @@ register char *vs; } -nonplanar(ac, av) /* are vertices are non-planar? */ +nonplanar(ac, av) /* are vertices non-planar? */ register int ac; register char **av; { @@ -572,7 +577,7 @@ char *v1, *v2, *v3; if (!cvtndx(v1i, v1) || !cvtndx(v2i, v2) || !cvtndx(v3i, v3)) return(0); /* compute barycentric coordinates */ - texOK = (v1i[2]>=0 && v2i[2]>=0 && v3i[2]>=0); + texOK = !flatten && (v1i[2]>=0 && v2i[2]>=0 && v3i[2]>=0); #ifdef TEXMAPS patOK = mapname[0] && (v1i[1]>=0 && v2i[1]>=0 && v3i[1]>=0); #else @@ -792,7 +797,7 @@ register VNDX p0i, p1i, p2i, p3i; #ifdef TEXMAPS /* also check for texture indices */ #endif - if (!(p0i[2]>=0 && p1i[2]>=0 && p2i[2]>=0 && p3i[2]>=0)) + if (flatten || !(p0i[2]>=0 && p1i[2]>=0 && p2i[2]>=0 && p3i[2]>=0)) return(-1); /* find dominant axis */ VCOPY(v1, vnlist[p0i[2]]);