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:
- Erstellung des Objektes mit einer sehr hohen Anzahl kleiner Facetten. Nachteil: groĂer Rechenaufwand und Speicherbedarf bei geringer QualitĂ€t des Abbildes.
- 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.