★ APPLICATIONS ★ CREATION GRAPHIQUE ★ CPC-Animation ★ |
3D-Filmerzeugung (CPC Amstrad International) | Applications Creation Graphique |
Seit Beginn meiner »Computer-Laufbahn« hat mich nichts so sehr fasziniert wie die Computergrafik. So wurden die Veröffentlichungen des »3D-Läufers« (Heft 5) und des »Animators« (Heft 10) sehr gegrüßt. Mit dem »Animator« wurde auch sehr viel experimentiert, doch stand immer wieder die Speichergrenze meines CPC 464 im Wege, um längere Animationen erzeugen zu können. Die einzelnen Bilder des Animators benötigten doch erheblichen Speicherplatz. All meine folgenden Überlegungen standen unter dem Vorsatz, die Speicherplatzbelegung der Animation zu optimieren. Um eine ansprechende Lösung zu erhalten, mußten einige Kompromisse hinsichtlich der Komplexität der Graphik (Flächen, Farben, Linien) und der Geschwindigkeit geschlossen werden. Anstatt ganze Bildschirmauszüge im Speicher abzulegen, beschränkte ich mich auf die Speicherung von Anfangs- und Endpunkt der Objektkanten. Ein Maschinenprogramm ruft dann Linie für Linie auf den Schirm. Leider lassen sich mit dieser Methode nur Vektorgrafiken »bewegen«, die aber auch ihren ganz besonderen Reiz haben. Filmaufbau Der Animations-Film besteht aus wiederholbaren Szenen, die wiederum aus einzelnen Bildern aufgebaut sind. Eine 360-Grad Drehung eines Würfels ließe sich somit mit vier 90-Grad-Drehungen darstellen, wodurch kostbarer Speicher gespart würde. Die Animation läßt sich jederzeit durch einen beliebigen Tastendruck unterbrechen, um im Rahmenprogramm fortzufahren. Eine Animation sieht im Speicher folgendermaßen aus. 1. BYTE Wiederholungsrate der Szene Die MC-Routine arbeitet aus Speicherplatzgründen nur mit Byte-Werten, so daß Bildgrößen von maximal 244x244 Pixels erreichbar sind. Vor Animationsbeginn muß dem Maschinenprogramm die Filmstartadresse mitgeteilt werden. Nach Aufruf wird die Wiederholungsrate gelesen. Anschließend werden alle Linienzüge bis zum ersten &FF erzeugt. Dann wird auf die andere Grafikseite umgeschaltet, das Grafikfenster wird gelöscht und ein neues Bild gezeichnet. Bei &FF, &FF wird die Wdh-Rate erniedrigt. Wenn Wdh=0 wird mit der nächsten Szene begonnen. Bei dreimal &FF oder einem Tastendruck wird die Animation beendet. Nun sind auch der MC-Routine in ihrer Geschwindigkeit Grenzen gesetzt. Es werden die Grafik-Routinen des Betriebssystems über die Sprungvektoren genutzt. Somit wird die Anpassung an eigene Routinen erleichtert. Da die Zeichen-Routinen nicht die schnellsten sind, wie durch den »Profi-Painter« und »Vektor« bewiesen wurde, sollten einige Punkte für eine schnelle Bildfolge beachtet werden. 1. wenige Linienzüge Werden diese Punkte berücksichtigt, lassen sich leicht ruckfreie Bewegungen realisieren. Filmerstellung Um den Film zu erstellen, können beliebige Methoden genutzt werden. Ich möchte ein Verfahren vorstellen, welches leicht zu handhaben ist und realistische 3D Grafiken erstellt. Räumliche Transformationen durch Matrizenmultiplikation Um einen 3D-Körper drehen, verschieben und verkleinern/vergrößern (skalieren) zu können, müssen seine Eckpunkte in die jeweilige neue Lage transformiert werden. Jede komplizierte Bewegung bzw. Transformation läßt sich aus Elementartransformationen (Drehung, Verschiebung, Skalierung) und der dazugehörigen Matrix darstellen. Multipliziert man die jeweiligen Matrizen in der richtigen Reihenfolge miteinander (!), so erhält man eine Matrix, die alle Informationen für die gesamte Transformation enthält. Jeder beliebige Raumpunkt läßt sich nun durch die erhaltene Matrix in seine neue Lage transformieren. Aufbau der Matrix (Zeile, Spalte) bei...(Spalte 4 dient der korrekten Multiplikation = > keine Bedeutung) Verschiebung:
Skalierung:
Drehung um den Winkel Alpha X-Achse:
Y-Achse:
Z-Achse:
Wie die neuen Raumpunkte errechnet werden, ist dem Filmlisting (Zeile 355 — 390) zu entnehmen. Die transformierten Punkte brauchen dann nur noch auf dem Bildschirm zentralprojeziert zu werden. Außerdem werden bei den nur teilweise sichtbaren Linien die Schnittpunkte mit den Grenzen des Grafikfensters errechnet (Zeilen 555 — 820), so daß diese Rechnerei den Grafikroutinen erspart bleibt (Geschwindigkeitssteigerung). Die Raumpunkte und die Kantenliste werden ab Zeile 1380 abgelegt. Die noch fehlenden Bewegungsvorschriften bzw. das Drehbuch für den Film werden in einer DATA-Zeile abgelegt (Zeile 1450), so daß alle Elemente und Befehle durch Kommata getrennt werden müssen. Jede Szene ist eingeklammert, die Wiederholungsrate steht vorweg. Der erste Wert nach der Klammer gibt die Bildzahl der Szene an. Es bedeuten ... Rotationsbefehle: RX, Alpha/RY, Alpha/RZ Alpha (um den Winkel Alpha) Schiebebefehle: SX, Dis/SY,Dis/SZ, Dis (um den Weg Dis) Ein »C« nach einem Befehl (z.B. RXC,459 bewirkt eine feste Vorabdrehung um die X-Achse von 45 Grad. Zur Geschwindigkeitssteigerung der fertigen Animation sollten die Werte für die Bildschirmgröße in der ORIG-Anweisung berücksichtigt werden. Mit den Werten und den Drehbuch-Anweisungen sollte eifrig experimentiert werden. Beherrscht man alle Befehle, lassen sich erstaunliche Bewegungen erzielen. Einbau der Animation in eigene Programme Nach einem »MEMORY &3FF« kann der Film und die MC-Routine geladen werden. Nun kann jederzeit von einem Programm unterhalb von &3FF die Animation aufgerufen werden. Der genaue Gebrauch kann dem Demo-Listing entnommen werden. Als Nachschlagewerke empfehle ich jedes Mathematik-Lexikon sowie das DATA-BECKER-Buch »CPC 464. Grafik + Sound«. Beim Abtippen des Filmlistings müssen nur die REM-Zeilen, die mit einem Fragezeichen beginnen, eingegeben werden. Noch ein Tip: Das Matrizenverfahren läßt sich bei Streichen der Z-Zeile und Z-Spalte auf zwei Dimensionen beschränken.
|