[gelöst]Mathematik: Maximale sichtbare 3D-Koordinaten

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
joggel

[gelöst]Mathematik: Maximale sichtbare 3D-Koordinaten

Beitrag von joggel »

Guten Morgen,

ich habe eine eher mathematische Frage:

Ich will ein Koordinatenkreuz in meinem 3D-View rendern, wie man das auch von anderen 3D-Editoren kennt.
So etwas wie das hier: https://docs.godotengine.org/de/latest/ ... to_3d3.png

Die Koordinatenachsen sind bei mir simple Linien, und ich gebe ihre Vertices in Weltkoordinaten an; also keine Transformation durch ViewMatrix oder so.
Nun frage ich mich, wie ich die Längen der Linien berechnen muss, damit sie eben bis zum Rand des Viewports bzw. des View-Frustum gehen.

Hat da jemand einen Lösungsvorschlag?

Gruß
Zuletzt geändert von joggel am 01.09.2021, 12:20, insgesamt 1-mal geändert.
Benutzeravatar
xq
Establishment
Beiträge: 1581
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: Mathematik: Maximale sichtbare 3D-Koordinaten

Beitrag von xq »

Du kannst aus deinem Viewport 6 Planes extrahieren (near, far, und die vier Bildschirmkanten) Wie das geht, findest du in jedem Culling-Tutorial ;)

Danach schneidest du deine Linien mit den Planes und falls es Schnittpunkte gibt, nimmst du die kürzeste Ergebnissstrecke und gut
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
joggel

Re: Mathematik: Maximale sichtbare 3D-Koordinaten

Beitrag von joggel »

Okay, ich recherchiere mal nach Culling-Tutorial.
Danke erstmal..
Benutzeravatar
Jonathan
Establishment
Beiträge: 2352
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Mathematik: Maximale sichtbare 3D-Koordinaten

Beitrag von Jonathan »

Das hier schaut zum Ebenen extrahieren gut aus:
https://www.gamedevs.org/uploads/fast-e ... matrix.pdf

Alternativ: Ich würde die Linien einfach sehr lang rendern. So 1e6 Einheiten oder so. Clipping passiert eh, und mir fällt kein Grund ein, weshalb das mit großen Zahlen langsamer sein könnte. Man will vielleicht bloß nicht bis float-max gehen, damit man sich die Genauigkeit nicht komplett ruiniert. Es dauert 30 Sekunden um das einzubauen, man kann nichts falsch machen, es ist garantiert schneller als die exakte Länge vorher per Hand zu berechnen und du wirst vermutlich niemals in eine Situation kommen, wo du mit dieser Lösung Probleme bekommst. Aber es ist halt irgendwie nicht sonderlich elegant, bzw. unsauber :D
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
joggel

Re: Mathematik: Maximale sichtbare 3D-Koordinaten

Beitrag von joggel »

Danke für den Link bzw PDF.
Speichere ich mir wieder ab.

Und ja, da hast du eigentlich recht. Clipping passiert eh und Probleme sollte das auch nicht bereiten.
Ich werde das wohl so machen, dass ich das nicht von Hand berechne, sondern die Vertices eben auf einen sehr großen Wert setze...
Antworten