← ST-Computer 10 / 1993

RaySTart: Auge um Auge, Strahl um Strahl

Software

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:

  • gutes Preis-Leistungs-VerhĂ€ltnis
  • hoher Funktionsumfang
  • lĂ€uft auf jedem Rechner

Negativ:

  • unĂŒbersichtliche Dialoge

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.