RaySTart: Auge um Auge, Strahl um Strahl

Raytracing, Antialiasing und prozedurale Texturen - Begriffe, die in letzter Zeit immer mehr an Bedeutung gewinnen. Was auf anderen Rechnerplattformen schon seit Jahren boomt, kommt auf dem ATARI nun auch langsam in Gang.

Letztes Jahr hatte ich an dieser Stelle über InShape berichtet. Es folgte ein Dreiteiler über das Paket „Phase IV“ und „Xenomorph“ mitsamt den ganzen Utilities. Beide Programme haben inzwischen eine Weiterentwicklung erfahren, über die demnächst auch wieder berichtet werden soll. Heute soll ein Produkt aus dem ostwestfälischen Bielefeld vorgestellt werden. Es handelt sich hierbei um RaySTart. RaySTart ist bis dato ein Ein-Mann-Projekt, welches komplett in GFA-BASIC geschrieben ist.

Raytracing

In über zwei Jahren Entwicklungszeit hat sich mittlerweile ein Sourcecode von ca. 550 KB Größe angesammelt, welcher sich compiliert in ca. 420 KB Programmgröße niederschlägt. Nach dem Starten des Programmes erscheint eine GEM-Menüleiste und zwei Fenster; ein Werkzeugfenster und ein Objektfenster. Um ein Objekt zu laden, fährt man wie gewohnt in die Menüleiste auf den Punkt „Datei“ und sieht nur die zwei Punkte „Auswahl“ und „Ende“. Erst durch Klick auf „Auswahl“ erscheint ein Dialog, der sich ziemlich komplex darstellt. Hier können einzelne Objekte-, Licht- oder Kameradateien geladen werden. Aber auch eine Kombination von Objekt und Licht oder ein ganzes Projekt kann geladen werden. Mit dieser Art des Datei-Handlings bewegt sich das Programm sicherlich nicht auf standardisiertem Boden und der Anwender muß sich erst daran gewöhnen. Das gilt auch für die Tastaturbedienung. Hat sich das Unterstreichen eines Buchstabens durchgesetzt, wird in RaySTart der entsprechende Buchstabe groß geschrieben. Auch dies ist eigenwillig und nicht auf dem Stand der heutzutage gängigen Technik.

Nach dem Starten des Programms..
... wird das Objekt erstellt,...
... der Farbsatz festgelegt...
Stilleben aus dem Rechner, mit RaySTart kein Problem. Das Stilleben mit Kerze hat in der Erstellung wie unten zu sehen, weniger als zwei Stunden gekostet und wurde auf einem TT in der Auflösung 640 x 400 Punkte in etwas mehr als 13 Stunden berechnet.

Hello World

In jeder Programmiersprache bekommt man durch das Handbuch vermittelt, ein „Hello World“ auf den Bildschirm zu zaubern. In einem Raytracing-Programm versucht man als erstes, eine Kugel oder ein Quadrat zu kreieren. In einigen Objekteditoren findet man bereits vorgefertigte Körper, wie z.B. Kugel, Kegel, Quadrat usw. So etw as wird man bei RaySTart vergeblich suchen. Hier werden alle Objekte von Hand, allerdings nicht wie in einem 3D-CAD-Programm, sondern logisch, erstellt. Nehmen wir als Beispiel ein Quadrat; dazu wird unter dem Menüpunkt „Objekt“ der Extrude-Eintrag benutzt. Zunächst verändert sich die Menüleiste und zeigt nur noch alles Notwendige zum Punkt Extrude an. Daneben hat sich auch das Werkzeugfenster verändert. Um ein genaues Quadrat zu bekommen, schaltet man die Punkte „Grid“ (Raster) und „Einrasten“ ein. Nun setzt man einen Punkt aufs Raster; ward die Maus danach weiterbewegt, zieht sie ein „Gummiband“ hinter sich her. welches mit dem letzten Punkt verbunden ist. Beim dritten Punkt wird klar, daß dieses Band immer mit dem Startpunkt und dem letzten Punkt verbunden ist. Dadurch wird die Form sofort ersichtlich. Für ein Quadrat machen wir also vier Punkte und wechseln wieder ms Werkzeugfenster. Anschließend verändern wir den Parameter „Tiefe“ auf das entsprechende Maß und „Segmente“ auf die Anzahl der gewünschten Stücke. Je mehr Segmente man vorgibt, um so mehr Rechenzeit wird später benötigt. Diesen Aspekt sollte man nie außer acht lassen. Um das Quadrat nun auch zu dem zu machen, was es sein soll, nämlich ein Körper, muß der Button „Objekt“ betätigt werden. Dadurch wird die Form extrudiert und es entsteht ein dreidimensionaler Körper. Dieser kann natürlich beliebig skaliert werden. Als letztes wird dem Kind noch ein Name gegeben, und fertig ist unser erstes Objekt. Ganz ähnlich funktioniert die Erstellung von Körpern im Rotationsmenü.

Analytische Körper

Analytische Körper sind sehr reizvoll für die Verfechter von Speicherplatzsparen. Hierbei wird der Körper lediglich durch ein bis zwei Parameter beschrieben und verbraucht dadurch sehr wenig RAM-Speicher. Für die ganz komplexen Objekte gibt es den Funktionseditor, in dem eine Fläche mit Hilfe einer Funktion generiert werden kann und anschließend als Objekt zur Verfügung gestellt wird. Zum Thema analytische Körper und zu den anderen Fachbegriffen gibt es eine Menge Informationen im Handbuch, welches auch dazu gedient hat, den nebenstehenden Kasten mit der Fachbegriffserklärung zu erstellen.

Farbe, Licht und Kamera

Doch fahren wir fort mit unserem Beispiel: Um dem Quadrat nun eine Farbe zuzuweisen, dient zunächst der „Farbendialog“. Dieser Dialog, zu finden unter dem Menüpunkt „Optionen“ -> „Farben“, kann nur angewählt werden, wenn man auf einem Farbbildschirm arbeitet (unter Schwarzweißauflösungen ist der Punkt disabled). Dort wird der Farbsatz bestimmt, mit dem man insgesamt arbeiten kann. Aufgrund dieser Voreinstellung kann in der Material- und Farbzuweisung nur aus diesem Farbsatz geschöpft werden.

War die Vielfältigkeit der Objekterstellung ein Pluspunkt, bekommt auch die Material- und Farbzuweisung einen solchen. Es wird neben der Farbe auch der Glanz, die Dichte, Reflexion und Transparenz eingestellt. Die Checkbox „Interpolation“ sollte immer bei runden oder welligen Formen angewählt werden, weil sie für eine wesentlich glattere Oberfläche sorgt. So ist z.B. der Vorhang auf dem Bild mit der Trompete aus einer Zick-Zack-Linie plus Interpolation erstellt worden.

... und dem Objekt eine Farbe zugewiesen.
Mit Licht, Kamera...
... und den Bildparametern kann die Berechnung starten.
# Fachbegriffe aus dem Themenbereich Raytracing und Rendering

Polygonale Objekte

In fast allen Programmen wird die Möglichkeit geboten. Objekte zu verwenden, die aus dreieckigen Polygonen (Facetten) aufgebaut sind. Vorteil: Aus diesen Facetten läßt sich fast jede gewünschte Form modellieren, wenn man nur genügend viele fein unterteilte Facetten benutzt. Nachteil: Hoher Verwaltungs- und Rechenaufwand selbst bei einfachen Objekten wie z.B. einer Kugel. Um eine wirklich runde Kugel aus Dreiecken anzunähern, sind schon einige hundert Facetten nötig.

Analytisch beschriebene Objekte

sind einfache Grundkörper, die mathematisch beschrieben werden. Um eine Kugel (der einfachste mathematische Körper) zu definieren, würden z.B. der Mittelpunkt und der Radius der Kugel schon völlig ausreichen. Bei der späteren Darstellung im Raytracing braucht daher auch nur eine einzige Berechnung durchgeführt zu werden, um zu prüfen. ob die Kugel getroffen wurde (statt mehrerer Hundert Berechnungen bei polygonaler Annäherung der Kugel).

Die Normale

