GLScene Problem mit TGLMultipolygon

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1650
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

GLScene Problem mit TGLMultipolygon

Beitrag von fliegermichl »

Für meine Anwendung wäre die Klasse TGLMultipolygon perfekt.
Leider habe ich da ein kleines Problem.
Wenn ich ein Polygon mit beliebigen Koordinaten erzeuge, funktioniert das einwandfrei auch mit Löchern drin usw.

Wird das Polygon aber nur mit Punkten in der xz Ebene erzeugt, wird es nicht angezeigt.

Mache ich da was falsch oder ist das ein Fehler in der TGLMultipolygon Klasse oder gar in OpenGL?

Im Anhang ein kleines Projekt zum nachvollziehen (Package GLScene aus dem OPM muss installiert sein)
Dateianhänge
testglscene.zip
(97.11 KiB) 21-mal heruntergeladen

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1650
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: GLScene Problem mit TGLMultipolygon

Beitrag von fliegermichl »

Wenn ich das Polygon in der XY Ebene definiere und dann um 90° drehe, hat es exakt die selben Koordinaten (absolut), wie das in der XZ Ebene definierte und wird trotzdem korrekt angezeigt.

Wenn ich das in der XZ Ebene definierte Polygon um 90° drehe, wird es trotzdem nicht angezeigt.
Ich habe das Beispielprojekt im ersten Post entsprechend erweitert und aktualisiert.

Wenn ich keine Lösung für das Problem finde, werde ich die Polygone eben alle in der XY Ebene definieren und mittels Translation und Rotation an die gewünschte Position bringen.
Das hätte auch gleich den Vorteil, daß alle lokalen Koordinaten nur zwei dimensional bearbeitet werden brauchen.
Verwundern tut's mich dennoch.

wp_xyz
Beiträge: 5187
Registriert: Fr 8. Apr 2011, 09:01

Re: GLScene Problem mit TGLMultipolygon

Beitrag von wp_xyz »

Ich glaube mich zu erinnern, dass man in OpenGl ein etwas ungewöhnliches Koordinatensystem hat, das dann wahrscheinlich auch in GLScene beibehalten wurde: Wie bei einem zwei-dimensionalen Bild verläuft x nach rechts und y nach oben, und die z-Achse verläuft senkrecht zum Bildschirm und (damit man ein rechtshändiges Koordinatensystem hat) aus diesem heraus. Das übliche mathematische 3D-Koordinatensystem hat dagegen x waagrecht, y in den Bildschirm hinein und z nach oben.

Antworten