ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/cv/bsdf2rad.c
(Generate patch)

Comparing ray/src/cv/bsdf2rad.c (file contents):
Revision 2.1 by greg, Tue Oct 22 04:29:27 2013 UTC vs.
Revision 2.2 by greg, Thu Oct 31 18:03:13 2013 UTC

# Line 26 | Line 26 | char   *progname;
26   int
27   main(int argc, char *argv[])
28   {
29 +        int     showPeaks = 0;
30          char    buf[128];
31          FILE    *fp;
32          RBFNODE *rbf;
# Line 34 | Line 35 | main(int argc, char *argv[])
35          int     i, j, n;
36  
37          progname = argv[0];
38 +        if (argc > 1 && !strcmp(argv[1], "-p")) {
39 +                ++showPeaks;
40 +                ++argv; --argc;
41 +        }
42          if (argc < 4) {
43 <                fprintf(stderr, "Usage: %s bsdf.sir theta1 phi1 .. > output.rad\n", argv[0]);
43 >                fprintf(stderr, "Usage: %s [-p] bsdf.sir theta1 phi1 .. > output.rad\n", progname);
44                  return(1);
45          }
46                                                  /* load input */
47          if ((fp = fopen(argv[1], "rb")) == NULL) {
48                  fprintf(stderr, "%s: cannot open BSDF interpolant '%s'\n",
49 <                                argv[0], argv[1]);
49 >                                progname, argv[1]);
50                  return(1);
51          }
52          if (!load_bsdf_rep(fp))
53                  return(1);
54          fclose(fp);
55          min_log = log(bsdf_min*.5);
56 <                                                /* output surface(s) */
56 >                                                /* output BSDF rep. */
57          for (n = 0; (n < 6) & (2*n+3 < argc); n++) {
53                printf("void trans tmat\n0\n0\n7 %f %f %f .04 .04 .9 1\n",
54                                colarr[n][0], colarr[n][1], colarr[n][2]);
55                fflush(stdout);
56                sprintf(buf, "gensurf tmat bsdf - - - %d %d", GRIDRES-1, GRIDRES-1);
57                fp = popen(buf, "w");
58                if (fp == NULL) {
59                        fprintf(stderr, "%s: cannot open '| %s'\n", argv[0], buf);
60                        return(1);
61                }
58                  dir[2] = sin((M_PI/180.)*atof(argv[2*n+2]));
59                  dir[0] = dir[2] * cos((M_PI/180.)*atof(argv[2*n+3]));
60                  dir[1] = dir[2] * sin((M_PI/180.)*atof(argv[2*n+3]));
# Line 70 | Line 66 | main(int argc, char *argv[])
66                          fputs("NULL RBF\n", stderr);
67                  else
68                          fprintf(stderr, "Hemispherical reflectance: %.3f\n", rbf->vtotal);
69 +                printf("void trans tmat\n0\n0\n7 %f %f %f .04 .04 .9 1\n",
70 +                                colarr[n][0], colarr[n][1], colarr[n][2]);
71 +                if (showPeaks && rbf != NULL) {
72 +                        printf("void plastic pmat\n0\n0\n5 %f %f %f .04 .08\n",
73 +                                1.-colarr[n][0], 1.-colarr[n][1], 1.-colarr[n][2]);
74 +                        for (i = 0; i < rbf->nrbf; i++) {
75 +                                ovec_from_pos(dir, rbf->rbfa[i].gx, rbf->rbfa[i].gy);
76 +                                bsdf = eval_rbfrep(rbf, dir) / (output_orient*dir[2]);
77 +                                bsdf = log(bsdf) - min_log;
78 +                                printf("pmat sphere p%d\n0\n0\n4 %f %f %f %f\n",
79 +                                        i+1, dir[0]*bsdf, dir[1]*bsdf, dir[2]*bsdf,
80 +                                                .007*bsdf);
81 +                        }
82 +                }
83 +                fflush(stdout);
84 +                sprintf(buf, "gensurf tmat bsdf - - - %d %d", GRIDRES-1, GRIDRES-1);
85 +                fp = popen(buf, "w");
86 +                if (fp == NULL) {
87 +                        fprintf(stderr, "%s: cannot open '| %s'\n", progname, buf);
88 +                        return(1);
89 +                }
90                  for (i = 0; i < GRIDRES; i++)
91                      for (j = 0; j < GRIDRES; j++) {
92                          ovec_from_pos(dir, i, j);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines