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, 12: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 13:22 Uhr)
  Mit Zitat antworten Zitat
nwnssolutionssoftware

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

AW: GLscene Cube Fläche auslesen

  Alt 22. Mai 2019, 00: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.453 Beiträge
 
Delphi 12 Athens
 
#3

AW: GLscene Cube Fläche auslesen

  Alt 22. Mai 2019, 00: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, 07: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 07:29 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: GLscene Cube Fläche auslesen

  Alt 22. Mai 2019, 08: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, 08: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 09:31 Uhr)
  Mit Zitat antworten Zitat
Heuman
(Gast)

n/a Beiträge
 
#7

AW: GLscene Cube Fläche auslesen

  Alt 22. Mai 2019, 16:52
Hallo,

wenn es nicht umbedingt ein TGLCube sein muss, kann man sich vielleicht damit helfen
indem man sich mit einen TGLDummyCube und entsprechend vielen TGLPlanes
eine Würfel zusammenbaut.

Gruß
  Mit Zitat antworten Zitat
nwnssolutionssoftware

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

AW: GLscene Cube Fläche auslesen

  Alt 23. Mai 2019, 17:55
Moin erstmal Vielen Dank an die ganzen Antworten.
Es muss nicht unbedingt ein Cube sein letzendlich sollen diese Cubes ausgetauscht werden
zu STL FIles (weiß leider gerade nicht wie die Komponente heißt). Alles der Cube muss es nicht sein!
Mit den einzelnen Planes hatte ich auch schon überlegt jedoch ist das schwierig wenn man meherere Blöcke während
der Runtime erstellt.
Viele können sich bestimmt schon denken was ich vor habe: Minecraft Clone mit GLscene.
Vieleicht gibt es aber noch eine andere Möglichkeit die mir nur nicht bekannt ist.
Mit den einzelnen Planes wird mir zu unübersichtlich vor allem wenn ich dann später die Planes alle
wieder laden möchte.
Danke aber trotzdem schonmal.
Holger
  Mit Zitat antworten Zitat
nwnssolutionssoftware

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

AW: GLscene Cube Fläche auslesen

  Alt 10. Jun 2019, 13:15
Vieleicht noch jemand Ideen?
Holger
  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 09:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz