Linien ohne Rasterfehler
-
- Establishment
- Beiträge: 308
- Registriert: 25.08.2019, 05:00
- Alter Benutzername: gdsWizard
- Kontaktdaten:
Linien ohne Rasterfehler
Hallo,
ich möchte Linien über Dreiecke zeichnen, ohne das Linien und Dreiecke in einem Zusammenhang stehen. Dabei treten Rasterfehler auf. Im Moment behelfe ich mir mit einem Offset für die Linien. Die Linien können in einer Ebene zum Dreieck sein, müssen es aber nicht. Die 3D Position von Linien und Dreiecken ist vorgegeben.
Hat jemand eine Idee ? Bei professionellen Programmen sieht man das fehlerfrei gezeichnet.
ich möchte Linien über Dreiecke zeichnen, ohne das Linien und Dreiecke in einem Zusammenhang stehen. Dabei treten Rasterfehler auf. Im Moment behelfe ich mir mit einem Offset für die Linien. Die Linien können in einer Ebene zum Dreieck sein, müssen es aber nicht. Die 3D Position von Linien und Dreiecken ist vorgegeben.
Hat jemand eine Idee ? Bei professionellen Programmen sieht man das fehlerfrei gezeichnet.
Hat den StormWizard 1.0 und 2.0 verbrochen. https://mirrorcad.com
Re: Linien ohne Rasterfehler
Weiß nicht wie es bei DirectX heißt, aber bei OpenGL: glPolygonOffset - ändert den Tiefenwert im Screenspace vor dem Depth-Test.
(Es gibt ein paar Besonderheiten zu beacten: https://www.khronos.org/opengl/wiki/Pol ... _and_Lines )
(Es gibt ein paar Besonderheiten zu beacten: https://www.khronos.org/opengl/wiki/Pol ... _and_Lines )
Zuletzt geändert von joeydee am 11.05.2024, 17:26, insgesamt 1-mal geändert.
-
- Establishment
- Beiträge: 308
- Registriert: 25.08.2019, 05:00
- Alter Benutzername: gdsWizard
- Kontaktdaten:
Re: Linien ohne Rasterfehler
Ja bei DirectX gibt es das auch. Der Name fällt mir jetzt auch nicht ein, aber die Ergebnisse bei mir waren damals nicht gut. Habt ihr andere Erfahrungen gemacht ? Vielleicht sollte ich es mir noch mal ansehen...
Hat den StormWizard 1.0 und 2.0 verbrochen. https://mirrorcad.com
Re: Linien ohne Rasterfehler
Habe gerade ergänzt, es lässt sich nicht ganz intuitiv benutzen.
https://www.khronos.org/opengl/wiki/Pol ... _and_Lines
Schwierigkeiten hatte ich auch schon damit. Aber hatte es irgendwie damit hingepfriemelt.
https://www.khronos.org/opengl/wiki/Pol ... _and_Lines
Schwierigkeiten hatte ich auch schon damit. Aber hatte es irgendwie damit hingepfriemelt.
-
- Establishment
- Beiträge: 308
- Registriert: 25.08.2019, 05:00
- Alter Benutzername: gdsWizard
- Kontaktdaten:
Re: Linien ohne Rasterfehler
Es scheint das zu sein, wonach ich gesucht habe. Ich hatte vor etlichen Jahren mal was in OpenGL mit dem Bias gemacht. Aber wie bereits geschrieben, waren die Ergebnisse nicht gut. Heute habe ich etwas mehr Erfahrung, vllt. bekomme ich es diesmal hin. Es muss ja eine Lösung geben.
Besten Dank !
Besten Dank !
Hat den StormWizard 1.0 und 2.0 verbrochen. https://mirrorcad.com
- Schrompf
- Moderator
- Beiträge: 5074
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: Linien ohne Rasterfehler
Bei mir schweben die Linien immer ein klein bisschen über dem Dreieck, also +0.001f * Normale. Aber das geht natürlich nur, wenn Dreiecke und Linien doch irgendwie nen Zusammenhang haben. Und wenn man nah ran geht, dann sieht man es auch.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Re: Linien ohne Rasterfehler
Vielleicht hilft dir mein Experiment um es mal auszutesten.
So sieht es in OpenGL aus (ist ein Wrapper, daher nicht Originalsyntax, aber gleiche Bedeutung).
Das graue Quad schwebt versetzt 1 Unit über dem weißen. Das blaue Linienquad ist genau auf Ebene des weißen. Die senkrechte blaue Linie steht als Referenz um zu sehen dass nur im Screenspace versetzt wird.
Linien wurden zuerst gerendert, dann die Flächen (normalerweise umgekehrt, hier nur für "Stresstest").
Quadgrößen waren 40f bzw. 30f Units im Ursprung, Kamera sitzt bei y=30f, z=-120f, Clipping Planes bei 0.001f und 1000f
Die erste Einstellung (0,0) ist praktisch gleichbedeutend mir disable.
Wie Units und Faktor der Funktion mit den Szenen-Units und dem Screenspace genau zusammenhängen, bin ich überfragt, ist immer Trial&Error bei mir.
Natürlich wird man immer irgendwo an Grenzen der Genauigkeit stoßen.
Laut Doku (s. mein Link oben) soll man alles als Polygone rendern damit es überhaupt greift, also auch Linien oder Punkte als Polygone callen. Ob das nur für die Fixed-Pipeline gilt, oder auch für Vertexbuffer, bin ich ebenfalls überfragt.
So sieht es in OpenGL aus (ist ein Wrapper, daher nicht Originalsyntax, aber gleiche Bedeutung).
Das graue Quad schwebt versetzt 1 Unit über dem weißen. Das blaue Linienquad ist genau auf Ebene des weißen. Die senkrechte blaue Linie steht als Referenz um zu sehen dass nur im Screenspace versetzt wird.
Linien wurden zuerst gerendert, dann die Flächen (normalerweise umgekehrt, hier nur für "Stresstest").
Quadgrößen waren 40f bzw. 30f Units im Ursprung, Kamera sitzt bei y=30f, z=-120f, Clipping Planes bei 0.001f und 1000f
Die erste Einstellung (0,0) ist praktisch gleichbedeutend mir disable.
Wie Units und Faktor der Funktion mit den Szenen-Units und dem Screenspace genau zusammenhängen, bin ich überfragt, ist immer Trial&Error bei mir.
Natürlich wird man immer irgendwo an Grenzen der Genauigkeit stoßen.
Laut Doku (s. mein Link oben) soll man alles als Polygone rendern damit es überhaupt greift, also auch Linien oder Punkte als Polygone callen. Ob das nur für die Fixed-Pipeline gilt, oder auch für Vertexbuffer, bin ich ebenfalls überfragt.
-
- Establishment
- Beiträge: 308
- Registriert: 25.08.2019, 05:00
- Alter Benutzername: gdsWizard
- Kontaktdaten:
Re: Linien ohne Rasterfehler
Danke an Euch Alle. Werde jetzt ein bissl damit experimentieren.
Hat den StormWizard 1.0 und 2.0 verbrochen. https://mirrorcad.com
-
- Establishment
- Beiträge: 493
- Registriert: 01.03.2009, 19:09
Re: Linien ohne Rasterfehler
Warum nicht den depth test für die Linien abschalten und im Pixel shader selber machen?
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
-
- Establishment
- Beiträge: 308
- Registriert: 25.08.2019, 05:00
- Alter Benutzername: gdsWizard
- Kontaktdaten:
Re: Linien ohne Rasterfehler
Das wäre Plan B gewesen. Leider rechnet, wie schon "Tomas Riker" schrieb, die GPU mit Float und ich habe das im Transparent Shader probiert. Die Ergebnisse sind die selben. Dazu habe ich nur die Linien im Transparent-Shader gerendert und selber geblendet ( ohne echte Transparenz, aber Depth-Berechnungen ). Die Mühe lohnt sich nicht.Matthias Gubisch hat geschrieben: ↑12.05.2024, 06:00 Warum nicht den depth test für die Linien abschalten und im Pixel shader selber machen?
In der Perspektive-Kamera klappt es schon halbwegs ( bin zufrieden, wenn auch nicht perfekt ). Bei den anderen Kameras muss ich noch experimentieren.
Hat den StormWizard 1.0 und 2.0 verbrochen. https://mirrorcad.com
- TomasRiker
- Beiträge: 99
- Registriert: 18.07.2011, 11:45
- Echter Name: David Scherfgen
- Wohnort: Hildesheim
Re: Linien ohne Rasterfehler
Vielleicht finden wir eine bessere Lösung, wenn du uns mehr darüber verrätst, was der Zweck deines Unterfangens ist.
-
- Establishment
- Beiträge: 308
- Registriert: 25.08.2019, 05:00
- Alter Benutzername: gdsWizard
- Kontaktdaten:
Re: Linien ohne Rasterfehler
Ich schreibe an einem kleinen 3D Programm namens MirrorCAD und da brauche ich Hilfslinien die unabhängig von den Dreiecken sind, aber auch für Polygonränder.
Edit: Ich habe eben den Bug gefunden. Jetzt geht es auch bei isometrischer Kamera. Bin zufrieden !!! Tausend Danke, besonders an joeydee!!!
Edit: Ich habe eben den Bug gefunden. Jetzt geht es auch bei isometrischer Kamera. Bin zufrieden !!! Tausend Danke, besonders an joeydee!!!
Hat den StormWizard 1.0 und 2.0 verbrochen. https://mirrorcad.com