--- ray/src/common/readwfobj.c 2020/03/30 18:28:35 2.1 +++ ray/src/common/readwfobj.c 2020/05/01 18:55:34 2.3 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: readwfobj.c,v 2.1 2020/03/30 18:28:35 greg Exp $"; +static const char RCSid[] = "$Id: readwfobj.c,v 2.3 2020/05/01 18:55:34 greg Exp $"; #endif /* * readobj.c @@ -12,7 +12,7 @@ static const char RCSid[] = "$Id: readwfobj.c,v 2.1 20 #include "rtio.h" #include "rterror.h" #include "fvect.h" -#include +#include "paths.h" #include #include "objutil.h" @@ -115,42 +115,6 @@ syntax(const char *fn, const char *er) error(USER, errmsg); } -/* Add a vertex to our scene */ -static void -add_vertex(Scene *sc, double x, double y, double z) -{ - sc->vert = chunk_alloc(Vertex, sc->vert, sc->nverts); - sc->vert[sc->nverts].p[0] = x; - sc->vert[sc->nverts].p[1] = y; - sc->vert[sc->nverts].p[2] = z; - sc->vert[sc->nverts++].vflist = NULL; -} - -/* Add a texture coordinate to our scene */ -static void -add_texture(Scene *sc, double u, double v) -{ - sc->tex = chunk_alloc(TexCoord, sc->tex, sc->ntex); - sc->tex[sc->ntex].u = u; - sc->tex[sc->ntex].v = v; - sc->ntex++; -} - -/* Add a surface normal to our scene */ -static int -add_normal(Scene *sc, double xn, double yn, double zn) -{ - FVECT nrm; - - nrm[0] = xn; nrm[1] = yn; nrm[2] = zn; - if (normalize(nrm) == .0) - return(0); - sc->norm = chunk_alloc(Normal, sc->norm, sc->nnorms); - VCOPY(sc->norm[sc->nnorms], nrm); - sc->nnorms++; - return(1); -} - /* combine multi-group name into single identifier w/o spaces */ static char * group_name(int ac, char **av) @@ -179,28 +143,6 @@ group_name(int ac, char **av) return(nambuf); } -/* set current group */ -static void -set_group(Scene *sc, const char *nm) -{ - sc->lastgrp = findName(nm, (const char **)sc->grpname, sc->ngrps); - if (sc->lastgrp >= 0) - return; - sc->grpname = chunk_alloc(char *, sc->grpname, sc->ngrps); - sc->grpname[sc->lastgrp=sc->ngrps++] = savqstr((char *)nm); -} - -/* set current material */ -static void -set_material(Scene *sc, const char *nm) -{ - sc->lastmat = findName(nm, (const char **)sc->matname, sc->nmats); - if (sc->lastmat >= 0) - return; - sc->matname = chunk_alloc(char *, sc->matname, sc->nmats); - sc->matname[sc->lastmat=sc->nmats++] = savqstr((char *)nm); -} - /* Add a new face to scene */ static int add_face(Scene *sc, const VNDX ondx, int ac, char *av[]) @@ -288,7 +230,7 @@ loadOBJ(Scene *sc, const char *fspec) syntax(fspec, "bad vertex"); goto failure; } - add_vertex(sc, atof(argv[1]), + addVertex(sc, atof(argv[1]), atof(argv[2]), atof(argv[3])); break; @@ -297,7 +239,7 @@ loadOBJ(Scene *sc, const char *fspec) goto unknown; if (badarg(argc-1,argv+1,"ff")) goto unknown; - add_texture(sc, atof(argv[1]), atof(argv[2])); + addTexture(sc, atof(argv[1]), atof(argv[2])); break; case 'n': /* normal */ if (argv[0][2]) @@ -306,9 +248,9 @@ loadOBJ(Scene *sc, const char *fspec) syntax(fspec, "bad normal"); goto failure; } - if (!add_normal(sc, atof(argv[1]), + if (addNormal(sc, atof(argv[1]), atof(argv[2]), - atof(argv[3]))) { + atof(argv[3])) < 0) { syntax(fspec, "zero normal"); goto failure; } @@ -334,7 +276,7 @@ loadOBJ(Scene *sc, const char *fspec) syntax(fspec, "bad # arguments"); goto failure; } - set_material(sc, argv[1]); + setMaterial(sc, argv[1]); break; case 'o': /* object name */ case 'g': /* group name */ @@ -342,7 +284,7 @@ loadOBJ(Scene *sc, const char *fspec) syntax(fspec, "missing argument"); goto failure; } - set_group(sc, group_name(argc-1, argv+1)); + setGroup(sc, group_name(argc-1, argv+1)); break; case '#': /* comment */ continue;