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

Kommentare

Keine Kommentare bisher.
* Die Angabe von E-Mail und Webseite ist optional.
Die E-Mail wird nicht mit dem Kommentartext angezeigt sondern nur intern gespeichert, sollte lediglich bei Kontaktwunsch angegeben werden.
der deutschen Seite
der englischen Seite
beiden Seiten