#!/net/local/bin/perl -w $flip = 0; if ((@ARGV > 0) && ($ARGV[0] =~ "-f")) { print STDERR "flipping\n"; $flip = 1; shift @ARGV; }; while (<>) { ($_,@rest) = split; chop $rest[0]; #remove trailing : on index # print "verb $_ index $rest[0]\n"; if ($_ =~ "pnt") { if ($rest[0] == 0) { #spit out front matter for 1st point print "#VRML V1.0 ascii\n\nSeparator {\n\tMaterial { diffuseColor 0.9 0.6 0.6 }\n\tCoordinate3 {\n\t\tpoint [\n"; }; print "\t\t\t$rest[1] $rest[2] $rest[3],\n"; } elsif ($_ =~ "poly") { if ($rest[0] == 0) { #spit out separator info print "\t\t]\n\t}\n\tIndexedFaceSet {\n\t\tcoordIndex [\n\t\t\t"; } shift @rest; shift @rest; if ($flip > 0) { @rest = reverse @rest; } while (@rest) { print "$rest[0], "; shift @rest; }; print "-1,\n\t\t\t"; } elsif ($_ =~ "surf") { if ($rest[0] == 0) { #print ending delimiters print "\n\t\t]\n\t}\n}\n"; } } }