home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
oct93
/
graphics
/
graphtal.lha
/
Graphtal
/
Examples
/
treecone
< prev
next >
Wrap
Text File
|
1992-11-03
|
3KB
|
108 lines
#!/bin/sh
#
# Copyright (C) 1992, Christoph Streit (streit@iam.unibe.ch)
# All rights reserved.
#
# This software may be freely copied, modified, and redistributed
# provided that this copyright notice is preserved on all copies.
#
# You may not distribute this software, in whole or in part, as part of
# any commercial product without the express consent of the authors.
#
# There is no warranty or other guarantee of fitness of this software
# for any purpose. It is provided solely "as is".
#
# Cone slides over a tree (uses treecone.anim.lsys).
#
# usage: treecone [-R resX resY] [-O outfile]
# [-d rayshade|flat] numberOfFrames
#
#
nawk '
BEGIN {
resX = 150;
resY = 150;
outfile = "tree.rle";
renderer = "flat";
if (ARGC <= 1)
usage();
#
# Parse command line options.
#
while (++i < ARGC-1) {
if (ARGV[i] ~ /^-R$/) {
if (((ARGC-i) > 3) &&
((ARGV[i+1] ~ /^[0-9]+$/) && (ARGV[i+2] ~ /^[0-9]+$/))) {
resX = ARGV[++i];
resY = ARGV[++i];
}
else
usage();
}
else if (ARGV[i] ~ /^-O$/) {
if ((ARGC-i) > 2)
outfile = ARGV[++i];
else
usage();
}
else if (ARGV[i] ~ /^-d$/) {
if ((ARGC-i) > 2 && (ARGV[i+1] ~ /^(rayshade|flat)$/))
renderer = ARGV[++i];
else
usage();
}
else if (i < ARGC-1)
usage();
else
break;
}
#
# Get number of frames to be rendered.
#
if ((i >= ARGC) || (ARGV[i] !~ /^[0-9]+$/))
usage();
else
numberOfFrames = ARGV[i];
#
# Render images...
#
for (i=0; i<numberOfFrames; i++) {
if (renderer == "flat")
cmd = "graphtal -q -R " resX " " resY \
" -Diter=" i " -DnumberOfFrames=" numberOfFrames \
" -d flat treecone.anim.lsys | ppmtorle | rleflip -v" \
" > _frame" i ".rle";
else
cmd = "graphtal -q -s -R " resX " " resY \
" -Diter=" i " -DnumberOfFrames=" numberOfFrames \
" -d rayshade treecone.anim.lsys;" \
" rayshade -S 2 default.ray > _frame" i ".rle";
print cmd;
if (system(cmd)) exit(1);
if (i == 0) {
print "mv _frame" i ".rle " outfile;
system("mv _frame" i ".rle " outfile);
}
else {
print "rlecat -o tmp.rle " outfile " _frame" i ".rle";
system ("rlecat -o tmp.rle " outfile " _frame" i ".rle");
print "mv tmp.rle " outfile;
system ("mv tmp.rle " outfile);
system("rm _frame" i ".rle");
}
}
}
function usage()
{
print "usage: treecone [-R resX resY] [-O outfile]";
print " [-d rayshade|flat] numberOfFrames\n";
exit(1);
}
' $*