ist ein Vektor der senkrecht auf der Oberfläche eines Objektes steht. Dieser Vektor ist einerseits für die Berechnung der Lichtintensität, die an dem betreffenden Punkt einfällt, und andererseits für die Berechnung von Reflektionen und Lichtbrechungen unerläßlich.

Hidden line

Bei diesem Algorithmus werden Facetten einfach mit ihrem Mittelpunktsabstand zur Kamera sortiert und der Reihe nach von hinten an gezeichnet. Dabei werden die hintersten Facetten durch die vorderen übermalt und dadurch der Eindruck einer korrekten Hidden-line-Darstellung erzeugt. Dieser Algorithmus funktioniert allerdings nur dann mit ausreichender Genauigkeit, wenn das Objekt aus seht vielen und hinreichend kleinen Facetten aufgebaut ist Bei wenigen unterschiedlich großen Facetten kommt es recht häufig zu Darstellungsfehlern durch überlappende Facetten. Deshalb wird dieser Algorithmus von den meisten Programmen auch nur als einfacher Preview genutzt

Scanline

Dieser Algorithmus arbeitet zeilenweise und legt dabei für jeden Punkt der gerade abgetasteten Zeile einen Tiefenwert an. Gezeichnet werden dann wiederum nur die Punkte mit dem geringsten Kameraabstand. Vorteil: Auch Überlappungen von Facetten beliebiger Größe können korrekt dargestellt werden. Nachteil: Tiefenberechnung der Punkte erfolgt unter Zuhilfenahme der auf den Bildschirm projizierten Koordinaten einer Facette. Diese können in ihrer Genauigkeit nur der Auflösung des Bildschirmes entsprechen, und so kommt es auch bei diesem Verfahren zu Ungenauigkeiten in der Schattierung

Raytracing

Dies ist der mit Abstand effektivste Algorithmus und damit auch der rechenaufwendigste. Im Gegensatz zu den anderen Verfahren, die eigentlich nicht mehr machen, als die Umrisse von Facetten auf den Bildschirm zu projizieren und einzufärben, basiert der Raytracing-Algorithmus auf einem einfachen physikalischen Vorgang: In der Natur wird ein Lichtstrahl, der von einer Lichtquelle ausgeht, von verschiedenen Gegenständen reflektiert und fällt dann irgendwann in das Auge Beim Raytracing wird genau umgekehrt verfahren Vom Kamerastandpunkt aus wird ein „Sehstrahl“ durch eine Projektionsebene (Bildschirm) gesendet und auf einen Schnittpunkt mit einem im Raum befindlichen Objekt getestet 1st dieser vorhanden, so kann der Schnittpunkt des Sehstrahles mit der Projektionsebene, also das betreffende Pixel des Bildschirmes, in der errechneten Oberflächenintensität des Objektes gezeichnet werden. Der Sehstrahl kann aber auch weitere erfolgt werden. Bei einem spiegelnden Objekt wird einfach der Reflektionswinkel berechnet und ein neuer Suchstrahl losgeschickt. Die Oberflächenintensität für das zuerst getroffene Objekt ergibt sich dann rekursiv aus dem einfallenden Licht und zusätzlich aus dem von den anderen getroffenen Objekten reflektierten Licht. Mit diesem Algorithmus ist es auch möglich, eine Splittung des Sehstrahles zu berechnen, wie es bei Transparenz nötig ist. Um ein realistisches Bild zu berechnen, müssen bei Transparenz einerseits die Oberflächenreflektionen bei Spiegelungen und zusätzlich die Intensität des von hinten einfallenden Lichtes berechnet werden. Dazu muß ein Spiegelstrahl und gleichzeitig ein gebrochener Sehstrahl berechnet werden. Treffen diese Sehstrahlen dann wieder auf ein transparentes oder spiegelndes Objekt, so wird der ganze Vorgang noch mal von vorne ausgelöst, so daß für einen einzigen zu färbenden Bildschirmpunkt oft ganze Sehstrahlbündel zu berechnen sind Auch realistischen Schattenwurf kann man im Raytracing berechnen lassen Von dem Punkt eines getroffenen Objektes wird wiederum jeweils ein Suchstrahl zu den einzelnen Lichtquellen gesendet. Trifft der Strahl dabei auf ein anderes Objekt, so muß er notwendige! weise in dessen Schatten liegen Um die Rechenzeit im einigermaßen erträglichen Rahmen zu halten, muß deshalb die Verfolgungstiefe für Reflektionen und Brechstrahlen begrenzt werden t

