Rendern / Stereoskopie / Zentralprojektion

Neue Frage »

f(x) Auf diesen Beitrag antworten »
Rendern / Stereoskopie / Zentralprojektion
Hallo!

Ich möchte gerne 3D-Objekte in 2D-Grafiken darstellen.
Dieser Vorgang wird, soviel ich verstanden habe, als Rendern bezeichnet.
Bei Wikipedia habe ich gelesen, dass durch Rendern keine stereoskopische Wirkung erzielt werden kann, weil keine Tiefeninformationen vermittelt werden können, die aber in "Wirklichkeit" entstehen, weil ein Mensch zwei Augen hat.

Kann mir jemand genauer erklären, warum beim Rendern keine solche Wirkung entsteht?

Und: Wird jeder Vorgang, bei dem 3D-Objekte in 2D-Grafiken dargestellt werden, als Rendern bezeichnet, egal, ob die Grafiken mit Zentralprojektionen oder etwas anderem erzeugt werden oder ist Rendern ein speziellerer Begriff ?

Und:
Zentralprojektionen sind ja kollineare Abbildungen.
Heißt das, dass man eine Matrix finden kann, die eine Gerade im Raum auf eine Gerade in der Bildebene projeziert?

Danke
sqrt(2) Auf diesen Beitrag antworten »
RE: Rendern / Stereoskopie / Zentralprojektion
Zitat:
Original von f(x)
Dieser Vorgang wird, soviel ich verstanden habe, als Rendern bezeichnet.

Das ist meines Erachtens eine sehr enge Definition von "Rendern".

Zitat:
Original von f(x)
Bei Wikipedia habe ich gelesen, dass durch Rendern keine stereoskopische Wirkung erzielt werden kann, weil keine Tiefeninformationen vermittelt werden können, die aber in "Wirklichkeit" entstehen, weil ein Mensch zwei Augen hat.

Kann mir jemand genauer erklären, warum beim Rendern keine solche Wirkung entsteht?

Ich denke, es ist einfach gemeint, dass du beim Betrachten der Projektion den ein Eindruck der Dreidimensionalität nur durch Größeninformationen und Verdeckung bekommst, und nicht, weil du wie in der Realität den Raum aus zwei verschiedenen Blickwinkeln bekommst. Anders ist das (ohne Einsatz von Anaglyphenbrillen o.ä., wo dann zwei unterschiedliche Bilder auf die gleiche Ebene projiziert werden) bei einer Projektion auf eine Ebene eben nicht möglich.

Zitat:
Original von f(x)
Und: Wird jeder Vorgang, bei dem 3D-Objekte in 2D-Grafiken dargestellt werden, als Rendern bezeichnet, egal, ob die Grafiken mit Zentralprojektionen oder etwas anderem erzeugt werden oder ist Rendern ein speziellerer Begriff ?

Ich halte deinen Begriff von "Rendern" schon zu speziell. Meine Definition von "Rendern" ist einfach die Rasterung eines Bildes aus Modellierungsinformationen, seien das Vektor-, Mesh- oder Voxeldaten. Es muss sich noch nicht einmal um eine 3D-Szene handeln, die gerendert wird.

Zitat:
Original von f(x)
Zentralprojektionen sind ja kollineare Abbildungen.
Heißt das, dass man eine Matrix finden kann, die eine Gerade im Raum auf eine Gerade in der Bildebene projeziert?

Ja.
f(x) Auf diesen Beitrag antworten »

Okay!
Mit "Szene" sind dann die 3D-Objekte im Raum "an sich" gemeint, also irgendwelche Daten von enem 3D-Raum, die ihn eindeutig definieren, gemeint, ja?

Meint "Bild" dann ein 2D-Bild von einer Szene?

Und "Rendern (In der Computergrafik)" ist dann das Erstellen eines digitalen Bildes von einer Szene, ja?

Und ist Modellierung das Gegenteil von Rendern, also erstellt es eine Szene aus einem Bild?
sqrt(2) Auf diesen Beitrag antworten »

Zitat:
Original von f(x)
Mit "Szene" sind dann die 3D-Objekte im Raum "an sich" gemeint, also irgendwelche Daten von enem 3D-Raum, die ihn eindeutig definieren, gemeint, ja?

Die "Szene" ist einfach das, was dargestellt werden soll und in einem bestimmten Datenformat vorliegt.

Zitat:
Original von f(x)
Meint "Bild" dann ein 2D-Bild von einer Szene?

Ja.

Zitat:
Original von f(x)
Und "Rendern (In der Computergrafik)" ist dann das Erstellen eines digitalen Bildes von einer Szene, ja?

"Erstellen" ist etwas schwammig. "Rastern" trifft es besser.

Zitat:
Original von f(x)
Und ist Modellierung das Gegenteil von Rendern, also erstellt es eine Szene aus einem Bild?

"Modellierung" ist die Erstellung der Daten, die dann gerendert das Bild ergeben.
f(x) Auf diesen Beitrag antworten »

