AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia GLscene Cube Fläche auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

GLscene Cube Fläche auslesen

Offene Frage von "nwnssolutionssoftware"
Ein Thema von nwnssolutionssoftware · begonnen am 8. Apr 2019 · letzter Beitrag vom 10. Jun 2019
 
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.752 Beiträge
 
Delphi 12 Athens
 
#5

AW: GLscene Cube Fläche auslesen

  Alt 22. Mai 2019, 07:16
GLScene ist dafür nicht die richtige Bibliothek
Ist aber vermutlich gerade die, die er benutzt.

pick := (GLSceneViewer1.Buffer.GetPickedObject(X, Y) as TGLCustomSceneObject); Kann nicht gehen du hast nur 2 Koordinaten es fehlt die der Tiefe also Z..
Deine Abfrage ist also auf 2D nicht 3D ausgelegt.
Die Abfrage erwartet natürlich die Bildschirmkoordinaten des Rendering-Context und die sind halt nur 2D. Die Funktion macht daraus ein 3x3 Pixel großes Rechteck und listet alle Primitiven auf, die in diesem Rechteck gerendert werden, sortiert nach Z-Wert. Das vorderste Objekt wird dann zurückgegeben. Es gibt auch noch die Funktion GetPickedObjects, mit der man das Rechteck vorgibt und die gesamte Liste zurückbekommt.

Allerdings wird nur auf ganze Primitiven (Plane, Sphere, Cube, Mesh...) aufgelöst und nicht auf einzelne Teilflächen davon. Würde man den Cube durch 6 Planes darstellen, könnte man auch die korrekte Fläche erkennen. Es ist also kein Manko der Bibliothek, sondern eine Sache des Aufbaus der Szene durch Primitive. Wenn ich die Flächen eines Cubes unterscheiden will, dann darf ich eben keinen Cube nehmen, sondern muss die Flächen einzeln rendern.

Ach ja, GLScene bietet auch ein RayCastIntersect für seine Scene-Objects. Würde aber hier auch nichts helfen, da auch die objekt-basiert ist. Allerdings könnte man anhand der Koordinaten des Intersection-Points auf die getroffene Fläche schließen. Ist aber alles andere als trivial.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz