APPLICATIONSCREATION GRAPHIQUE ★ CPC-Animation ★

3D-Filmerzeugung (CPC Amstrad International)Applications Creation Graphique
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

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
X1, Y1, Linienanfangspunkt
X2, Y2, Linienendpunkt
X3, Y3, nächster Anfangspunkt
X4, Y4, und dazugehöriger Endpunkt
...
&FF Kennzeichen für Bildende
... weitere Bilder
&FF, &FF Kennzeichen für Szenen ende
... nächste Szene
3 mal &FF Kennzeichen für Filmende

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
2. kleinere Bildgrößen
3. möglichst viele horizontale bzw. vertikale Linien

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:

XYZ/
X1000
Y0100
Z0010
Versch.DXDYDZ1

Skalierung:

SK000
0SY00
00SZ1
0001

Drehung um den Winkel Alpha X-Achse:

1000
0cos-sin0
0sincos0
0001

Y-Achse:

cos00sin
0100
-sin00cos
0010

Z-Achse:

cos-sin00
sincos00
0010
0001

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.

CPCAI

★ PUBLISHER: CPC Amstrad International
★ YEARE: 1986 , 1987
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC AMSTRAD INTERNATIONAL 1987
★ AUTHOR: Peter Stein
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» 3D-Filmerzeugung    (CPC  Amstrad  International)    GERMANDATE: 2021-08-12
DL: 141
TYPE: ZIP
SiZE: 9Ko
NOTE: 40 Cyls
.HFE: Χ

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Guitar Companion (Computing With the Amstrad)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 233 millisecondes et consultée 618 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.