Zum 3DCenter Forum
Inhalt




Geometrie: High Order Surfaces

25. April 2004 / von Frank / Seite 12 von 13


   Curved Point Normal Triangles (N-Patch)

Folgender Gedankengang: Wir wollen die visuelle Qualität eines Objektes erhöhen, jedoch ohne die bestehende vorliegende Geometrie zu ändern. Diese schaut im folgenden so aus, dass unser Objekt aus mehreren Dreiecken besteht, dessen Eckpunkte Normalenvektoren besitzen, die der Beleuchtung des Objektes dienlich sind. (Dies geschieht per Vergleich des Normalenvektors mit dem Richtungsvektor des Lichtes - je nachdem findet dann eine Abdunklung der Ebene statt.) Da die Normalenvektoren aber nur an einen Eckpunkt angehangen werden, ist es nicht unbedingt sinnvoll, dass diese wirklich senkrecht auf der jeweiligen Dreiecksebene stehen, sondern eher ein Mittel der Normalvektoren aller anliegenden Flächen sind:

Um die visuelle Qualität zu erhöhen, könnte man nun versuchen, die Anzahl der Dreiecke zu erhöhen - wohlgemerkt ohne eine Veränderung in den vorliegenden Informationen vorzunehmen. Natürlich wird dies nicht irgendwie passieren, sondern mit unseren Freiformflächen. Wir stülpen ein ganzen Patch über ein einzelnes Dreieck (zum Beispiel über das Ockerfarbene im obigen Bild). Da die Grundfläche selbst ja auch ein Dreieck ist, werden wir wohl auch einen dreieckigen Patch benutzen. Nehmen wir unser Bézierdreieck dafür, wird man sich aber die Frage stellen, was wir mit nur drei Kontrollpunkten (den drei Ecken) wollen? Diese reichen lediglich dafür aus, ein planes Bézierdreieck zu erzeugen - was wir im dem Sinne aber schon vorliegen haben. Wir brauchen also mehr Kontrollpunkte:


Links: das vorliegende Ausgangsmaterial - drei Ecken mit zugehörigen Normalenvektoren
Rechts: das zugehörige Ergebnis - auch zu sehen der Einfluss der Normalenvekoren auf die Beleuchtung


Links: Wir erzeugen ein Kontrollnetz (wie genau - später) eines kubisches Bézierdreiecks
Rechts: das zugehörige Bézierdreieck mit einer zusätzlich besseren Beleuchtung und natürlich einer homogeneren Form

Wie also wollen wir unser Kontrollnetz überhaupt erzeugen? Dafür werden die Normalenvektoren jeder Ecke genutzt. Diese geben uns ja eine weitere Auskunft über die eigentlich zugrunde liegende Fläche: nämlich über deren eigentliche Lage der Tangentialebene in diesem Punkt. Jetzt erinnern wir uns: Bei dem Kontrollpolygon einer Bézierkurve ist die Strecke zwischen den beiden ersten Kontrollpunkte auch Tangente an die Kurve. Genauso verhält es sich bei den beiden Bézierpatches natürlich auch: die ersten vier (Bézierrechteck) oder drei (Bézierdreieck) Punkte des Kontrollnetzes sind auch Tangentialebene am Eckpunkt. Was liegt also näher, für unsere Fälle das Kontrollnetz nun so zu formen, dass der gegebene Normalenvektor auch wirklich Normalenvektor zu diesem Flächenpunkt ist.


Links: die Erzeugung eines Kontrollpunktes: dieser befindet sich auf der des Normalenvektors zugrundeliegenden Ebene
Rechts: damit erhalten wir alle gelben Kontrollpunkte

Die genaue Formel für die Erzeugung dieser einzelnen Punkte wollen wir uns an dieser Stelle sparen. Fraglich bei der Erzeugung des Kontrollnetzes scheint noch der Mittelpunkt zu sein, welcher sich jedoch nur aus einer speziellen Kombination der Umliegenden zusammensetzt (vereinfacht). Damit ist das Kontrollnetz fertig und damit auch unser Bézierdreieck selbst. Dieses wird in der Hardware selbst wieder aus einzelnen Dreiecken gezeichnet: bis zu 64 sogenannten Microtriangles. Es findet nach einen speziellen Algorithmus auch eine feinere Abstufung der Normalenvektoren statt, so dass die vermutlich entstehende Wölbung im einzelnen Dreieck selber besser ausgeleuchtet werden kann.






Kommentare, Meinungen, Kritiken können ins Forum geschrieben werden - Registrierung ist nicht notwendig Zurück / Back Weiter / Next

Shortcuts
nach oben