Interpolation

Es gibt verschiedene Verfahren, mit denen die Oberfläche eines Objektes geglättet werden kann Bei einem achsensymmetrischen Rotationskörper der aus Facetten angenähert ist, sind die Polygonstrukturen stets gut erkennbar, lim einen möglichst runden Eindruck von dem Objekt zu gewinnen, gibt es nun 2 Möglichkeiten:

  1. Erstellung des Objektes mit einer sehr hohen Anzahl kleiner Facetten. Nachteil: großer Rechenaufwand und Speicherbedarf bei geringer Qualität des Abbildes.
  2. Durch Interpolation benachbarter Facettenintensitäten wird der Eindruck von ineinander übergehenden „runden“ Facetten geschaffen. Vorteil: Trotz geringerer Facettenzahl deutlich höhere Bildqualität.

Interpolation nach Gouraud

In jedem Eckpunkt einer Facette wird eine Normale errechnet, die sich als Mittelwert der Normalen aller angrenzenden Facetten ergibt Danach werden die Intensitäten für diese Eckpunkte berechnet, und die Facette wird nach einem Scanline-Verfahren gezeichnet, wobei sich die Punktintensitäten als interpolierte Mittelwerte der Eckpunktintensitäten ergeben.

Interpolation nach Phong

Für jeden Punkt auf der Facette werden eigens eine interpolierte Normale und die dazugehörige Intensität berechnet Die Genauigkeit und Rechenzeit sind demgemäß hoher.

Antialiasing

Bei einem groben Bildschirmraster, wie es z.B. in der niedrigen ST-Auflösung (320*200 Bildpunkte) benutzt wird, kommt es oft zu unschönen Treppeneffekten. Eine diagonal verlaufende Linie sieht dann in der Tat eher wie eine Treppe aus als wie eine gerade, saubere Lime. Durch Antialiasing lassen sich solche Effekte etwas glätten. Dabei wird jedes zu berechnende Bildschirm-Pixel in mehrere Unter-Pixel geteilt, und für jedes Unter-Pixel wird ein getrennter Suchstrahl berechnet. Aus den Unter-Pixel-Intensitäten wird dann eine mittlere Intensität für den Bildschirmpunkt berechnet.

Glanzpunkte

Bei der Schattierung weiden durch Lichtquellen auf den Objekten entstehende glänzende Flächen miteinberechnet.

Image-Mapping

Beim Image Mapping weiden Bit-Images durch verschiedene Verfahren auf die Objektoberfläche projiziert.

Prozedurale Texturen

Sie sind in den meisten Fallen mathematische Strukturen die ein dreidimensionales Muster an Raum erzeugen Die Objektfarbe ergibt sich dabei dann aus der Position des Objektes im Raum So lassen sich auf einfache und schnelle Weise einfach zu beschreibende Muster wie Netz. Block. Ringstrukturen erzeugen und den Objekten zuweisen Die Möglichkeiten von prozeduralen Strukturen reichen aber noch sehr viel weiter Durch fraktale Techniken lassen sich von marmorierten Oberflächen bis hm zu simulierten Wolkenfeldern eine Menge beeindruckender Effekte erzielen Weiterhin ist man bei prozeduralen Texturen nicht nur auf die Manipulation der Oberflächenfarbe beschränkt Es lassen sich vielmehr auch die Objektnormalen beeinflussen, so daß man zu regelrecht „fühlbaren Strukturen gelangt Auf diese Weise lassen sich dann z.B. solche Phänomene wie Wasserwellen simulieren oder etwa ein Blockmuster, das an den Enden abgerundet ist und so auf einfachste Weise ein fühlbares Kachelmuster erzeugt Fine gekachelte Wand kann auf diese Weise statt aus vielen komplizierten abgerundeten Kachelobjekten aus nur einem einzigen rechteckigen Objekt mit der entsprechenden Objekttextur erstellt werden.

Bump-Mapping

