--- ray/src/cv/bsdf2ttree.c 2013/03/22 02:15:06 2.11 +++ ray/src/cv/bsdf2ttree.c 2013/03/23 04:14:50 2.14 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: bsdf2ttree.c,v 2.11 2013/03/22 02:15:06 greg Exp $"; +static const char RCSid[] = "$Id: bsdf2ttree.c,v 2.14 2013/03/23 04:14:50 greg Exp $"; #endif /* * Load measured BSDF interpolant and write out as XML file with tensor tree. @@ -122,7 +122,7 @@ eval_isotropic(char *funame) /* run through directions */ for (ix = 0; ix < sqres/2; ix++) { RBFNODE *rbf = NULL; - iovec[0] = (ix+.5)/sqres - 1.; + iovec[0] = 2.*(ix+.5)/sqres - 1.; iovec[1] = .0; iovec[2] = input_orient * sqrt(1. - iovec[0]*iovec[0]); if (funame == NULL) @@ -255,10 +255,10 @@ main(int argc, char *argv[]) case 't': switch (argv[i][2]) { case '3': - single_plane_incident = 0; + single_plane_incident = 1; break; case '4': - single_plane_incident = 1; + single_plane_incident = 0; break; case '\0': pctcull = atof(argv[++i]); @@ -276,8 +276,12 @@ main(int argc, char *argv[]) if (single_plane_incident >= 0) { /* function-based BSDF? */ void (*evf)(char *s) = single_plane_incident ? &eval_isotropic : &eval_anisotropic; - if (i != argc-1 || fundefined(argv[i]) != 6) + if (i != argc-1 || fundefined(argv[i]) != 6) { + fprintf(stderr, + "%s: need single function with 6 arguments: bsdf(ix,iy,iz,ox,oy,oz)\n", + progname); goto userr; + } xml_prologue(argc, argv); /* start XML output */ if (dofwd) { input_orient = -1; @@ -297,7 +301,7 @@ main(int argc, char *argv[]) return(0); } if (i < argc) { /* open input files if given */ - xml_prologue(argc, argv); /* start XML output */ + int nbsdf = 0; for ( ; i < argc; i++) { /* interpolate each component */ FILE *fpin = fopen(argv[i], "rb"); if (fpin == NULL) { @@ -308,6 +312,8 @@ main(int argc, char *argv[]) if (!load_bsdf_rep(fpin)) return(1); fclose(fpin); + if (!nbsdf++) /* start XML on first dist. */ + xml_prologue(argc, argv); if (single_plane_incident) eval_isotropic(NULL); else