| 47 |
|
#define RENDER 17 /* rendering options */ |
| 48 |
|
#define REPORT 18 /* report frequency and errfile */ |
| 49 |
|
#define RESOLUTION 19 /* maximum picture resolution */ |
| 50 |
< |
#define SCENE 20 /* scene files */ |
| 51 |
< |
#define UP 21 /* view up (X, Y or Z) */ |
| 52 |
< |
#define VARIABILITY 22 /* level of light variability */ |
| 53 |
< |
#define VIEWS 23 /* view(s) for picture(s) */ |
| 54 |
< |
#define ZFILE 24 /* distance file root name */ |
| 55 |
< |
#define ZONE 25 /* simulation zone */ |
| 50 |
> |
#define RPICT 20 /* rpict parameters */ |
| 51 |
> |
#define RVU 21 /* rvu parameters */ |
| 52 |
> |
#define SCENE 22 /* scene files */ |
| 53 |
> |
#define UP 23 /* view up (X, Y or Z) */ |
| 54 |
> |
#define VARIABILITY 24 /* level of light variability */ |
| 55 |
> |
#define VIEWS 25 /* view(s) for picture(s) */ |
| 56 |
> |
#define ZFILE 26 /* distance file root name */ |
| 57 |
> |
#define ZONE 27 /* simulation zone */ |
| 58 |
|
/* total number of variables */ |
| 59 |
< |
int NVARS = 26; |
| 59 |
> |
int NVARS = 28; |
| 60 |
|
|
| 61 |
|
VARIABLE vv[] = { /* variable-value pairs */ |
| 62 |
|
{"AMBFILE", 3, 0, NULL, onevalue}, |
| 79 |
|
{"render", 3, 0, NULL, catvalues}, |
| 80 |
|
{"REPORT", 3, 0, NULL, onevalue}, |
| 81 |
|
{"RESOLUTION", 3, 0, NULL, onevalue}, |
| 82 |
+ |
{"rpict", 3, 0, NULL, catvalues}, |
| 83 |
+ |
{"rvu", 3, 0, NULL, catvalues}, |
| 84 |
|
{"scene", 3, 0, NULL, catvalues}, |
| 85 |
|
{"UP", 2, 0, NULL, onevalue}, |
| 86 |
|
{"VARIABILITY", 3, 0, NULL, qualvalue}, |
| 116 |
|
char *rvdevice = NULL; /* rvu output device */ |
| 117 |
|
char *viewselect = NULL; /* specific view only */ |
| 118 |
|
|
| 119 |
+ |
/* command paths */ |
| 120 |
+ |
char c_oconv[256] = "oconv"; |
| 121 |
+ |
char c_mkillum[256] = "mkillum"; |
| 122 |
+ |
char c_rvu[256] = "rvu"; |
| 123 |
+ |
char c_rpict[256] = "rpict"; |
| 124 |
+ |
char c_pfilt[256] = "pfilt"; |
| 125 |
+ |
|
| 126 |
|
int overture = 0; /* overture calculation needed */ |
| 127 |
|
|
| 128 |
|
int children_running = 0; /* set negative in children */ |
| 219 |
|
goto userr; |
| 220 |
|
rifname = argv[i]; |
| 221 |
|
/* check command-line options */ |
| 222 |
< |
if ((nprocs > 1) & (viewselect != NULL)) |
| 222 |
> |
if ((nprocs > 1) & (viewselect != NULL) & (rvdevice == NULL)) |
| 223 |
|
nprocs = 1; |
| 224 |
|
/* assign Radiance root file name */ |
| 225 |
|
rootname(radname, rifname); |
| 491 |
|
touch(vval(OCTREE)); |
| 492 |
|
else { /* build command */ |
| 493 |
|
if (vdef(MATERIAL)) |
| 494 |
< |
sprintf(combuf, "oconv%s %s %s > %s", ocopts, |
| 495 |
< |
vval(MATERIAL), vval(SCENE), |
| 496 |
< |
vval(OCTREE)); |
| 494 |
> |
sprintf(combuf, "%s%s %s %s > %s", c_oconv, |
| 495 |
> |
ocopts, vval(MATERIAL), |
| 496 |
> |
vval(SCENE), vval(OCTREE)); |
| 497 |
|
else |
| 498 |
< |
sprintf(combuf, "oconv%s %s > %s", ocopts, |
| 498 |
> |
sprintf(combuf, "%s%s %s > %s", c_oconv, ocopts, |
| 499 |
|
vval(SCENE), vval(OCTREE)); |
| 500 |
|
|
| 501 |
|
if (runcom(combuf)) { /* run it */ |
| 521 |
|
touch(oct0name); |
| 522 |
|
else { /* build command */ |
| 523 |
|
if (octreedate) |
| 524 |
< |
sprintf(combuf, "oconv%s -i %s %s > %s", ocopts, |
| 525 |
< |
vval(OCTREE), vval(ILLUM), oct0name); |
| 524 |
> |
sprintf(combuf, "%s%s -i %s %s > %s", c_oconv, |
| 525 |
> |
ocopts, vval(OCTREE), |
| 526 |
> |
vval(ILLUM), oct0name); |
| 527 |
|
else if (vdef(MATERIAL)) |
| 528 |
< |
sprintf(combuf, "oconv%s %s %s > %s", ocopts, |
| 529 |
< |
vval(MATERIAL), vval(ILLUM), oct0name); |
| 518 |
< |
else |
| 519 |
< |
sprintf(combuf, "oconv%s %s > %s", ocopts, |
| 528 |
> |
sprintf(combuf, "%s%s %s %s > %s", c_oconv, |
| 529 |
> |
ocopts, vval(MATERIAL), |
| 530 |
|
vval(ILLUM), oct0name); |
| 531 |
+ |
else |
| 532 |
+ |
sprintf(combuf, "%s%s %s > %s", c_oconv, |
| 533 |
+ |
ocopts, vval(ILLUM), oct0name); |
| 534 |
|
if (runcom(combuf)) { /* run it */ |
| 535 |
|
fprintf(stderr, |
| 536 |
|
"%s: error generating octree\n\t%s removed\n", |
| 550 |
|
else { |
| 551 |
|
mkillumopts(mkopts); /* build mkillum command */ |
| 552 |
|
mktemp(illumtmp); |
| 553 |
< |
sprintf(combuf, "mkillum%s %s \"<\" %s > %s", mkopts, |
| 553 |
> |
sprintf(combuf, "%s%s %s \"<\" %s > %s", c_mkillum, mkopts, |
| 554 |
|
oct0name, vval(ILLUM), illumtmp); |
| 555 |
|
if (runcom(combuf)) { /* run it */ |
| 556 |
< |
fprintf(stderr, "%s: error running mkillum\n", |
| 557 |
< |
progname); |
| 556 |
> |
fprintf(stderr, "%s: error running %s\n", |
| 557 |
> |
progname, c_mkillum); |
| 558 |
|
unlink(illumtmp); |
| 559 |
|
quit(1); |
| 560 |
|
} |
| 561 |
|
/* make octree1 (frozen) */ |
| 562 |
|
if (octreedate) |
| 563 |
< |
sprintf(combuf, "oconv%s -f -i %s %s > %s", ocopts, |
| 564 |
< |
vval(OCTREE), illumtmp, oct1name); |
| 563 |
> |
sprintf(combuf, "%s%s -f -i %s %s > %s", c_oconv, |
| 564 |
> |
ocopts, vval(OCTREE), illumtmp, oct1name); |
| 565 |
|
else if (vdef(MATERIAL)) |
| 566 |
< |
sprintf(combuf, "oconv%s -f %s %s > %s", ocopts, |
| 567 |
< |
vval(MATERIAL), illumtmp, oct1name); |
| 566 |
> |
sprintf(combuf, "%s%s -f %s %s > %s", c_oconv, |
| 567 |
> |
ocopts, vval(MATERIAL), illumtmp, oct1name); |
| 568 |
|
else |
| 569 |
< |
sprintf(combuf, "oconv%s -f %s > %s", ocopts, |
| 569 |
> |
sprintf(combuf, "%s%s -f %s > %s", c_oconv, ocopts, |
| 570 |
|
illumtmp, oct1name); |
| 571 |
|
if (runcom(combuf)) { /* run it */ |
| 572 |
|
fprintf(stderr, |
| 585 |
|
|
| 586 |
|
|
| 587 |
|
static char * |
| 588 |
< |
addarg( /* add argument and advance pointer */ |
| 588 |
> |
addarg( /* append argument and advance pointer */ |
| 589 |
|
register char *op, |
| 590 |
|
register char *arg |
| 591 |
|
) |
| 592 |
|
{ |
| 593 |
+ |
while (*op) |
| 594 |
+ |
op++; |
| 595 |
|
*op = ' '; |
| 596 |
|
while ( (*++op = *arg++) ) |
| 597 |
|
; |
| 608 |
|
|
| 609 |
|
*oo = '\0'; |
| 610 |
|
if (vdef(OCONV)) |
| 611 |
< |
addarg(oo, vval(OCONV)); |
| 611 |
> |
if (vval(OCONV)[0] != '-') { |
| 612 |
> |
atos(c_oconv, sizeof(c_oconv), vval(OCONV)); |
| 613 |
> |
oo = addarg(oo, sskip2(vval(OCONV), 1)); |
| 614 |
> |
} else |
| 615 |
> |
oo = addarg(oo, vval(OCONV)); |
| 616 |
|
} |
| 617 |
|
|
| 618 |
|
|
| 623 |
|
{ |
| 624 |
|
/* BEWARE: This may be called via setdefaults(), so no assumptions */ |
| 625 |
|
|
| 626 |
< |
if (nprocs > 1) { |
| 626 |
> |
if (nprocs > 1) |
| 627 |
|
sprintf(mo, " -n %d", nprocs); |
| 628 |
< |
while (*mo) |
| 610 |
< |
mo++; |
| 611 |
< |
} else |
| 628 |
> |
else |
| 629 |
|
*mo = '\0'; |
| 630 |
|
if (vdef(MKILLUM)) |
| 631 |
< |
addarg(mo, vval(MKILLUM)); |
| 631 |
> |
if (vval(MKILLUM)[0] != '-') { |
| 632 |
> |
atos(c_mkillum, sizeof(c_mkillum), vval(MKILLUM)); |
| 633 |
> |
mo = addarg(mo, sskip2(vval(MKILLUM), 1)); |
| 634 |
> |
} else |
| 635 |
> |
mo = addarg(mo, vval(MKILLUM)); |
| 636 |
|
} |
| 637 |
|
|
| 638 |
|
|
| 688 |
|
hiqopts(op, po); |
| 689 |
|
break; |
| 690 |
|
} |
| 691 |
+ |
if (vdef(RENDER)) |
| 692 |
+ |
op = addarg(op, vval(RENDER)); |
| 693 |
+ |
if (rvdevice != NULL) { |
| 694 |
+ |
if (vdef(RVU)) |
| 695 |
+ |
if (vval(RVU)[0] != '-') { |
| 696 |
+ |
atos(c_rvu, sizeof(c_rvu), vval(RVU)); |
| 697 |
+ |
po = addarg(po, sskip2(vval(RVU), 1)); |
| 698 |
+ |
} else |
| 699 |
+ |
po = addarg(po, vval(RVU)); |
| 700 |
+ |
} else { |
| 701 |
+ |
if (vdef(RPICT)) |
| 702 |
+ |
if (vval(RPICT)[0] != '-') { |
| 703 |
+ |
atos(c_rpict, sizeof(c_rpict), vval(RPICT)); |
| 704 |
+ |
po = addarg(po, sskip2(vval(RPICT), 1)); |
| 705 |
+ |
} else |
| 706 |
+ |
po = addarg(po, vval(RPICT)); |
| 707 |
+ |
} |
| 708 |
|
} |
| 709 |
|
|
| 710 |
|
|
| 773 |
|
sprintf(op, " -av %.2g %.2g %.2g", d, d, d); |
| 774 |
|
op += strlen(op); |
| 775 |
|
op = addarg(op, "-lr 6 -lw .01"); |
| 738 |
– |
if (vdef(RENDER)) |
| 739 |
– |
op = addarg(op, vval(RENDER)); |
| 776 |
|
} |
| 777 |
|
|
| 778 |
|
|
| 823 |
|
} |
| 824 |
|
po = addarg(po, "-pt .08"); |
| 825 |
|
if (vbool(PENUMBRAS)) |
| 826 |
< |
op = addarg(op, "-ds .2 -dj .5"); |
| 826 |
> |
op = addarg(op, "-ds .2 -dj .9"); |
| 827 |
|
else |
| 828 |
|
op = addarg(op, "-ds .3"); |
| 829 |
|
op = addarg(op, "-dt .1 -dc .5 -dr 1 -sj .7 -st .1"); |
| 851 |
|
sprintf(op, " -av %.2g %.2g %.2g", d, d, d); |
| 852 |
|
op += strlen(op); |
| 853 |
|
op = addarg(op, "-lr 8 -lw .002"); |
| 818 |
– |
if (vdef(RENDER)) |
| 819 |
– |
op = addarg(op, vval(RENDER)); |
| 854 |
|
} |
| 855 |
|
|
| 856 |
|
|
| 901 |
|
} |
| 902 |
|
po = addarg(po, "-pt .04"); |
| 903 |
|
if (vbool(PENUMBRAS)) |
| 904 |
< |
op = addarg(op, "-ds .1 -dj .65"); |
| 904 |
> |
op = addarg(op, "-ds .1 -dj .9"); |
| 905 |
|
else |
| 906 |
|
op = addarg(op, "-ds .2"); |
| 907 |
|
op = addarg(op, "-dt .05 -dc .75 -dr 3 -sj 1 -st .01"); |
| 927 |
|
sprintf(op, " -av %.2g %.2g %.2g", d, d, d); |
| 928 |
|
op += strlen(op); |
| 929 |
|
op = addarg(op, "-lr 12 -lw .0005"); |
| 896 |
– |
if (vdef(RENDER)) |
| 897 |
– |
op = addarg(op, vval(RENDER)); |
| 930 |
|
} |
| 931 |
|
|
| 932 |
|
|
| 982 |
|
break; |
| 983 |
|
} |
| 984 |
|
if (vdef(PFILT)) |
| 985 |
< |
po = addarg(po, vval(PFILT)); |
| 985 |
> |
if (vval(PFILT)[0] != '-') { |
| 986 |
> |
atos(c_pfilt, sizeof(c_pfilt), vval(PFILT)); |
| 987 |
> |
po = addarg(po, sskip2(vval(PFILT), 1)); |
| 988 |
> |
} else |
| 989 |
> |
po = addarg(po, vval(PFILT)); |
| 990 |
|
} |
| 991 |
|
|
| 992 |
|
|
| 1232 |
|
return; |
| 1233 |
|
if (sayview) |
| 1234 |
|
myprintview(vw, stdout); |
| 1235 |
< |
sprintf(combuf, "rvu %s%s%s -R %s ", vw, po, opts, rifname); |
| 1235 |
> |
sprintf(combuf, "%s %s%s%s -R %s ", c_rvu, vw, opts, po, rifname); |
| 1236 |
|
if (nprocs > 1) |
| 1237 |
|
sprintf(combuf+strlen(combuf), "-n %d ", nprocs); |
| 1238 |
|
if (rvdevice != NULL) |
| 1241 |
|
sprintf(combuf+strlen(combuf), "-pe %s ", vval(EXPOSURE)); |
| 1242 |
|
strcat(combuf, oct1name); |
| 1243 |
|
if (runcom(combuf)) { /* run it */ |
| 1244 |
< |
fprintf(stderr, "%s: error running rvu\n", progname); |
| 1244 |
> |
fprintf(stderr, "%s: error running %s\n", progname, c_rvu); |
| 1245 |
|
quit(1); |
| 1246 |
|
} |
| 1247 |
|
} |
| 1315 |
|
myprintview(vw, stdout); |
| 1316 |
|
if (!vs[0]) |
| 1317 |
|
sprintf(vs, "%d", vn); |
| 1318 |
< |
sprintf(picfile, "%s_%s.pic", vval(PICTURE), vs); |
| 1318 |
> |
sprintf(picfile, "%s_%s.hdr", vval(PICTURE), vs); |
| 1319 |
|
if (vdef(ZFILE)) |
| 1320 |
|
sprintf(zopt, " -z %s_%s.zbf", vval(ZFILE), vs); |
| 1321 |
|
else |
| 1344 |
|
/* XXX Remember to call finish_process() */ |
| 1345 |
|
/* build rpict command */ |
| 1346 |
|
if (rfdt >= oct1date) { /* recover */ |
| 1347 |
< |
sprintf(combuf, "rpict%s%s%s%s -ro %s %s", |
| 1348 |
< |
rep, po, opts, zopt, rawfile, oct1name); |
| 1347 |
> |
sprintf(combuf, "%s%s%s%s%s -ro %s %s", c_rpict, |
| 1348 |
> |
rep, opts, po, zopt, rawfile, oct1name); |
| 1349 |
|
if (runcom(combuf)) /* run rpict */ |
| 1350 |
|
goto rperror; |
| 1351 |
|
} else { |
| 1352 |
|
if (overture) { /* run overture calculation */ |
| 1353 |
|
sprintf(combuf, |
| 1354 |
< |
"rpict%s %s%s -x 64 -y 64 -ps 1 %s > %s", |
| 1355 |
< |
rep, vw, opts, |
| 1354 |
> |
"%s%s %s%s -x 64 -y 64 -ps 1 %s > %s", |
| 1355 |
> |
c_rpict, rep, vw, opts, |
| 1356 |
|
oct1name, overfile); |
| 1357 |
|
if (runcom(combuf)) { |
| 1358 |
|
fprintf(stderr, |
| 1364 |
|
rmfile(overfile); |
| 1365 |
|
#endif |
| 1366 |
|
} |
| 1367 |
< |
sprintf(combuf, "rpict%s %s %s%s%s%s %s > %s", |
| 1368 |
< |
rep, vw, res, po, opts, |
| 1367 |
> |
sprintf(combuf, "%s%s %s %s%s%s%s %s > %s", |
| 1368 |
> |
c_rpict, rep, vw, res, opts, po, |
| 1369 |
|
zopt, oct1name, rawfile); |
| 1370 |
|
if (pfile != NULL && inchild()) { |
| 1371 |
|
/* rpict persistent mode */ |
| 1372 |
|
if (!silent) |
| 1373 |
|
printf("\t%s\n", combuf); |
| 1374 |
|
fflush(stdout); |
| 1375 |
< |
sprintf(combuf, "rpict%s %s %s%s%s %s > %s", |
| 1376 |
< |
rep, rppopt, res, po, opts, |
| 1377 |
< |
oct1name, rawfile); |
| 1375 |
> |
sprintf(combuf, "%s%s %s %s%s%s %s > %s", |
| 1376 |
> |
c_rpict, rep, rppopt, res, opts, |
| 1377 |
> |
po, oct1name, rawfile); |
| 1378 |
|
fp = popen(combuf, "w"); |
| 1379 |
|
if (fp == NULL) |
| 1380 |
|
goto rperror; |
| 1389 |
|
if (!vdef(RAWFILE) || strcmp(vval(RAWFILE),vval(PICTURE))) { |
| 1390 |
|
/* build pfilt command */ |
| 1391 |
|
if (mult > 1) |
| 1392 |
< |
sprintf(combuf, "pfilt%s -x /%d -y /%d %s > %s", |
| 1393 |
< |
pfopts, mult, mult, rawfile, picfile); |
| 1392 |
> |
sprintf(combuf, "%s%s -x /%d -y /%d %s > %s", |
| 1393 |
> |
c_pfilt, pfopts, mult, mult, |
| 1394 |
> |
rawfile, picfile); |
| 1395 |
|
else |
| 1396 |
< |
sprintf(combuf, "pfilt%s %s > %s", pfopts, |
| 1397 |
< |
rawfile, picfile); |
| 1396 |
> |
sprintf(combuf, "%s%s %s > %s", c_pfilt, |
| 1397 |
> |
pfopts, rawfile, picfile); |
| 1398 |
|
if (runcom(combuf)) { /* run pfilt */ |
| 1399 |
|
fprintf(stderr, |
| 1400 |
|
"%s: error filtering view %s\n\t%s removed\n", |
| 1405 |
|
} |
| 1406 |
|
/* remove/rename raw file */ |
| 1407 |
|
if (vdef(RAWFILE)) { |
| 1408 |
< |
sprintf(combuf, "%s_%s.pic", vval(RAWFILE), vs); |
| 1408 |
> |
sprintf(combuf, "%s_%s.hdr", vval(RAWFILE), vs); |
| 1409 |
|
mvfile(rawfile, combuf); |
| 1410 |
|
} else |
| 1411 |
|
rmfile(rawfile); |