Achso, danke!
f(x) Auf diesen Beitrag antworten »

Was bedeuten denn beim Z-Buffer-Algorithmus http://de.wikipedia.org/wiki/Z-Buffer
die Werte "nah" und "fern" in der Formel?
 
 
sqrt(2) Auf diesen Beitrag antworten »

Das sind die Werte, die die Grenzen des Sichtbarkeitsbereichs angeben. Alles, was näher als nah oder weiter weg als fern ist, wird nicht gerendert.
f(x) Auf diesen Beitrag antworten »

Wozu sollte der Sichtbarkeitsbereich eingeschränkt werden?

Und was bedeutet der Punkt z' ?
Ist es die Tiefe eines Raumpunktes?

Wenn z' <0 ist, dann ist der Raumpunkt näher am Betrachter und dem entsprechende Z-Buffer-Wert wird eine neue Tiefe zugeordnet, richtig?

Allgemeine Frage zum Algorithmus:
Läuft es so ab, dass die Tiefe eines jeden Punktes im Raum mit dem aktuellen "nähesten" Wert des entsprechenden Z-Buffers verglichen wird und gegebenenfalls der Z-Buffer-Speicher geändert werden muss?

Wenn im Raum eine Strecke definiert ist, muss dann jeder Pixel der Strecke mit dem entsprechendem Z-Buffer verglichen werden?
Dauert das nicht lange?

Merkt sich eine andere Variabel zu jedem Bildschirmpunkt auch die Farbe, die das momentan näheste Objekt hat und makiert, wenn alle Punkte getestet wurden, alle Bildschirmpunkte mit der entsprechenden Farbe
f(x) Auf diesen Beitrag antworten »

Danke für deine bisherigen Antworten, die helfen mir wirklich weiter!

Aber ich muss jetzt die Menge der Fragen, die noch unbeantwortet sind, um zwei Fragen erweitern:

Bei der Zentralprojektion werden ja Objekte im Raum auf eine Bildebene projiziert.
Der Fotoapparat funktioniert ja auch nach diesem Prinzip, aber dort ist die Bildebene doch nicht unbeschränkt, sonst wäre der Fotoapparat unendlich groß.
Spricht man dann auch von einer Bildebene oder einfach von einer Bildfläche?

Bzw. Nennt man im allgemeinen beschränkte Bildebenen auch Bildebenen oder besser Bildflächen?
Kann man bei beschränkten Bildebenen überhaupt noch von Zentralprojektion sprechen?
sqrt(2) Auf diesen Beitrag antworten »

Zitat:
Original von f(x)
Wozu sollte der Sichtbarkeitsbereich eingeschränkt werden?

Weil es recht sinnlos ist, Objekte zu rendern, die direkt vor der Nase des Beobachters kleben oder extrem weit weg sind.

Zitat:
Original von f(x)
Und was bedeutet der Punkt z' ?
Ist es die Tiefe eines Raumpunktes?

Wenn z' <0 ist, dann ist der Raumpunkt näher am Betrachter und dem entsprechende Z-Buffer-Wert wird eine neue Tiefe zugeordnet, richtig?

So wie ich das verstehe, ist z' der Wert des z-Buffers fuer ein Objekt der Entfernung z, und zwar so, dass z' zwischen -1 (near) und 1 (far) liegt und die Aufloesung des z-Buffers eher fuer Bereiche, die naeher an near als an far liegen, aufgewendet wird.

Zitat:
Original von f(x)
Allgemeine Frage zum Algorithmus:
Läuft es so ab, dass die Tiefe eines jeden Punktes im Raum mit dem aktuellen "nähesten" Wert des entsprechenden Z-Buffers verglichen wird und gegebenenfalls der Z-Buffer-Speicher geändert werden muss?

Ja.

Zitat:
Original von f(x)
Wenn im Raum eine Strecke definiert ist, muss dann jeder Pixel der Strecke mit dem entsprechendem Z-Buffer verglichen werden?

Ja. Du aber musst nicht unbedingt jeden Z-Buffer-Wert fuer jeden Pixel der Strecke einzeln ausrechnen, sondern kannst auch interpolieren.

Zitat:
Original von f(x)
Dauert das nicht lange?

In Software-Implementation ja, deswegen uebernimmt das heute die Hardware.

Zitat:
Original von f(x)
Merkt sich eine andere Variabel zu jedem Bildschirmpunkt auch die Farbe, die das momentan näheste Objekt hat und makiert, wenn alle Punkte getestet wurden, alle Bildschirmpunkte mit der entsprechenden Farbe

Nein. Der Z-Buffer wird beim Rendern verwendet, nicht vorher.

Zitat:
Original von f(x)
Bei der Zentralprojektion werden ja Objekte im Raum auf eine Bildebene projiziert.
Der Fotoapparat funktioniert ja auch nach diesem Prinzip, aber dort ist die Bildebene doch nicht unbeschränkt, sonst wäre der Fotoapparat unendlich groß.
Spricht man dann auch von einer Bildebene oder einfach von einer Bildfläche?

