Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Jul 19, 2025 02:32

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 10, 2003 22:56 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jun 10, 2003 22:41
Beiträge: 8
Wohnort: Bad Ischl / Oberösterreich
Hi Leute,

ich hab schon dieses Forum durchforstet und das Tutorial zur Objektauswahl gelesen. Allerdings krieg ich das ganze, für meinen Fall, nicht auf die reihe.

Ich bin noch newby in Sachen OpenGL und hab mir die GLScene Komponenten installiert und es hat alles wunderbar funktioniert.

Ich hab alle Notwendigen Komponenten auf ein Formular gesetzt und mit ein paar Cubes einen Raum gezeichnet. Ich möchte nun wissen, wie ich es funktioniert, dass man mit der Maus eine der Wände dieses Raumes auswählen kann.

Offensichtlich brauche ich dafür den NameStack. In diesem Fall bekomme ich ja nicht mit, wann die Wände gezeichnet werden um Sie auf den NameStack zu geben. Muss ich den Raum dynamisch erzeugen um ihn auf den NameStack zu bekommen?

Ich hoffe, ich hab die Fragen verständlich Formuliert und würde mich über Ausführliche Antworten oder Verweise zu anderen Beiträgen und Tutorials freuen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 10, 2003 23:06 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
<a href='http://www.delphigl.de/tuts/opengl/selection_de.html' target='_blank'>Delphigl.de</a>
<a href='http://www.sulaco.co.za/opengl.htm#glpicking' target='_blank'>sulaco.co.za</a>

Das sollte erstmal genug Futter sein, ansonsten nochmal ne Mail an mich ;)

Ceyas,
Phobeus

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 11, 2003 06:57 
Offline
DGL Member

Registriert: Mo Jan 20, 2003 20:10
Beiträge: 424
Wohnort: nähe Starnberg
Die Cube-Objekte in GLScene werden als ganzes gezeichnet und damit auch als ganzes Objekt auf den NameStack gelegt. Damit Du Wände selektieren kannst, must Du 6 Planes verwenden, wobei jede Plane auf den NameStack gelegt wird.

KidPaddle

_________________
http://www.seban.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 11, 2003 16:41 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jun 10, 2003 22:41
Beiträge: 8
Wohnort: Bad Ischl / Oberösterreich
Danke für die Tipps,

ich werd das mal studieren und meld mich falls ich erfolgreich war oder nicht!

Ciao,

Kienes


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 11, 2003 20:12 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jun 10, 2003 22:41
Beiträge: 8
Wohnort: Bad Ischl / Oberösterreich
Hi Leute,

ich hab das Tutorial zur Objektauswahl von Delphigl.de und GL Picking von sulaco.co.za studiert. Die Beispielcodes laufen natürlich einwandfrei. Ich schaffe es jedoch nicht den Code auf meinen Anwendungsfall anzuwenden. Leider werden bei beiden tut's keine Komponenten von GLScenes verwendet. :unsure:

Anbei findet ihr die Sourcen zu meiner Testanwendung. Könntet vielleicht jemand einen Blick darauf werfen und mir sagen wo der Hund begraben ist? Nach Programmstart sieht man 2 Würfel und ich bekomme aber, beim clicken oder zeigen auf die Würfel keinen einzigen Hit zurück, worüber ich mich schon freuen würde.

Oder sollte ich mich vielleicht von den GLScene Komponenten verabschieden? Es ist ja nicht so das, das mich der Hintergrund nicht interessiert, momentan hab ich nur etwas Zeitdruck. :unsure:

Vielen Dank im Voraus! :D

Kienes


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 12, 2003 09:21 
Offline
DGL Member

Registriert: Mo Jan 20, 2003 20:10
Beiträge: 424
Wohnort: nähe Starnberg
Enthält GLScene unteranderem nicht eine Demo für eine Selectionmodus?

KidPaddle

_________________
http://www.seban.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 12, 2003 10:36 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also auf diese Art und Weise kannst du das vollkommen vergessen!!!