Wie beim Image-Mapping werden auf das Objekt projizierte Bit-Images dazu benutzt, das Aussehen des Objektes zu beeinflussen Beim Bump-Mapping werden die Bildinformationen wiederum dazu genutzt fühlbare Strukturen zu erzeugen. Die Farbinformationen des Bildes dienen demgemäß nicht der Einfärbung des Objektes, sondern als „Tiefeninformation“.

Texturen

Alternativ zu den Farben kann auch eine Oberflächenstruktur, sprich Textur berechnet werden. Um dort aus den vielen Parametern das richtige Ergebnis zu erhalten, ist schon ein wenig Erfahrung notwendig. Das Handbuch hilft an dieser Stelle allerdings mit ein paar Beispielen aus, um den Einstieg zu erleichtern. Leider kann man eine bestimmte Textur nicht speichern oder laden.

Licht

Damit wäre die Objekterstellung soweit abgeschlossen. Was noch fehlt ist ein bißchen Licht, damit wir auch sehen, was da geschaffen wurde. Im Licht-Dialog können sechs Lampen ausgewählt werden plus die Konfiguration des Umgebungslichtes. Jede dieser sechs Lampen kann in eines von drei verschiedenen Lichtmodellen geschaltet werden. Ein paralleles Licht entspricht so ziemlich den Sonnenstrahlen, die mit gleicher Intensität auf ein Objekt fallen. Die Lampe entspricht der altbekannten Glühlampe und der Spot einem Scheinwerfer. Wird der Spot gewählt, erscheint zusätzlich zu den beiden Kreisen, die den Einfallswinkel des Lichtes bestimmen, ein dritter Kreis, der den Kegelwinkel bestimmt. Dieser liegt irgendwo zwischen 1 und 180 Grad. Nachdem man die Lampen ausgewählt hat, müssen sie im Raum positioniert werden. Dies geschieht einfach mit der Maus im Fenster. Aus einer Liste wird die entsprechende Lampe ausgewählt und dann mit der Maus verschoben. Sinnvollerweise läßt man sich hierbei alle drei Ansichten gleichzeitig darstellen. Als letztes erfolgt die Kameraeinstellung. Dort bietet sich nichts Neues, sondern alle bekannten Parameter, die für eine Kamerapositionierung notwendig sind.

Die Kamera

Der wichtigste und letzte Punkt ist der Kameramodus, hinter dem sich die Bildparameter verbergen. Hier gilt dann auch folgende Faustregel: Je mehr Optionen hier angewählt werden, desto höher ist die Qualität des Ergebnisses und desto länger dauert die Berechnung. Die meisten Begriffe erklären sich von selbst, und in bestimmten Kombinationen werden die verschiedenen Shading-Methoden erreicht. In der rechten unteren Ecke des Dialogs wird die endgültige Bildgröße eingestellt. Damit lassen sich auch andere als die aktuelle Bildschirmauflösung berechnen.

Hin und her

Wer aufmerksam mitgezählt hat, wird festgestellt haben, daß eine Vielzahl an Dialogen durchlaufen werden muß, bis eine Szene arrangiert ist. Allerdings läßt sich diese Anzahl nicht vermeiden, ohne diverse Funktionseinschränkungen in Kauf zu nehmen. Aber gerade dieser Funktionsumfang macht RaySTart sehr interessant. Das Handbuch trägt zu einem großen Teil dazu bei, daß man sich in RayST art zurechtfindet. Eine ausführliche Erklärung der einzelnen Dialoge und von deren Funktionen ist jedesmal vorhanden. Allerdings ist die Reihenfolge nicht unbedingt logisch, wenn man anhand des Handbuches ein Objekt erstellen will. So wird im vorderen Teil des Handbuches das Bewegen und Drehen der Objekte besprochen, wobei erst im mittlerenTeil die Objekterstellung Erwähnung findet. Nach der Erstellung des Lichts kommt dann wieder die Farbgebung, die eigentlich im Anschluß an die Objekteditoren stehen sollte. Hier gilt es sicherlich, noch einmal Hand anzulegen. Ansonsten ist es aber ein detailreiches Handbuch, in dem nur wenige Fragen offen bleiben.

Ergo

