3d - Was passiert, wenn ein Punkt hinter dir ist?
-
Ich vermute mal, dass das hier das passendste Unterforum ist.
Hallo,
ich hatte vor einer Weile einen dieser Geistesblitze, bei dem man plötzlich etwas versteht, von dem man jahrelang geglaubt hat, dass man es nie verstehen wird. Dieser Geistesblitz hatte mit 3d zu tun. Ich habe endlich kapiert, dass 3d einfach nur ist, dass du x und y durch z teilst, und - tadaa! - 3d auf einem zweidimensionalen Bildschirm. Wenn man sich dann umschauen will, dann ist das auch einfach nur wie bei 2d. Allerdings habe ich eine Sache immer noch nicht verstehen können: Wenn ein 3d-Punkt hinter dir ist, also eine negative Z-Koordinate hat, dann zeichnet man ihn einfach nicht, denn bei negativen Z-Koordinaten dreht die x-und-y-durch-z-Sache durch und ich kenne keinen, der sehen kann, was direkt hinter ihm vor sich geht. Aber wenn man eine Linie von einem sichtbaren Punkt zu einem Punkt hinter einem zeichnen will, was macht man dann? Und was macht man, wenn man genau auf dem Punkt ist, Z also 0 und der Computer unglücklich über eine ZeroDivision ist?
Gruß
NoobTracker
-
@NoobTracker Auch ein Linie besteht aus einzelnen Punkten.
Und 0 kann man prüfen. Der Computer kann vergleichen.Ansonsten verstehe ich nur Bahnhof
-
@DirkB Aber was soll denn passieren, wenn du genau auf dem Punkt bist? Wird dann nichts gezeichnet?
Und ich glaube nicht, dass ich alle Linien in tausense Punkte aufteilen will, damit ich bei jedem prüfen kann, ob er hinter der Kamera ist.
-
@NoobTracker Du kannst den Schnittpunkt berechnen und dann von dort die Linie zeichnen.
Was meinst du, wie Computergrafik funktioniert bzw. warum die Grafikkarten soviel Leistung haben?
-
@DirkB Danke, wenn ich drüber nachdenke, dann müsste es das sein. Mal schauen ...
-
@NoobTracker
Redest du gerade von OpenGL und der perspektivischen Projektion?
-
@Quiche-Lorraine Nein, einfach nur mein eigenes Scratch-Programm (ich mach das nur auf Spass, keine Sorge).
-
@NoobTracker sagte in 3d - Was passiert, wenn ein Punkt hinter dir ist?:
(ich mach das nur auf Spass, keine Sorge
Ich beschäftige mich gerne mit Fraktalen, Chaos und Attraktoren. Besonders fazinierend finde ich es wenn Gleichungen austicken und ab einem Parameterwert ins Chaos übergehen.
-
@Quiche-Lorraine Wirklich, Scratch ist, als würde einem beim C++ programmieren der rechte Arm fehlen. Und ist langsamer als BASIC am C64.
-
@NoobTracker
Ahh du meinst mit Scratch die Programmiersprache. Die kannte ich bis vor wenigen Momenten noch nicht.Ich dachte du wolltest OpenGL from the scratch programmieren.
-
@Quiche-Lorraine Ja, hat mich auch schon verwirrt, ich glaube, es heißt "from scratch", whatever. Es geht. Mit ein wenig Logik und einem Haufen cleverem Rumgerate.
-
Man teilt üblicherweise nicht einfach nur x und y, sondern man transformiert in den sogenannten "Screenspace" und zeichnet den dann. Eine vollständige Transformation enthält dabei auch die Tiefe, die man im einfachsten Fall auch einfach 1:1 übernehmen kann oder mit einer beliebigen Konstanten multipliziert. Die Tiefe brauchst du zum zu entscheiden, was näher an der Kamera ist, d.h. ganz konkret wenn zwei Punkte auf dem selben x,y landen, welcher näher ist und den anderen verdeckt (bzw. auf einer modernen GPU wird der Wert in den ZBuffer geschrieben und verglichen). Dabei fällt ganz automatisch auch ein "Clipping" an, genau wie bei x und y nur Punkte gezeichnet werden, die auf dem Bildschirm liegen, zeichnet man auch in der Tiefe nur von z.B. 1 bis 10000, also nichts was hinter dir liegt und nichts was zu weit vor dir liegt.
-
komisch, ich hab genau zu diesem Thema nen konkretes Problem, aber ich mach mal nen eigenen Thread auf ...