--- ray/src/cv/mgflib/3ds2mgf.c 1996/02/08 13:29:33 1.2 +++ ray/src/cv/mgflib/3ds2mgf.c 1998/01/16 10:47:27 1.5 @@ -47,8 +47,8 @@ extern unsigned _stklen = 16384; #define MGF 4 #define RAW 99 -#define DEG(x) ((180.0/M_PI)*(x)) -#define RAD(x) ((M_PI/180.0)*(x)) +#define DEG(x) ((double)(180.0/M_PI)*(x)) +#define RAD(x) ((double)(M_PI/180.0)*(x)) #ifndef M_PI #define M_PI (3.14159265358979323846) @@ -351,7 +351,9 @@ char *read_string (void); float findfov (float lens); int read_mgfmatname (char *s, int n, FILE *f); +char *progname; + int main (int argc, char *argv[]) { char meshfname[128]; @@ -453,7 +455,6 @@ int main (int argc, char *argv[]) void process_args (int argc, char *argv[]) { int i; - char *progname; char *env_opt, *option; printf("\n\nAutodesk 3D Studio to Raytracer file Translator. Feb/96\n"); @@ -473,7 +474,7 @@ void process_args (int argc, char *argv[]) printf (" -b - Convert this object as a box\n"); printf (" +i, -i - Turn internal bounding on or off\n"); printf (" +v, -v - Turn verbose status messages on or off\n"); - printf (" -op - Output to POV-Ray 2.0 format (default)\n"); + printf (" -op - Output to POV-Ray 2.0 format\n"); printf (" -op1 - Output to POV-Ray 1.0 format\n"); printf (" -ov - Output to Vivid format\n"); printf (" -ol - Output to poLyray format\n"); @@ -497,7 +498,7 @@ void process_args (int argc, char *argv[]) else if (!strcmp(progname, "3ds2raw")) format = RAW; else - format = MGF; /* default if program name strange */ + format = POV20; /* default if program name strange */ strcpy (inname, ""); strcpy (outname, ""); @@ -1011,7 +1012,7 @@ void write_light (FILE *f, char *name, Vector pos, Col if (name[0]) fprintf (f, "o %s\n", name); fprintf (f, "m\n\tsides 1\n\tc\n\t\t\tcmix %.3f R %.3f G %.3f B\n\ted %e\n", CIE_Y_r*col.red, CIE_Y_g*col.green, CIE_Y_b*col.blue, - 10000.0*(CIE_Y_r*col.red + CIE_Y_g*col.green + CIE_Y_b*col.blue)); + 100000.0*(CIE_Y_r*col.red + CIE_Y_g*col.green + CIE_Y_b*col.blue)); fprintf (f, "v c =\n\tp %.4f %.4f %.4f\nsph c .01\n", pos[X], pos[Y], pos[Z]); if (name[0]) fprintf (f, "o\n"); @@ -1086,7 +1087,7 @@ void write_spot (FILE *f, char *name, Vector pos, Vect fprintf (f, "# hotspot: %.2f\n# falloff: %.2f\n", hotspot, falloff); fprintf (f, "m\n\tsides 1\n\tc\n\t\t\tcmix %.3f R %.3f G %.3f B\n\ted %e\n", CIE_Y_r*col.red, CIE_Y_g*col.green, CIE_Y_b*col.blue, - 10000.0*(CIE_Y_r*col.red + CIE_Y_g*col.green + CIE_Y_b*col.blue)); + 100000.0*(CIE_Y_r*col.red + CIE_Y_g*col.green + CIE_Y_b*col.blue)); fprintf (f, "v c =\n\tp %.4f %.4f %.4f\n\tn %.4f %.4f %.4f\n", pos[X], pos[Y], pos[Z], target[X]-pos[X], target[Y]-pos[Y], target[Z]-pos[Z]); @@ -2376,7 +2377,10 @@ void parse_3ds (Chunk *mainchunk) do { start_chunk (&chunk); - + if (feof(in)) { + fprintf(stderr, "%s: unexpected EOF\n", progname); + break; + } if (chunk.end <= mainchunk->end) { switch (chunk.tag) { case 0x3D3D: parse_mdata (&chunk);