3D-Probleme: "Hidden lines", "Edges", "Silhoutte lines", "Lightness"

Das Problem

Die Darstellung eines dreidimensionalen Objektes auf zweidimensionalen Ausgabemedien stößt stets auf das Problem, das Informationsdefizit, das infolge der fehlenden Tiefenwirkung eigentlich nie zu vermeiden ist, in der Weise zu reduzieren, dass die Darstellung dem angestrebten Zweck gerecht wird. Während für möglichst realitätsnahe Ansichten die Sichtbarkeit der eigentlich verdeckten Kanten nicht tolerierbar ist, werden in technischen Zeichnungen verdeckte Kanten häufig bewusst eingezeichnet, weil eine möglichst komplette Information über das dargestellte Objekt höher als die "Schönheit der Darstellung" bewertet werden muss.

Links sieht man einen so genannten "Buckyball" (begrenzt von 12 gleichseitigen Fünfecken und 20 gleichseitigen Sechsecken), bei dem alle 90 Kanten zu sehen sind, was natürlich nicht akzeptabel ist. Rechts sieht man ein "Hidden lines"-Bild, bei dem alle verdeckten Kanten ausgeblendet sind.

Ob aber verdeckte Kanten ausgeblendet (realistische Darstellung) oder zum Beispiel gestrichelt dargestellt werden sollen (technische Zeichnung), ändert am Problem nichts: Es muss ermittelt werden, welche Kanten dies sind.

Eine weitgehend fotorealistische Darstellung ist mit dem sogenannten "Raytracing" ("Strahlenverfolgung") möglich, bei dem der Lichtstrahl allen möglichen Ereignissen auf dem Weg zum Betrachter unterworfen werden kann (Durchgang durch ein teilweise lichtdurchlässiges Medium, Spiegelung und/oder Brechung an einer Oberfläche usw.). Dieses Verfahren wird von den CanvasGI-Funktionen nicht unterstützt. Wer Probleme dieser Art lösen möchte, sollte sich unbedingt eines dafür geeigneten Software-Paketes bedienen. Auch dann, wenn die wesentlichen Teile des sehr aufwendigen Algorithmus von den Funktionen eines solchen Grafik-Paketes übernommen werden, bleibt für den Programmierer noch genug zu tun.

Da auch beim Verzicht auf fotorealistische Darstellung (für Konstruktionszeichnungen ohnehin nicht erwünscht) die erforderliche Rechenzeit für das Ausblenden verdeckter Linien und Flächen erheblich sein kann, werden zur Erzielung eines akzeptablen Antwortverhaltens im Dialogbetrieb gern Kompromisse bei den Algorithmen in Kauf genommen, so dass in speziellen Fällen Fehler in der Darstellung nach dem Sichtbarkeitstest eher als sehr große Rechenzeiten toleriert werden. Natürlich sollte immer das "Umschalten auf einen sauberen und aufwendigen Algorithmus" möglich sein.

Ein für die Bildschirmausgabe besonders schnelles Verfahren ist, alle Oberflächen des Körpers in der Reihenfolge einer "Prioritätenliste" zu zeichnen. Wenn die Reihenfolge in dieser Liste z. B. durch die Entfernung der Flächen vom "Eye point" bestimmt wird und die am weitesten entfernten Flächen zuerst gezeichnet werden, dann überzeichnen die Flächen mit kürzerer Entfernung automatisch die Flächen, die von ihnen ganz oder teilweise überdeckt werden. Dieses Verfahren verlangt im allgemeinen noch einige Verfeinerungen:

 
Man vermutet einen Würfel, ...
... es ist aber ein Ikosaeder

Unabdingbar für technische Zeichnungen ist jedoch die Möglichkeit, auch (meist sogar ausschließlich) die gesamte gewünschte Information durch Linien auszudrücken, bei denen zwei Typen zu unterscheiden (und auf unterschiedliche Weise zu erzeugen) sind:

Praktikable und schnelle Lösungen, die in CanvasGI realisiert sind

CanvasGI unterstützt die folgenden Lösungen, mit denen auf einfachen und schnellen Wegen die korrekte Vorstellung vom dreidimensionalen Objekt in der zweidimensionalen Zeichenfläche erreicht wird:

Weiterlesen

Empfehlung zum Weiterlesen: Auf der Seite "3D-Flächenmodelle in geeigneter Reihenfolge zeichnen" wird die oben genannte Technik zur Überdeckung nicht sichtbarer Flächen und Kanten demonstriert.