====== Programm "Installation" und Start ====== ==== Installation ==== Dieser Vorgang muss nur ausgeführt werden, wenn im Laufwerk C: kein Ordner POV-Ray existiert. * Im Klassenlaufwerk finden Sie im Ordner Mathe die Datei **pvinst.bat**. Starten Sie diese. Dieser Vorgang muss nur einmal ausgeführt werden. ==== Programmstart ==== * Im Laufwerk C:, im Ordner POV-Ray, starten Sie die Datei **pvstart.bat**. * Legen Sie eine neue POV-Ray Datei an und speichern Sie diese mit der Dateiendung .pov an einem geeigneten Ort. Für Animationen speichern Sie die Datei in einem separaten Ordner nur für diese Datei. ====== POV-Ray Aufgaben ====== Grundstruktur: // Kamera camera { sky <0,0,1> // Vektor, der festlegt, wo oben ist. right <-4/3,0,0> // Bildverhältnis 4:3, plus Spiegelung für rechtsdrehendes System location <20,8,18> // Position der Kamera look_at <0, 0, 1> // Blickrichtung (erscheint im Bildmittelpunkt) angle 30 // Öffnungswinkel der Kamera } // Lichtquellen light_source { <12,-2,12> // Position des Lichts color rgb <1,1,1> // Farbe des Lichts, als rot-grün-blau Vektor (Komponenten 0 bis 1) } light_source { <13,10,13> // Position des Lichts color rgb <1,1,1> // Farbe des Lichts, als rot-grün-blau Vektor (Komponenten 0 bis 1) } // Boden (xy-Ebene, kariert mit Quadraten von Seitenlänge 1) plane { z,0 // Ebene, senkrecht zu z=<0,0,1>, mit Abstand 0 zum Ursprung pigment { // Schachbrett checker color rgb <1,1,1>, color rgb <0.2,0.2,0.2> } finish { reflection 0.4 } } // Ende Boden ===== Aufgabe 441 ===== Erst werden die Parameter der Aufgabe festgelegt, dann eine Person definiert (kann noch beliebig verkompliziert werden) und schliesslich die beiden Personen dargestellt. Um die Animation zu rendern, muss in POV-Ray noch die Option "+KFF20" eingetragen werden, damit z.B. 20 Bilder erzeugt werden. // TODO // HIER FEHLT NOCH KAMERA, LICHT UND BODEN #declare oa=<0,4,0>; // Startposition A #declare va=<1,0,0>; // Geschwindigkeitsvektor A #declare ob=<3,0,0>; // Startposition B #declare vb=<0,1,0>; // Geschwindigkeitsvektor B #declare zeit=clock*6; // Total 6 Sekunden simulieren #declare person=union { // Person, zentriert auf <0,0,0>, Blickrichtung in x-Richtung box { <-0.15,-0.3,0>, <0.15,0.3,1.7> } } // Ende union Person // Person A object { person // TODO // translate HIER DIE POSITION AUS DER zeit BERECHNEN pigment { color rgb <1,0,0> } } // Ende Person A object { person rotate 90*z // damit die Person in y-Richtung schaut. // TODO // translate HIER DIE POSITION AUS DER zeit BERECHNEN pigment { color rgb <0,1,0> } } // Ende Person A Wer möchte, kann sich überlegen, wie man noch Beine animieren könnte. Dazu eignet sich die Modulo-Funktion: #declare beinzeit = mod(zeit,1.0); // Liefert die Nachkommastellen // TODO // AUS beinzeit DIE POSITION DER FUESSE BERECHNEN // Kamera camera { sky <0,0,1> // Vektor, der festlegt, wo oben ist. right <-4/3,0,0> // Bildverhältnis 4:3, plus Spiegelung für rechtsdrehendes System location <20,8,18> // Position der Kamera look_at <5, 5, 1> // Blickrichtung (erscheint im Bildmittelpunkt) angle 30 // Öffnungswinkel der Kamera } // Lichtquellen light_source { <12,-2,12> // Position des Lichts color rgb <1,1,1> // Farbe des Lichts, als rot-grün-blau Vektor (Komponenten 0 bis 1) } light_source { <13,10,13> // Position des Lichts color rgb <1,1,1> // Farbe des Lichts, als rot-grün-blau Vektor (Komponenten 0 bis 1) } // Boden (xy-Ebene, kariert mit Quadraten von Seitenlänge 1) plane { z,0 // Ebene, senkrecht zu z=<0,0,1>, mit Abstand 0 zum Ursprung pigment { // Schachbrett checker color rgb <1,1,1>, color rgb <0.2,0.2,0.2> } finish { reflection 0.4 } } // Ende Boden #declare oa=<0,4,0>; // Startposition A #declare va=<1,0,0>; // Geschwindigkeitsvektor A #declare ob=<3,0,0>; // Startposition B #declare vb=<0,1,0>; // Geschwindigkeitsvektor B #declare zeit=clock*6; // Total 6 Sekunden simulieren #declare person=union { // Person, zentriert auf <0,0,0>, Blickrichtung in x-Richtung box { <-0.15,-0.3,0>, <0.15,0.3,1.7> } } // Ende union Person #declare halbeSeite=2; // ACHTUNG Gross/Kleinschreibung! #declare abstand=1; #declare truppe = union { // Einrücken mit TAB (oberhalb CapsLock=) #declare posx=-halbeSeite; // x-Position einer Person in der Truppe #while (posx<=halbeSeite) // Wieder holen, von -halbeSeite bis +halbeSeite #declare posy=-halbeSeite; // Dito für posy #while (posy <= halbeSeite) object { person // Person platzieren translate abstand* } #declare posy=posy+1; #end // while posy #declare posx=posx+1; #end // while posx } // union // Person A object { truppe // TODO translate oa+zeit*va // Parameterdarstellung der Geraden a pigment { color rgb <1,0,0> } } // Ende Person A // Person B object { truppe rotate 90*z // damit die Person in y-Richtung schaut. // TODO translate ob+zeit*vb // Parameterdarstellung der Geraden b pigment { color rgb <0,1,0> } } // Ende Person A ===== Video-Encoding mit ffmpeg ===== C:\ffmpeg-20180831-3ad0e67-win64-static\bin\ffmpeg.exe -i .\aufgabe441og%02d.png movie.mp4