--- ray/src/gen/mkillum.c 1991/08/13 14:43:49 1.11 +++ ray/src/gen/mkillum.c 1992/07/21 09:45:58 2.4 @@ -30,7 +30,7 @@ char *rtargv[64] = { "rtrace", "-dj", ".25", "-dr", " "-ab", "2", "-ad", "256", "-as", "128", "-aa", ".15", }; int rtargc = 14; /* overriding rtrace options */ -char *myrtopts[] = { "-I-", "-i-", "-ov", "-h-", "-fff", NULL }; +char *myrtopts[] = { "-I-", "-i-", "-ov", "-h-", "-fff", "-y", "0", NULL }; struct rtproc rt; /* our rtrace process */ @@ -42,6 +42,7 @@ struct illum_args thisillum = { /* our illum and defa VOIDID, SAMPDENS, NSAMPS, + 0., }; char matcheck[MAXSTR]; /* current material to include or exclude */ @@ -81,8 +82,7 @@ char *argv[]; if (argv[i][0] == '-' && argv[i][1] == 'w') warnings = !warnings; } - if ((gargc = i) < 2) - error(USER, "too few arguments"); + gargc = i; rtargc--; for (i = 0; myrtopts[i] != NULL; i++) rtargv[rtargc++] = myrtopts[i]; @@ -101,6 +101,8 @@ char *argv[]; perror(rtpath); exit(1); } + if (gargc < 2 || argv[gargc-1][0] == '-') + error(USER, "missing octree argument"); /* else initialize and run our calculation */ init(); if (gargc+1 < argc) @@ -146,6 +148,7 @@ init() /* start rtrace and set up buffers */ /* set up signal handling */ signal(SIGPIPE, quit); /* start rtrace process */ + errno = 0; maxbytes = open_process(rt.pd, rtargv); if (maxbytes == 0) { eputs(rtargv[0]); @@ -329,6 +332,16 @@ char *nm; break; cp++; continue; + case 'b': /* brightness */ + if (*++cp != '=') + break; + if (!isfltd(++cp, " \t\n")) + break; + thisillum.minbrt = atof(cp); + if (thisillum.minbrt < 0.) + thisillum.minbrt = 0.; + cp = sskip(cp); + continue; case 'o': /* output file */ if (*++cp != '=') break; @@ -373,9 +386,20 @@ printopts() /* print out option default values */ { printf("m=%-15s\t\t# material name\n", thisillum.matname); printf("f=%-15s\t\t# data file name\n", thisillum.datafile); - printf("c=n\t\t\t\t# color none\n"); + if (thisillum.flags & IL_COLAVG) + if (thisillum.flags & IL_COLDST) + printf("c=d\t\t\t\t# color distribution\n"); + else + printf("c=a\t\t\t\t# color average\n"); + else + printf("c=n\t\t\t\t# color none\n"); + if (thisillum.flags & IL_LIGHT) + printf("l+\t\t\t\t# light type on\n"); + else + printf("l-\t\t\t\t# light type off\n"); printf("d=%d\t\t\t\t# density of points\n", thisillum.sampdens); printf("s=%d\t\t\t\t# samples per point\n", thisillum.nsamps); + printf("b=%f\t\t\t# minimum average brightness\n", thisillum.minbrt); }