Movie Animation Scripts
by Scott Miller · in General Game Discussion · 06/24/2004 (8:56 am) · 2 replies
I made a perl script to take a collection of files and make a .movie script out of them. If any one's interested, it might save a bit of typing and error checking.
-Scott
=================================================
Make Reaction Engine Animation (mkreanim)
=================================================
#!/usr/bin/perl
$NumberArgs=@ARGV;
if ($NumberArgs < 4)
{
print DAT "mkreanim [files to use] [movie file] [movie name] [speed]\n";
print DAT "outputs a reaction engine movie\n";
exit;
}
$MOVIEFILE=@ARGV[1];
$MOVIENAME=@ARGV[2];
$MOVIESPEED=@ARGV[3];
$MOVIEFRAME=0;
$dirtoget=".";
opendir(IMD, $dirtoget) || die("Cannot open directory");
@dirfiles = readdir(IMD);
closedir(IMD);
$i=0;
foreach $NAME (@dirfiles)
{
if ( $NAME =~ /$ARGV[0]/ )
{
@LISTFILES[$i]=$NAME;
++$i;
}
}
$LISTFILES_LENGTH = @LISTFILES;
if ($LISTFILES_LENGTH == 0)
{
print "no files matched regexp @ARGV[0] \n";
exit;
}
open(DAT,">>$MOVIEFILE") || die("Cannot Open File");
#print DAT DAT @raw_data;
#close(DAT);
print DAT "movie $MOVIENAME =\n";
print DAT "{\n";
print DAT " cast = \n";
print DAT " {\n";
$dirtoget=".";
opendir(IMD, $dirtoget) || die("Cannot open directory");
@dirfiles = readdir(IMD);
closedir(IMD);
$i=0;
foreach $NAME (@dirfiles)
{
if ( $NAME =~ /$ARGV[0]/ )
{
@LISTFILES[$i]=$NAME;
++$i;
}
}
foreach $NAME (@LISTFILES)
{
++$MOVIEFRAME;
$NEWNAME = $MOVIENAME;
$NEWNAME =~ s/$/$MOVIEFRAME/ ;
print DAT " bitmap $NEWNAME = { file = \"$NAME\"; transparency = 255,255,255; }\n";
}
print DAT " }\n";
print DAT " speed = $MOVIESPEED;\n";
$MOVIEFRAME=0;
++$MOVIEFRAME;
$NEWNAME=" frame X \"start\" = \n";
$NEWNAME =~ s/X/$MOVIEFRAME/;
print DAT "$NEWNAME";
print DAT " {\n";
$NEWNAME = $MOVIENAME;
$NEWNAME =~ s/$/$MOVIEFRAME/;
print DAT " keyframe \"$MOVIENAME\" = \n";
print DAT " {\n";
print DAT " layer = 13;\n";
print DAT " actor = $NEWNAME;\n";
print DAT " position = 0,0;\n";
print DAT " scale = 1,1;\n";
print DAT " }\n";
print DAT " }\n";
shift(@LISTFILES);
foreach $NAME (@LISTFILES)
{
++$MOVIEFRAME;
$NEWNAME = $MOVIENAME;
$NEWNAME =~ s/$/$MOVIEFRAME/;
print DAT " frame $MOVIEFRAME = { keyframe \"$MOVIENAME\" = { actor = $NEWNAME; } }\n";
}
++$MOVIEFRAME;
print DAT " frame $MOVIEFRAME = { goto = \"start\"; }\n";
print DAT "}\n";
close(DAT);
-Scott
=================================================
Make Reaction Engine Animation (mkreanim)
=================================================
#!/usr/bin/perl
$NumberArgs=@ARGV;
if ($NumberArgs < 4)
{
print DAT "mkreanim [files to use] [movie file] [movie name] [speed]\n";
print DAT "outputs a reaction engine movie\n";
exit;
}
$MOVIEFILE=@ARGV[1];
$MOVIENAME=@ARGV[2];
$MOVIESPEED=@ARGV[3];
$MOVIEFRAME=0;
$dirtoget=".";
opendir(IMD, $dirtoget) || die("Cannot open directory");
@dirfiles = readdir(IMD);
closedir(IMD);
$i=0;
foreach $NAME (@dirfiles)
{
if ( $NAME =~ /$ARGV[0]/ )
{
@LISTFILES[$i]=$NAME;
++$i;
}
}
$LISTFILES_LENGTH = @LISTFILES;
if ($LISTFILES_LENGTH == 0)
{
print "no files matched regexp @ARGV[0] \n";
exit;
}
open(DAT,">>$MOVIEFILE") || die("Cannot Open File");
#print DAT DAT @raw_data;
#close(DAT);
print DAT "movie $MOVIENAME =\n";
print DAT "{\n";
print DAT " cast = \n";
print DAT " {\n";
$dirtoget=".";
opendir(IMD, $dirtoget) || die("Cannot open directory");
@dirfiles = readdir(IMD);
closedir(IMD);
$i=0;
foreach $NAME (@dirfiles)
{
if ( $NAME =~ /$ARGV[0]/ )
{
@LISTFILES[$i]=$NAME;
++$i;
}
}
foreach $NAME (@LISTFILES)
{
++$MOVIEFRAME;
$NEWNAME = $MOVIENAME;
$NEWNAME =~ s/$/$MOVIEFRAME/ ;
print DAT " bitmap $NEWNAME = { file = \"$NAME\"; transparency = 255,255,255; }\n";
}
print DAT " }\n";
print DAT " speed = $MOVIESPEED;\n";
$MOVIEFRAME=0;
++$MOVIEFRAME;
$NEWNAME=" frame X \"start\" = \n";
$NEWNAME =~ s/X/$MOVIEFRAME/;
print DAT "$NEWNAME";
print DAT " {\n";
$NEWNAME = $MOVIENAME;
$NEWNAME =~ s/$/$MOVIEFRAME/;
print DAT " keyframe \"$MOVIENAME\" = \n";
print DAT " {\n";
print DAT " layer = 13;\n";
print DAT " actor = $NEWNAME;\n";
print DAT " position = 0,0;\n";
print DAT " scale = 1,1;\n";
print DAT " }\n";
print DAT " }\n";
shift(@LISTFILES);
foreach $NAME (@LISTFILES)
{
++$MOVIEFRAME;
$NEWNAME = $MOVIENAME;
$NEWNAME =~ s/$/$MOVIEFRAME/;
print DAT " frame $MOVIEFRAME = { keyframe \"$MOVIENAME\" = { actor = $NEWNAME; } }\n";
}
++$MOVIEFRAME;
print DAT " frame $MOVIEFRAME = { goto = \"start\"; }\n";
print DAT "}\n";
close(DAT);
#2
06/24/2004 (11:07 am)
Mostly I'm just taking a look at it, but possibly some sort of educational program.
Torque Owner Thomas Glennow