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
Antwort Antwort
nwnssolutionssoftware

Registriert seit: 6. Aug 2018
45 Beiträge
 
#1

GLscene Cube Fläche auslesen

  Alt 8. Apr 2019, 11:16
Kann man wenn ein Würfel auswählt ist auch gleich mit auslesen welche Fläche man angeklickt hat ob nun die Linke oder die rechte Seite. Anzeigen ist ja recht einfach:
Code:
pick := (GLSceneViewer1.Buffer.GetPickedObject(X, Y) as TGLCustomSceneObject);
Jetzt fehlt nur noch das Auslesen de Würfel Seite Vieleicht habt ihr ja eine Idee
Danke schonmal im Vorraus.
Holger

Geändert von nwnssolutionssoftware ( 8. Apr 2019 um 12:22 Uhr)
  Mit Zitat antworten Zitat
nwnssolutionssoftware

Registriert seit: 6. Aug 2018
45 Beiträge
 
#2

AW: GLscene Cube Fläche auslesen

  Alt 21. Mai 2019, 23:06
Hat keiner eine Idee?
Holger
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: GLscene Cube Fläche auslesen

  Alt 21. Mai 2019, 23:29
Soweit ich weiß, geht das nicht, da das GL_SELECT nur die Primitiven liefert, die im Bereich gerendert werden, aber nicht welcher Teil der Primitive.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: GLscene Cube Fläche auslesen

  Alt 22. Mai 2019, 06:21
GLScene ist dafür nicht die richtige Bibliothek
Versuchs mal mit Ray Casting

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.

http://databasefaq.com/index.php/ans...king-in-OpenGL

gruss

Geändert von EWeiss (22. Mai 2019 um 06:29 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 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
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: GLscene Cube Fläche auslesen

  Alt 22. Mai 2019, 07:43
Zitat:
Ist aber alles andere als trivial.
Danke für deine zusätzlichen Infos..

Denke ich auch
Habe das bei meinem Winamp Plugin gemerkt als ich NUR 2D Objekte die sich drehen über Picking zu identifizieren.
Für Anfänger in Sachen OpenGL btw.. GLScene nicht gerade einfach zu realisieren.

Zitat:
Ist aber vermutlich gerade die, die er benutzt.
Deshalb mein Hinweis das es nicht die richtige Bibliothek ist um so etwas zu verwirklichen.
Er muss dafür also ausweichen.

gruss

Geändert von EWeiss ( 9. Jul 2019 um 08:31 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 13:30 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