Die Ergebnisse, die RaySTart liefert, können sich sehen lassen. Das Stilleben mit Kerze hat in der Erstellung weniger als zwei Stunden gekostet und wurde auf einem TT in der Auflösung 640 x 400 Punkte in etwas mehr als 13 Stunden berechnet. Das Bild mit dem Roboter wurde in 1024 x 768 Punkten berechnet und dauerte ca. 72 Stunden. Selbstverständlich werden alle Bilder als True-Color-Bilder mit 24 Bit Farbtiefe berechnet. Die Komplexität des Bildes bestimmt die Rechenzeit. Viele S chatten und Spiegelungen sorgen für einen großen Rechenaufwand. Der große Vorteil von RaySTart liegt aber darin, daß der Rechner beispielsweise über Nacht an einem Bild rechnen und bei Bedarf abgebrochen werden kann. Nach dem Speichern einer Datei läßt sich die Berechnung zu einem beliebigen Zeitpunkt fortführen. Der Preis von zur Zeit 169,- DM trägt zu der positiven Bewertung bei. Die einzige richtige Abwertung ist eigentlich nur die gewöhnungsbedürftige Oberflächengestaltung.

JH

RaySTart

Positiv:

Negativ:

Bezugsquelle:
Reinhard Epp Software Donauschwabenstr. 75a 33609 Bielefeld

Da es mittlerweile einige Programme gibt, die sich mit 3D-Objekten befassen, wollen wir hier einen überarbeiteten Auszug aus dem Developer-Text des CAD-3D2-Pakets abdrucken. Dadurch sollte es allen Programmierern möglich sein, den Import/Export eines 3D2-Files zu entwickeln. In den noch kommenden Berichten über andere Software-Produkte aus dem Raytracing- und Render-Bereich werden wir an dieser Stelle soweit möglich ebenfalls deren Formate vorstellen.

# Das 3D2-Objekt-File-Format

Der Header ist wie folgt auf gebaut

    WORD File ID — $3D02
    WORD Objektanzahl im File (1-40)
    WORD Lichtquelle A an/aus Schalter (0=aus, 1=an)
    WORD Lichtquelle B an/aus, Schalter (0=aus, 1=an)
    WORD Lichtquelle C an/aus, Schalter (0=aus, 1=an)
    WORD Lichtquelle A Intensität (0-7)
    WORD Lichtquelle B Intensität (0-7)
    WORD Lichtquelle C Intensität (0-7)
    WORD Umgebungslicht Intensität (0-7)
    WORD Lichtquelle A Z-Position (-50 bis +50)
    WORD Lichtquelle B Z-Position (-50 bis +50)
    WORD Lichtquelle C Z-Position (-50 bis +50)
    WORD Lichtquelle A Y-Position (-50 bis +50)
    WORD Lichtquelle B Y-Position (-50 bis +50)
    WORD Lichtquelle C Y-Position (-50 bis +50)
    WORD Lichtquelle A X-Position (-50 bis +50)
    WORD Lichtquelle B X-Position (-50 bis +50)
    WORD Lichtquelle C X-Position (-50 bis +50)
32  WORDs Objektfarbpalette (BlOS-Format)
32  WORDs Grundfarbenfeld

Damit die Farbpalette von Nutzen ist, muß sie mit dem Grundfarbenfeld im Einklang sein Dieses Feld gibt den Index der ersten Farbe in der jeweiligen Gruppe an, zu der die Farbe gehört. In der folgenden Beispielpalette, wo die Hintergrundfarbe Schwarz ist, gefolgt von 5 roten, 5 grünen und 5 blauen Farbtönen kann man sehen, wie das Grundfarbenfeld genutzt wird, um die Farbgruppen zusammenzustellen Die Farbe Rot startet bei Farbenindex 1. die Farbe GrUn bei Index 6 und die Farbe Blau bei Index 11.

INDEX FARBE GRUPPE
0 000 0
1 100 1
2 200 1
3 300 1
4 400 1
5 500 1
6 010 6
7 020 6
8 030 6
9 040 6
10 050 6
11 001 11
12 002 11
13 003 11
14 004 11
15 005 11