Es genügt vollkommen, wenn du deine beiden Würfel einmal erstellst und sie zu GLScene hinzufügst.
Alles andere übernimmt die Komponente selber. Du brauchst dich auch nicht darum zu kümmern, dass da namen geladen werden. Das macht die Komponente nämlich auch selber und zwar mit den Speicheradressen der Objekte.

Ich habe hier mal etwas deinen Code aufgeräumt.
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>
<span class='reserved'>procedure</span> TForm1.GLSceneViewerMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
<span class='reserved'>var</span>
Pick: TGLBaseSceneObject;
<span class='reserved'>begin</span>
SetMousePos(X,Y);
Pick := GLSceneViewer.Buffer.GetPickedObject(X, Y);
// Dieses Objekt kannst noch als TCube (oder was es auch ist) casten um dann spezifische Einstellungen zu ändern etc.
<span class='reserved'>end</span>;

<span class='reserved'>procedure</span> TForm1.FormShow(Sender: TObject);
<span class='reserved'>var</span>
CubeNewRoom: TCube;
<span class='reserved'>begin</span>
CubeNewRoom := TCube.Create(<span class='reserved'>nil</span>);
CubeNewRoom.CubeDepth := <span class='integer'>1</span>;
CubeNewRoom.CubeHeight := <span class='integer'>1</span>;
CubeNewRoom.CubeWidth := <span class='integer'>1</span>;
GLCamera.TargetObject := CubeNewRoom;
GLScene.Objects.AddChild(CubeNewRoom);

CubeNewRoom := TCube.Create(<span class='reserved'>nil</span>);
CubeNewRoom.CubeDepth := <span class='integer'>1</span>;
CubeNewRoom.CubeHeight := <span class='integer'>1</span>;
CubeNewRoom.CubeWidth := <span class='integer'>1</span>;
CubeNewRoom.Position.X := <span class='integer'>3</span>;
GLScene.Objects.AddChild(CubeNewRoom);
<span class='reserved'>end</span>;
</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->
Das Rendern übernimmt GLScene automatisch. Entweder per Repaint vom Windows oder per selbst angesteuertem Repaint mittels des GLCadencer.

Noch etwas sehr wichtiges. Nach Möglichkeit solltest du so wenig wie möglich eigenes OpenGL verwenden. Speziell wenn es sich um Matrixoperationen handelt. glRotate, etc.
Da glScene für seine Berechnungen nur die internen Einstellungen verwendet werden solche Operatiionen einfach nicht berücksichtigt und somit sieht das Ergebniss dann sehr lustig (interessant) aus.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 12, 2003 19:32 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jun 10, 2003 22:41
Beiträge: 8
Wohnort: Bad Ischl / Oberösterreich
Hi Lossy eX!

Das war genau die Antwort die ich gesucht habe.

Da bin ich ja sprichwörtlich "Mit der Kirche ums Kreuz gelaufen"!

Vielen Dank, für die ausführliche und hilfreiche Antwort!

Schöne Grüße

Kienes

KidPaddle: Ich hab kein solches Demo gefunden, kannst du mir vielleicht einen Hinweis geben? Würd mir trotzdem gerne den Code anschauen!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 12, 2003 19:42 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Kein Problem.
Aber wegen dem Demo schau mal bei Demos\Interface\Pick.
Da findest du das.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 12, 2003 21:52 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jun 10, 2003 22:41
Beiträge: 8
Wohnort: Bad Ischl / Oberösterreich
Danke, wär toll, wenn ich die Demo schon früher gefunden hätte.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 13, 2003 20:48 
Offline
DGL Member

Registriert: Mo Jan 20, 2003 20:10
Beiträge: 424
Wohnort: nähe Starnberg
Es gibt noch ein weiteres Demo unter Demos\interface\hfpick welches das selektierte Feld in einer Heightmap einfärbt.

KidPaddle

_________________
http://www.seban.de


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 15 Queries | GZIP : On ]