Blog --- MA_Screenplay ist fertig
29.12.2024 - 14:00 Uhr

Tutorial bei 5 Sekunden
Mit
MA_Screenplay ist endlich eines meiner bisher komplexesten Povray-Pakete fertig geworden. Es hilft bei der Verwirklichung langer Animationen, ohne Überblick und Geduld zu verlieren.
Zentraler Baustein ist eine Zeitleiste, in der ganz gemütlich ein zeitlicher Ablauf der zu erledigenden Dinge angegeben werden kann. Davon getrennt ist die spätere Erstellung und Darstellung der Objekte.
Durch die strikte Trennung beider Teile ist es möglich, sich auf eine Sache zu konzentrieren. Erst lässt man den Gedanken freien Lauf und gibt an, wann etwas zu tun ist, später kümmert man sich um die tatsächliche Umsetzung, ohne sich über den zeitlichen Verlauf den Kopf zu zerbrechen.
Ein kurzes Beispiel, wie ein simples Screenplay-Skript aussieht.
#version 3.7;
#include "ma_helpers.inc"
#include "ma_screenplay.inc"
#declare LigVector = <0,10,0>*100;
#declare CamLookAt = <0,3,0>;
#declare CamLocation = <1 , 5 ,-15>;
#declare CamAngle = 60;
#declare SCR_FPS = 10;
#declare SCR_SecondStart = 0;
#declare SCR_SecondEnd = 10;
#declare SCR_SecondFreeze = 5;
#macro SCR_Init ()
SCR_RegisterScene ("first", 10)
#end
#macro SCR_Timeline ( mSimulation )
//Say what scene you define
SCR_SetScene("first")
//Define the screenplay
#local mName = "sphere";
#local mProp = "translate-y";
#local mValueStart = 0;
#local mValueEnd = 8;
#local mSecond0 = 0.0;
#local mSecond1 = 0.0;
#local mSecond2 = 10;
#local mSecond3 = 10;
SCR_SetNumber (mName, mProp, mValueStart, mValueEnd, "", mSecond0, mSecond1, mSecond2, mSecond3, 1)
//Handle the actor(s)
#local mTransY = SCR_GetFloat ("sphere", "", "translate-y", 0);
sphere {
<0,0.5,0> 0.5
texture { pigment { color rgb <0,1,0> } }
translate <0,mTransY, 0>
}
//Do some other stuff
MA_Testarea (5)
sky_sphere { pigment { color Gray05 } }
#end
SCR_Start()
MA_CameraAndLight_Set()

Second-0 bis 3 kurz erklärt
Für alles was sich bewegt oder verändert, werden Werte mit
SCR_Set*() im Drehbuch gesetzt und per
SCR_Get*() im unteren Teil in die Tat umgesetzt. Das muss zwar für jede Aktion genau festgelegt werden, trotzdem klappt das selbst bei längeren Animationen aus meiner Sicht erstaunlich gut. Gewisse Disziplin bei der Gestaltung des Drehbuchs vorausgesetzt, und ein Editor mit Syntax-Highlighting ist eh nie verkehrt.
Zur Veranschaulichung habe ich ein umfangreiches, lauffähiges Tutorial zusammengestellt und gleich dazu das komplette Drehbuch
des ersten Fluges des
Tussi-Raumschiffes gepackt. Anhand der rund 2.000 Zeilen Beispiel-Code sollte klar werden, wie die Verwendung von Screenplay gedacht ist und welche Vorteile es gegenüber händischem Einsatz von
clock und
clock_on hat.
Weitere Animationen werden folgen, ich habe große Pläne. Tatsächlich komme ich langsam in den Bereich, wo mehr dringend nötige Vorarbeiten hinter mir liegen als vor mir, und die richtig interessanten Dinge in Reichweite gelangen.
Quellcode und weitere Erklärungen findet ihr auf der Projektseite
MA_Screenplay.
Viel Spaß dabei,
Martin