Die Gruppe wird benutzt, wenn die Schattierungen berechnet werden und wenn sie unkorrekt gesetzt sind, dann gibt es Farbensalat.

   
WORD Farbpalettentyp (0=7 Schattierungen, 1=14 Schattierungen 2=User-Einstellung)
WORD Gitter Linienfarbe (1-15)
WORD Outline Linienfarbe (0-15)
150 BYTEs Raum für zukünftige Erweiterungen

Die Objektdaten sind in einer Struktur enthalten, deren Große von der Komplexität des Objektes abhängt. Diese Struktur wiederholt sich für jedes einzelne Objekt des Files:

   
9 BYTEs Objektname (8 Zeichen max) mit Null-Byte
WORD Anzahl der Objektpunkte 0 5000-Maximum)

Die folgende Struktur definiert die X-. Y- und Z-Koordinaten für jeden Punkt des Objekts. Sie besteht aus 3 Wörtern pro Punkt und wiederholt sich mit der oben stehenden Punktanzahl

   
WORD X Koordinate des Punktes, gesichert im Standard-CAD-3D-fixed-point-Format Z.B.: eine X-Koordinate mit dem Wert 23.69 wird als Integerwert von 2369 gesichert Wenn diese Variable dann später wieder eingelesen wird, dann muß sie einfach wieder durch 100 geteilt werden um eine Fließkommavariable zu erhalten.
WORD Y-Koordinate des Punktes s.o. WORD Z-Koordinate des Punktes s.o.. Nachdem alle Punktkoordinaten eingelesen wurden, beschreibt der nächste Abschnitt die dreieckigen Facetten, aus denen das Objekt besteht.
WORD Anzahl der dreieckigen Facetten im Objekt (30000 max)

Die folgende Struktur beschreibt die Oberfläche des Objektes. Die Struktur besteht aus 4 Wörtern und wiederholt sich für jede einzelne Facette des Objekts Jede Facette ist dreieckig und wild durch 3 Punkte (A, B, C) definiert. Wenn man von außen auf die Facette sieht, ist die Reihenfolge der Punkte A, B und C im Uhrzeigersinn. Dies erlaubt die schnelle Beurteilung, ob eine Facette sichtbar ist oder nicht. Jede Facette hat zusätzlich zu den 3 Punkten noch ein Wort für die Farbe und für die Anzeige, welche der folgenden 3 Linien (A-B. B-C, C-A) im Hidden-Line-Modus sichtbar ist oder nicht

   
WORD Nummer des ersten Punktes in der Facette, als A bezeichnet Der Wert kann von 0 bis zur Anzahl der Punkte im Objekt reichen, abhängig von der Anzahl der Objektpunkte
WORD Nummer des 2 Punktes in der Facette als B bezeichnet Der Wert kann von 0 bis zur Anzahl der Punkte im Objekt reichen, abhängig von der Anzahl der Objektpunkte
WORD Nummer des 3 Punktes in der Facette als C bezeichnet Der Wert kann von 0 bis zur Anzahl der Punkte im Objekt reichen, abhängig von der Anzahl der Objektpunkte WORD Farben/Linienindikator Das Low-Byte dieses Wertes ist eine Nummer von 1-15 und gibt die Farbe der Facette an wenn sie gezeichnet werden soll Dieser Wert wird von der Schattierungsroutine benutzt um die Farbgruppe innerhalb der Palette zu bestimmen, die von der Facette benutzt wird Das High-Byte wird benutzt um im Hidden-line-Modus zu bestimmen, ob die Linie gezeichnet werden soll oder nicht Die 3 unteren Bits in diesem Byte werden zu diesem Zweck als Flags benutzt Eine Null im Bit bedeutet, daß die Lime nicht gezeichnet werden muß, eine 1 bedeutet demgemäß, daß die Lime gezeichnet werden soll Die Zuweisungen sehen wie folgt aus
   
Bit 2: Linie A-B
Bit 1: Linie B-C
Bit 0: Linie C-A

Die Facettendaten wiederholen sich, bis alle Facetten definiert wurden Dies ist dann auch das Ende des Files.



Aus: ST-Computer 10 / 1993, Seite 134

Links

Copyright-Bestimmungen: siehe Über diese Seite