Dokumentation zum ANIMATION-BOSS von Markus Peuckert Copyright (c) 1989 by Markus Peuckert Sämtliche Rechte bleiben beim Autor. Dieses Programm und alle Dateien dürfen frei kopiert werden! Vor Ihnen liegt ein Animationsprogramm für einfache Objekte, das die Möglichkeit bietet, alle Objekte, bzw. eine gesamte Welt dreidimensional mittels einer Rot/Grün-Darstellung zu zeigen. Die Objekte werden als Drahtmodelle gezeichnet. Jedes Objekt kann um alle Raumachsen beliebig gedreht, verkleinert und in allen Ebenen verschoben werden. Dieses Programm ist ausschließlich über die Tastatur zu steuern, da die Implementation eines Menüs recht aufwendig gewesen wäre und den SourceCode unnötig aufgeblasen hätte. Auch ist die Handhabung mittels der Tastatur ziemlich schnell und man gewöhnt sich rasch daran. Nun zum Einzelnen: Das Programm ist aufgeteilt in drei Moduln: Zwei Hilfsmoduln und ein Programmodul. Im Modul "Hilf" sind einige Routinen untergebracht, die leicht auszulagern waren und so die Source des Hauptmoduls nicht unnötig belasten, was sich in der Programmentwicklung positiv bemerkbar gemacht hat. Das Einrichten von Screens und Windows, sowie die Handhabung des DoubleBufferScreens, der Dateien und des KeyHelp-Windows wird von diesem Modul übernommen. Im Modul "Titel" wird ausschließlich die Darstellung des TitelScreens definiert. Der TitelScreen wird mittels Copperprogrammierung aufgebaut. Das Hauptmodul importiert aus den obengenannten Moduln einige Strukturen und Prozeduren und enthält die wesentlichen Routinen für die Bearbeitung der Objekte: die 3D-Darstellung und Berechnung: Rotationen um alle Raumachsen, Skalierungen, Zentralprojektionen etc. Es werden folgende Strukturen eingerichtet: - Die PunktTyp-Struktur, die sich aus den drei Raumkoordinaten zusammensetzt. - Die Objektstruktur, die als Bestandteil ein Feld vom Typ PunktTyp besitzt, ferner die Anzahl der Punkte und Linien eines Objektes und die auf 2D-Koordinaten umgerechneten Bilder des Objektes aufnimmt. - Letztlich existiert ein Feld vom Typ der Objektstruktur, die alle definierten Objekte aufnimmt, die aus einem externen Ascii-File eingelesen werden. - Sinus- und Cosinustabellen für die Berechnung der 3D-Transformationen müssen bereitgestellt werden. - Und zwei Felder (eines für die Blau- und eines für die Rotdarstellung), die die fertig berechnete Animation aufnimmt. Aus diesen wird nachher die Animation (sofern sie gefällig ist) in einer Datei abgespeichert. Der Dateizugriff geschieht gepuffert, was das Auslesen, bzw. Schreiben einer Datei tatsächlich bis zum Faktor 20 beschleunigen kann. Die Prozeduren aller Moduln sind weitgehend selbsterklärend und auch mit (etwas) Kommentaren versehen. Es sollten kaum Schwierigkeiten im Verständnis auftreten. Ich sprach bereits von einer sogenannten Rot/Grün-Darstellung. In Wirklichkeit werden die Objekte in einer ROT/BLAU-Darstellung gezeigt. Das liegt daran, daß die hierzulande käuflichen Rot/Grün-Brillen nicht geeignet sind eine gute Extinktion der komplementären Farbe zu erreichen. D.h., das rote Filter der Brille löscht besser die blaue Farbe des Monitors aus, als die grüne Farbe. Ich habe lange herumexperimentiert und bin sogar dazu gekommen das grüne Filter der Brille zu verdoppeln, indem ich eine zweite Brille zerschnitt und die grüne Folie über die andere Brille klebte, um die räumliche Darstellung zu verbessern. Zusätzlich ist es sinnvoll, den Raum etwas zu verdunkeln und sich den günstigsten Abstand vom Monitor zu suchen. Nun zur Erklärung der Funktionen und Tastendefinitionen: Das Programm wird über das CLI (Anim) oder die über die Workbench (Doppelklick) aufgerufen. Es erscheint zuerst ein Fenster und Sie werden gebeten einen Dateinamen einzugeben. Diese Datei muß die 3D-Koordinaten einer definierten Welt in einem bestimmten Format im Ascii-Code enthalten. Auf das Format gehe ich später noch ein. Haben Sie den Dateinamen richtig (GROß/kleinschreibung wird nicht unterschieden) eingegeben, erscheint der Titelscreen. Ansonsten bricht das Programm mit einem Requester ab. Wenn Sie sich nun lange genug am Titel ergötzt haben, drücken einfach die linke Maustaste. Der Titelscreen wird abgebaut und es erscheint der Hauptscreen auf dem die aus der Ascii-Datei ausgelesene Welt dargestellt wird. Das Programm kann mit der ESC-Taste abgebrochen werden, alle angeforderten Speicherblöcke werden wieder freigegeben. Um nun den 3D-Effekt bewundern zu können, drücken Sie die Taste "R"... und sehen... nichts besonderes. Weil Sie vergessen haben die Rot/Grün-Brille aufzusetzen. Danach der Aha-Effekt. Manche müssen sich erst an diese Art zu sehen gewöhnen, also seien Sie nicht enttäuscht, wenn Sie auf Anhieb keinen so dollen dreidimensionalen Eindruck haben. Kommt noch! Mit den Cursortasten können Sie nun die gesamte Welt nach Ihrem Gusto drehen und wenden. Für die Drehung um die Z-Achse sind die Tasten "Null" und "Punkt" auf dem Ziffernfeld bestimmt. Die Tasten "Eins" bis "Neun" außer "Fünf" sind für das Verschieben der Welt in der Vertikalebene ausgelegt. Die "Fünf" setzt die ganze Welt wieder in den Ausgangszustand zurück, also Vorsicht! Mit dem "Plus" und "Minus" können Sie die Welt heranholen oder wegrücken. Das waren nun die Tasten zum direkten Manipulieren der Welt. Jetzt folgt die Besprechung der Tasten für die Animation, Hilfe, Speichern und Laden von Animationen: Taste : - HELP ..... Zeigt ein Window auf dem die Tastenbelegung noch einmal erklärt wird. - O ..... Laden einer neuen Welt im Ascii-Format. - W ..... Die Weltvariablen können neu gesetzt werden: Rotationen um X-,Y-,Z-Achse, Skalierung und Beobachterstandpunkt werden neu eingestellt. Auch wird hier der Dateiname für eine fertige Animation, sowohl zum Speichern als auch zum Laden eingegeben. - R ..... Rot/Grün-Darstellung ein/ausschalten. - A ..... Ist noch keine Animation im Speicher, wird versucht, eine aus dem aktuellen Verzeichnis zu laden. Der Dateiname ist im Fenster der Weltvariablen (Taste "W") einzustellen. Diese wird dann ausgeführt. Ist schon eine Animation im Speicher, wird keine geladen, sondern sofort ausgeführt. - C ..... Diese Taste (Clear), löscht den Speicher, d.h., bevor man beabsichtigt eine Animation zu kreiren, MUß man diese Taste gedrückt haben. Es werden Variablen initialisiert und Felder auf einen definierten Zustand zurückgesetzt. - T ..... Damit wird ein Bild in einem Feld als zweidimensionale Koordinaten abgespeichert und ist somit animationsfähig. Gleichzeitig wird im oberen linken Bildschirmrand der freie Speicherplatz in der Anzahl der Bilder gezeigt. Sie können nun jederzeit mit Hilfe der Taste "A" kontrollieren, inwieweit Sie mit der Animation zufrieden sind. - S ..... Haben Sie eine Animation fertiggestellt und wollen diese abspeichern, so drücken Sie diese Taste. Die Animation wird in einer Datei abgelegt, deren Name Sie in dem Fenster der Weltvariablen bestimmt haben. Nun einmal eine komplette Sitzung: Aufstarten des Programmes vom CLI oder der Workbench. Wenn das Eingabefenster erscheint, geben Sie einen Dateinamen ein, unter dem eine Ascii-Datei mit den 3D-Koordinaten der Welt definiert ist. Ist das Einlesen der Datei reibungslos vonstatten gegangen, erscheint der Titelscreen. Dann linken Mausknopf drücken. Es ist nun die komplette Welt in dreidimensionaler Darstellung zu sehen. Wollen Sie eine bestimmte Stellung der Welt erreichen, die über Cursortasten zu lange dauern würde, gehen Sie in das "W"-Fenster und stellen die gewünschten Parameter ein. Um eine Animation aufzunehmen, drücken Sie die Taste "C" (für Clear), um den Speicher vorzubereiten. Dann können Sie mit der Taste "T" (Transfer) jedes Bild einzeln abspeichern und zwischendurch mittels der Cursortasten die Welt in der gewünschten Weise drehen und bewegen. Ist sie perfekt, speichern Sie diese mit der Taste "S" (Speichern) ab. Den Dateinamen können Sie im "W"-Fenster frei wählen (Default : Anim.Dat). Zwischendurch ist es mit der Taste "A" (Animieren) möglich den Stand der Animation zu kontrollieren. Ist noch keine Animation hergestellt oder geladen, so wird bei Tastendruck "A" versucht eine Animationsdatei mit dem im "W"-Fenster eingestellten Namen zu laden. Ist dies nicht möglich, bricht das Programm mit einer Fehlermeldung ab. Gefällt Ihnen dei aktuelle Animation nicht, können Sie mittels der Taste "C" den Speicher wieder löschen und für eine neue Animation bereitmachen. Das Format der Ascii-Dateien für Welten und Objekte: Eine solche Datei kann aus einem oder mehreren Objekten bestehen. Das hängt von der im Programm eingestellen Anzahl ab. Ein oder mehrere Objekte stellen zusammen eine Welt dar, die komplett berechnet und gezeichnet wird. Die Defaultwerte für die Anzahl der Objekte beträgt 3 und können wie die folgenden Werte im ProgrammText selbst geändert werden. Die Werte : max. Anzahl der Punkte/Objekt - 100. max. Anzahl der Linienverbindungen/Objekt - 200. Allerdings müssen Sie den verfügbaren Speicher im Auge behalten. Es können Animationsdateien von max. 32000 Punkten Größe erstellt werden. Das ist bei komplexen Welten schnell erreicht. Die Daten werden mit einem normalen Editor eingegeben, z.B. Ed. Geben Sie alle Daten ohne Tabsprünge, überflüssige Leerzeichen oder Kommentare ein, weil sonst das Programm zu falschen Ergebnissen kommen könnte und abbricht. Und zwar in folgender Weise: Zuerst geben Sie die Anzahl der Objekte der Welt ein. Danach die Anzahl der Punkte Dann die eigentlichen Punktkoordinaten und zwar alle drei Koordinaten für einen Punkt nebeneinander Anschließend die Anzahl der Linienverbindungen Darunter die Linienverbindungen, wobei am Anfang der Zeile die Anzahl der zu verbindenden Punkte gesetzt werden muß: 4 1 2 3 1 5 15 16 17 12 15 In der ersten Reihe werden also vier Punkte miteinander verbunden, nämlich Punkt 1 mit Punkt 2, der mit Punkt 3, der wieder mit Punkt 1, so daß, wie in diesem Beispiel, ein Dreieck geschlossen wird. In der zweiten Reihe werden fünf Punkte verbunden. Deren Nummern ergeben sich aus der Reihenfolge in der sie oben geschrieben wurden. Wir wollen in unserem Beispiel mal zwei Objekte zu einer Welt definieren. Das zweite Objekt wird genau wie das Erste geschrieben, mit der Anzahl der Punkte, der Linienverbindungen und den Linien. Als Beispiel sei hier eine Definition zweier Quader in einer Welt vorgestellt: 2 Zwei Objekte 8 Acht Punkte für das erste Objekt -20 10 -20 Punktkoordinaten 20 10 -20 20 -10 -20 -20 -10 -20 -20 10 20 20 10 20 20 -10 20 -20 -10 20 5 Fünf Linienverbindungen 5 1 2 3 4 1 Fünf Punkte werden verbunden 6 1 5 6 7 8 5 Sechs Punkte " " , usw. 2 4 8 2 2 6 2 3 7 8 Acht Punkte für das zweite Objekt -40 20 -40 40 10 -40 40 -10 -40 -40 -10 -40 -40 10 40 40 10 40 40 -10 40 -40 -10 40 5 Fünf Linienverbindungen 5 1 2 3 4 1 Fünf Punkte werden verbunden 6 1 5 6 7 8 5 Sechs Punkte " " , usw. 2 4 8 2 2 6 2 3 7 ACHTUNG, auf KEINEN Fall die Kommentare mit in die Datei schreiben !!! Zum Konstruieren von Welten setzt man sich am besten mit Kästchenpapier und Bleistift hin und zeichnet das Objekt maßstabsgetreu unter drei Ansichten gemäß den Raumachsen. An allen Ecken notiert man sich die Koordinaten und die Nummer des Punktes. Das Aufbewahren der Konstruktionszeichnungen ist in den meisten Fällen sinnvoll, um später leichter Änderungen vornehmen zu können.