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

Comparing ray/src/gen/gensurf.c (file contents):
Revision 2.27 by greg, Sun Jun 14 03:54:23 2020 UTC vs.
Revision 2.29 by greg, Thu Apr 1 14:52:55 2021 UTC

# Line 58 | Line 58 | double  l_hermite(), l_bezier(), l_bspline(), l_datava
58  
59   typedef struct {
60          int  valid;     /* point is valid (vertex number) */
61 <        int  nvalid;    /* normal is valid */
61 >        int  nvalid;    /* normal is valid (normal number) */
62          FVECT  p;       /* vertex position */
63          FVECT  n;       /* average normal */
64          RREAL  uv[2];   /* (u,v) position */
# Line 78 | Line 78 | int norminterp(FVECT resmat[4], POINT *p0, POINT *p1,
78  
79  
80   int
81 < main(argc, argv)
82 < int  argc;
83 < char  *argv[];
81 > main(int argc, char *argv[])
82   {
83          POINT  *row0, *row1, *row2, *rp;
84          int  i, j, m, n;
# Line 160 | Line 158 | char  *argv[];
158          compnorms(row0, row1, row2, n);
159          if (objout) {
160                  printf("\nusemtl %s\n\n", modname);
161 +                printf("o %s\n\n", surfname);
162                  putobjrow(row1, n);
163          }
164                                                  /* for each row */
# Line 309 | Line 308 | putobjrow(                     /* output vertex row to .OBJ */
308          int  n
309   )
310   {
311 +        static FVECT  prevNorm;
312 +
313          for ( ; n-- >= 0; rp++) {
314                  if (!rp->valid)
315                          continue;
316                  fputs("v ", stdout);
317                  pvect(rp->p);
318 <                if (smooth && !ZEROVECT(rp->n)) {
318 >                rp->valid = ++nverts;
319 >                printf("\tvt %.9g %.9g\n", rp->uv[0], rp->uv[1]);
320 >                if (!smooth || ZEROVECT(rp->n))
321 >                        rp->nvalid = 0;
322 >                else if (VABSEQ(rp->n, prevNorm))
323 >                        rp->nvalid = nnorms;
324 >                else {
325                          printf("\tvn %.9g %.9g %.9g\n",
326                                          rp->n[0], rp->n[1], rp->n[2]);
327                          rp->nvalid = ++nnorms;
328 <                } else
329 <                        rp->nvalid = 0;
323 <                printf("\tvt %.9g %.9g\n", rp->uv[0], rp->uv[1]);
324 <                rp->valid = ++nverts;
328 >                        VCOPY(prevNorm, rp->n);
329 >                }
330          }
331   }
332  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines