| 12 |
|
my $octree = "$td/bv$$.oct"; |
| 13 |
|
my $ambf = "$td/af$$.amb"; |
| 14 |
|
my $raddev = "x11"; # default output device. Overwrite with -o |
| 15 |
< |
my $qual = "Low"; |
| 16 |
< |
my $vw = "def"; |
| 15 |
> |
my $qual = "Med"; |
| 16 |
> |
my $usetrad = 0; |
| 17 |
|
|
| 18 |
< |
my $opts = ""; # Options common to rad |
| 18 |
> |
my @range; # BSDF min and max range |
| 19 |
> |
my $opts = ""; # Options common to rad |
| 20 |
|
my $rendopts = "-w-"; # For render= line in rif file |
| 21 |
|
|
| 22 |
|
while (@ARGV) { |
| 25 |
|
$opts .= " $_"; |
| 26 |
|
} elsif (m/^-v\b/) { # standard view |
| 27 |
|
# Let rad do any error handling... |
| 28 |
< |
$vw = $ARGV[1]; |
| 28 |
> |
$opts .= qq( -v "$ARGV[1]"); |
| 29 |
|
shift @ARGV; |
| 30 |
|
} elsif (m/^-[nN]\b/) { # No. of parallel processes |
| 31 |
|
$opts .= ' -N ' . $ARGV[1]; |
| 39 |
|
} elsif ((m/^-V\b/) or (m/^-e\b/)) { # print view, explicate variables |
| 40 |
|
# Think of those two as '-verbose'. |
| 41 |
|
$opts .= " $_"; |
| 42 |
+ |
} elsif (m/^-t\b/) { # start trad instead of rad |
| 43 |
+ |
$usetrad = 1; |
| 44 |
+ |
} elsif (m/^-r/) { # specified range for BSDF |
| 45 |
+ |
@range = ("-r", $ARGV[1], $ARGV[2]); |
| 46 |
+ |
shift @ARGV; shift @ARGV; |
| 47 |
|
} elsif (m/^-\w/) { |
| 48 |
|
die("bsdfview: Bad option: $_\n"); |
| 49 |
|
} else { |
| 54 |
|
|
| 55 |
|
# We need at least one XML or SIR file |
| 56 |
|
if ($#ARGV < 0) { |
| 57 |
< |
die("Missing input XML or SIR file(s)\n"); |
| 57 |
> |
die("bsdfview: missing input XML or SIR file(s)\n"); |
| 58 |
|
} |
| 59 |
|
|
| 60 |
+ |
if (length($opts) and $usetrad) { |
| 61 |
+ |
die("bsdfview: rad options not supported when calling trad (-t)\n"); |
| 62 |
+ |
} |
| 63 |
+ |
|
| 64 |
|
my @objects = @ARGV; |
| 65 |
|
|
| 66 |
|
# Make this work under Windoze |
| 82 |
|
|
| 83 |
|
if (-e $rif) { # RIF already exists? |
| 84 |
|
print "Attempting to run with existing rad input file '$rif'\n"; |
| 85 |
< |
system "rad -o $raddev -w -v $vw $opts $rif QUA=$qual"; |
| 85 |
> |
if ($usetrad) { |
| 86 |
> |
system "trad $rif"; |
| 87 |
> |
} else { |
| 88 |
> |
system "rad -o $raddev -w $opts $rif QUA=$qual"; |
| 89 |
> |
} |
| 90 |
|
die("\nTry removing '$rif' and starting again\n\n") if $?; |
| 91 |
|
exit; |
| 92 |
|
} |
| 93 |
|
|
| 94 |
+ |
if ($objects[0] =~ /\.xml$/i) { |
| 95 |
+ |
system "checkBSDF $objects[0]"; |
| 96 |
+ |
die "Bad XML input\n" if ( $? ); |
| 97 |
+ |
} |
| 98 |
+ |
|
| 99 |
|
print "bsdfview: creating rad input file '$rif'\n"; |
| 100 |
|
|
| 101 |
< |
my $scene = qq("!bsdf2rad @objects"); # let bsdf2rad do complaining |
| 101 |
> |
my $scene = qq("!bsdf2rad @range @objects"); # let bsdf2rad do complaining |
| 102 |
|
|
| 103 |
|
my $objects = join(' ', @objects); |
| 104 |
|
open(FH, ">$rif") or |
| 114 |
|
OCTREE= $octree |
| 115 |
|
oconv= -w -f |
| 116 |
|
AMBF= $ambf |
| 117 |
< |
QUAL = $qual |
| 117 |
> |
QUAL= $qual |
| 118 |
|
render= $rendopts |
| 119 |
|
view= def -vp 0 -50 50 -vd 0 50 -50 -vh 45 -vv 30 |
| 120 |
|
view= fr -vp 15 -30 30 -vd 0 30 -30 |
| 126 |
|
EndOfRif |
| 127 |
|
close(FH); |
| 128 |
|
|
| 129 |
< |
system "rad -o $raddev -v $vw $opts $rif"; |
| 130 |
< |
|
| 129 |
> |
if ($usetrad) { |
| 130 |
> |
system "rad -v 0 $rif ; trad $rif"; |
| 131 |
> |
} else { |
| 132 |
> |
system "rad -o $raddev $opts $rif"; |
| 133 |
> |
} |
| 134 |
|
#EOF |