In der Computergrafik möchte man sehr oft wissen, wie groß ein Objekt auf dem Bildschirm aussieht, ob unter OpenGL, DirectX, ... !
Eine einfache Möglichkeit, eine obere Grenze der Pixelabdeckung zu erhalten, besteht darin, ein Objekt in einem Begrenzungsrahmen oder zum Beispiel einer Kugel einzubetten, und dann einfach die Kugel oder den Rahmen zu rastern und die Anzahl der Pixel ermittelt. Was bei der 3D Darstellung zu Performanz-Steigerung und besseren Darstellung führt!
Dies erfordert Komplexität in der 3D Engine, und wahrscheinlich verzögert sich die Verarbeitung, da das Ergebnis langsam ist. Moderne Hardware ermöglicht ein bedingtes Rendern, aber die Technik kann dennoch nur in einigen Fällen angewendet werden. Zum Beispiel ist es sinnvoll wenn eine 3D Tessellation oder ein Geometrie in der Lage wäre, zu Beispiel Baumblätter basierend auf der Pixelabdeckung des Objekts spontan zu tessellieren oder auszulassen!
Inhalt:
1.) ... Ein schlichtes Beispiel mit 3D Kugeln / Sphere!
2.) ... Ein Beispiel mit 3D Kugeln / Würfel!
3.) ... WebGL Planare und perspektivische Projektionszuordnung!
1.) Ein schlichtes Beispiel mit 3D Kugeln / Sphere!
Hier finden sie eine schlichte und elektive Lösung: ►► https://www.shadertoy.com/view/XdBGzdPS:
Dies Ganze muss natürlich noch weiter gedacht werden um an der entsprechenden 3D Engine seine vollen Vorteile zu entwickeln!
(Bild-1) Kugelprojektion, mit OpenGL und Berechnungen! |
Info:
Kugeln im 3D Raum werden zu Ellipsen, wenn sie auf die Kamerasichtebene projiziert werden. Tatsächlich lassen sich diese Ellipsen aus den Kameraparametern und der Kugelgeometrie analytisch bestimmen, so dass ihre genaue Position, Orientierung und Oberfläche berechnet werden können. Dies bedeutet, dass es bei einer gegebenen Kugel und einer Kamera- und Pufferauflösung eine analytische Formel gibt, die die Anzahl der Pixel angibt, die von einer Kugel im Bild abgedeckt werden. Dies kann sehr nützlich sein für Implementieren von LOD für Objekte basierend auf ihrer Größe auf dem Bildschirm (denken Sie an Bäume, Vegetation, Charaktere oder andere komplexe Objekte).
Kugeln im 3D Raum werden zu Ellipsen, wenn sie auf die Kamerasichtebene projiziert werden. Tatsächlich lassen sich diese Ellipsen aus den Kameraparametern und der Kugelgeometrie analytisch bestimmen, so dass ihre genaue Position, Orientierung und Oberfläche berechnet werden können. Dies bedeutet, dass es bei einer gegebenen Kugel und einer Kamera- und Pufferauflösung eine analytische Formel gibt, die die Anzahl der Pixel angibt, die von einer Kugel im Bild abgedeckt werden. Dies kann sehr nützlich sein für Implementieren von LOD für Objekte basierend auf ihrer Größe auf dem Bildschirm (denken Sie an Bäume, Vegetation, Charaktere oder andere komplexe Objekte).
2.) Ein Beispiel mit 3D Kugeln / Würfel!
Hier ist ein zweites Beispiel um die Projektion zu verstehen:
►►► https://www.shadertoy.com/view/WtfGW2
(Bild-2) Kugelprojektion, und 3D Würfel! |
3.) WebGL Planare und perspektivische Projektionszuordnung!
Projektion Mapping ist der Prozess des "Projizierens" eines Bildes im gleichen Sinne wie das Richten eines Filmprojektors auf eine Leinwand und das Projizieren eines Films darauf. Ein Filmprojektor projiziert eine perspektivische Ebene. Je weiter die Leinwand vom Projektor entfernt ist, desto größer wird das Bild. Wenn Sie den Bildschirm so neigen, dass er nicht senkrecht zum Filmprojektor steht, wäre das Ergebnis ein Trapez oder ein beliebiges Viereck.
Dies kann man hier auf eine spielerische Weise verstehen lernen:
►► https://webglfundamentals.org/webgl/lessons/webgl-planar-projection-mapping.html
(Bild-3) Projektion, mit OpenGL und Berechnungen! |