Ich kenne den Begriff "Bildflaeche" nicht; im Fotoapparat heiszt diese bei mir "Film".

Zitat:
Original von f(x)
Kann man bei beschränkten Bildebenen überhaupt noch von Zentralprojektion sprechen?

Zunaechst wird jedenfalls eine Zentralprojektion durchgefuehrt. Wie viel von dem Bild dieser nun auf den Bildschirm kommt, hat mit der Projektion selbst nicht viel zu tun.
f(x) Auf diesen Beitrag antworten »

Zitat:
Merkt sich eine andere Variabel zu jedem Bildschirmpunkt auch die Farbe, die das momentan näheste Objekt hat und makiert, wenn alle Punkte getestet wurden, alle Bildschirmpunkte mit der entsprechenden Farbe

Wie wird denn sonst festgesellt, welches Objekt am nähesten ist, wenn doch Z-Buffer nur die Entfernung des nähesten Objekts kennt, aber sonst keine Information über das näheste Objekt kennt.

Zitat:
Wenn im Raum eine Strecke definiert ist, muss dann jeder Pixel der Strecke mit dem entsprechendem Z-Buffer verglichen werden?

Wie funktioniert denn hier die Interpolation?

Wie soll denn das heute die Hardware übernehmen?
Gibt es extra ein Z-Buffer-Gerät im PC?
Ist es also unsinnig, ein Z-Buffer-Programm zu programmieren?
sqrt(2) Auf diesen Beitrag antworten »

Zitat:
Original von f(x)
Wie wird denn sonst festgesellt, welches Objekt am nähesten ist, wenn doch Z-Buffer nur die Entfernung des nähesten Objekts kennt, aber sonst keine Information über das näheste Objekt kennt.

Ich habe doch gesagt, dass der Z-Buffer während des Rasterns eingesetzt wird. Ein Pixel wird nur dann von einem anderen Pixel übermalt, wenn sein z'-Wert kleiner ist als der Wert, der an dieser Stelle gerade im Z-Buffer steht.

Zitat:
Original von f(x)
Wie funktioniert denn hier die Interpolation?

Wenn man ein Vertex rendern will, berechnet man die z'-Werte der Eckpunkte und führt für alle anderen Punkte des Vertex eine lineare Interpolation durch, möglicherweise, indem man die z- und z'-Werte ins gleiche Verhältnis setzt; Genaues weiß ich da nicht.

Zitat:
Original von f(x)
Wie soll denn das heute die Hardware übernehmen?
Gibt es extra ein Z-Buffer-Gerät im PC?

Das macht die GPU, die in den allermeisten Fällen auf der Grafikkarte zu finden sein sollte.

Zitat:
Original von f(x)
Ist es also unsinnig, ein Z-Buffer-Programm zu programmieren?

Es gibt auch Software-Implementationen von Z-Buffern, sie sind nur langsam. Ich denke, dass man das schon der Hardware überlassen sollte.
f(x) Auf diesen Beitrag antworten »

Und wenn ein Programmierer ein Programm schreibt, das den Z-Buffer-Algorithmus benötigt, wie wird denn dann der Z-Buffer-Algorithmus in das Programm implementiert?
sqrt(2) Auf diesen Beitrag antworten »

Für den Programmierer ist das Z-Buffering i.d.R. völlig transparent. Er aktiviert es einmal in dem API, das er verwendet, (und lässt dieses ihn auch vor dem Neuzeichnen löschen) und dieses regelt das dann alles Weitere mit der Hardware; es fungiert ja meistens als Hardware Abstraction Layer.
f(x) Auf diesen Beitrag antworten »

Weißt du, ob sich der Z-Buffer-Algorithmus auch mit Turbo Pascal programmieren lässt oder geht das nur mit moderneren Programmiersprachen?
sqrt(2) Auf diesen Beitrag antworten »

Turbo-Pascal ist Turing-vollständig. Wenn du Z-Buffering in Turbo Pascal haben möchstest, bleibt dir mangels passendem API sogar nichts anderes übrig, als den Z-Buffer selbst zu schreiben.
f(x) Auf diesen Beitrag antworten »

Vielen Dank!
Ich denke, ich habe jetzt keine Fragen mehr.
f(x) Auf diesen Beitrag antworten »

Liefert die 2-Punkte-Projektion eine Abbildung, die die Tiefe eines Objekts im Raum erkennen lässt?
sqrt(2) Auf diesen Beitrag antworten »

2-Punkte-Projektion?
f(x) Auf diesen Beitrag antworten »

Tschuldigung, ich meinte die 2-Punktperspektive.
sqrt(2) Auf diesen Beitrag antworten »

Entscheide das doch selber. (Eigentlich sind diese Fluchtpunktverfahren doch dazu da, um dreidimensionale Strukturen realistisch abzubilden...)
1103 Auf diesen Beitrag antworten »
RE: Rendern / Stereoskopie / Zentralprojektion
gucken sie mal auf www.executiveproducers.de jede menge stereo-bilder.
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »