This is an old revision of the document!
Generelle Hilfen
Anderer Bereich für die Zeit
Die clock
-Variable in POV-Ray läuft (normalerweise) von 0 bis 1 (ohne Angabe von +KC inklusive 1, mit +KC exklusive). Vielleicht haben Sie Ihre Animation in einem anderen Bereich parametriert, dann schlage ich folgendes vor:
// So läuft die Variable myclock von 0 bis 4 #declare myclock=4*clock;
Eigene mathematische Funktionen
Folgende Funktion gliedert sich in zwei Teile. Der Syntax für ein if
in einer Funktion ist
Bedingung
? Ausdruck wenn wahr
: Ausruck wenn falsch
// Folgende Funktion ist immer Null zwischen 0 und 0.7, danach steigt die Funktion linear durch den Punkt $(1,1)$. #declare durchsichtig=function(zeit) { zeit<0.7 ? 0 : (zeit-0.7)/0.3; } // Benutzung der Funktion object { meinCoolesDing pigment { color rgbt <1,0,0,durchsichtig(clock)> } }
Test der Animation in einem einzigen Bild
Anstatt 20 (oder mehr) Bilder zu rendern, kann mit einem Trick auch ein einziges Bild mit allen Schritten gerendert werden. Der eigene Animationscode muss aber in eine Schleife eingepackt werden.
// Kamera // Licht // Eigene Variablendefinitionen #declare numFrames=20; // Auf Null setzen für normale Animation #declare frame=0; #while (frame<numFrames) // Hier < durch <= ersetzen, wenn das letzte Frame auch gerendert werden soll. #if (numFrame>0) #declare clock=frame/numFrames; #end // if // // Hier der Animationscode // #declare frame=frame+1; #end // while
Kopien von Objekten aber mit unterschiedlicher Zeit
Man kann Macros definieren, die von Parmetern abhängen, z.B. wie folgt:
#include "transforms.inc" #declare meinDing=union{ // Grundkörper } #marcro meinCoolesDing(orientierung, zeit) object { meinDing rotate 360*zeit*z Reorient_Trans(z, orientierung) // Dreht so, dass die z-Achse in Richtung des Vektors 'orientierung' zeigt } #end // Benutzung des Macros object { meinCoolesDing(<1,1,1>, 0) pigment {color rgb x} } object { meinCoolesDing(<-1,-1,1>, 0.25) pigment {color rgb y} } // etc...
Hinweis: Die Vektoren <1,1,1>
, ←1,-1,1>
, ←1,1,-1>
und <1,-1,-1>
Zeigen zu den Eckpunkten eines regulären Tetraeders.
Tangente an eine Wurfparabel
Wird eine Wurfparabel in folgender Form geschrieben (dazu sind wohl Umformungen nötig): \[ \vec{OP}(t) = \vec p_0 + t \cdot \vec v_0 + t^2 \cdot \vec a, \] dann ist der Geschwindigkeitsvektor der folgende: \[ \vec v(T) = \vec v_0 + 2\cdot t \cdot \vec a \]
Mit dieser Tangente kann dann z.B. ein Zylinder ausgrichtet werden.
Hohle Röhre
difference {
cylinder {0, z, 1 } // Grundform cylinder {-0.1*z, 1.1*z,0.9 } // Ausschnitt (sollte keine zusammenfallenden Flächen haben, darum von -0.1*z bis 1.1*z).
}