Autor Beitrag
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Mo 21.04.03 14:03 
:autsch: Sorry :oops:
So ein dummer Fehler! Ich habe zNear=0 angegeben... das darf man nicht... Jetzt läuft's.

_________________
Life is a bad adventure, but the graphic is really good!
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Mo 21.04.03 18:34 
Hallo nochmal,

sorry, aber ich krieg's nicht hin! Ich habe eignetlich nur vor, die Cursor-Position auf einem Körper im 3D-Raum zu bestimmen, in meinem Fall mal ein Schachbrett:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
glMatrixMode(GL_Projection);
glLoadIdentity;
gluPerspective(45, WinX / WinY, 0.1, 100);
glMatrixMode(GL_ModelView);

glPushMatrix;

glTranslatef(0, 0, -4);
glRotatef(An, 1, 0, 0);

glEnable(GL_Texture_2D);
glBindTexture(GL_Texture_2D, Tex_Chess);

glColor4f(1, 1, 1, 1);

glBegin(GL_Quads);
 glTexCoord2f(0, 0); glVertex3f(-1, -1, 0);
 glTexCoord2f(0, 1); glVertex3f(-1, +1, 0);
 glTexCoord2f(1, 1); glVertex3f(+1, +1, 0);
 glTexCoord2f(1, 0); glVertex3f(+1, -1, 0);
glEnd;

glDisable(GL_Texture_2D);

glPopMatrix;


Ich denke, du verstehst den Code. Ein Schachbrett (Die Textur stellt ein Schachbrett dar) ist an Z=-4, um 45° nach hinten gedreht.

Ich dachte, mit gluUnProject, könnte ich bestimmen, wo sich der Cursor auf dem Brett befindet. Es funktioniert, wenn das Bertt nicht gedreht ist. Aber wenn ich es drehe (um die X-Achse), dann weiß ich ja nicht, an welcher Z-Position ich mich befinde. Und ohne Z gibt's kein X und Y. Verstehst du mein Problem?

Ich könnte zwar mit SelectionMode arbeiten, aber wenn man mal ein größeres Brett hat, reicht halt der SelectionBuffer nicht mehr aus. Wie lässt sich mein kleines Problem lösen???

_________________
Life is a bad adventure, but the graphic is really good!
t/f Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 70



BeitragVerfasst: Mo 21.04.03 19:29 
hey man jetzt hab ichs gecheckt. wir sind ganz schön blöd...

das ganze glu-dingsta hab ich noch nicht wirklich verstanden. ich gehöre zu den anfänger die langsam ansätze von vorkenntnissen in ihre Proggis schreiben *g

nunja Folgendes...

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
  glTranslate(0,0,-2); 
  glRotate(45,0,1,0); 
  GetMousePos; 
  glBegin(GL_QUADS); 
    glVertex3f(-0.3+MX,-0.3+MY,0+MZ); 
    glVertex3f(0.3+MX,-0.3+MY,0+MZ); 
    glVertex3f(0.3+MX,0.3+MY,0+MZ); 
    glVertex3f(-0.3+MX,0.3+MY,0+MZ); 
  glEnd;


Mein Prob war ja, dass ich versucht hab' durch glTranslate meinen Standpunkt zu verändern. Das Prinzip von OpenGL ist aber so, dass es keinen Standpunkt gibt ;).... wir kucken immer auf ein und den selben Fleck. Wir bewegen uns nur, indem wir einen Gegstand so hin - und herschieben, dass wir denEindruck haben, als würden wir uns bewegen.

glTranslate bewirkt lediglich die Verschiebung des Urspungs unseres Koordinatensystems.

GetMousePos drüfte an sich dann auch in Ordnung sein, da Aya uns dieses gute Beispiel mit dem zu verschiebenden Qudrat gezeigt hat.

jo ... ich weiß nicht wirklich ob du auch dieses Problem hattest...
GetMausPos haut bei mir super hin... keine Probs mit anderen Prozeduren, die dort eingebunden sind.

greetz
//me

_________________
OS: Linux - RedHat 9
Delphi: Kylix 3
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Mo 21.04.03 19:46 
Nein, mein Problem ist ein anderes: Deine Fläche (Das Quad) ist flach. Wenn du rausfinden willst, welche Geometriekoordinate eine Mauskoordinate hat, nimmst du als Z den Z-Wert deines Quads. Ich habe aber ein geschwenktes Quad. Das hat an jedem Punkt eine andere Z-Koordinate. Und um die zu ermitteln, brüchte ich X/Y... die Schlange beißt sich selbst in den Schwanz...

_________________
Life is a bad adventure, but the graphic is really good!
t/f Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 70



BeitragVerfasst: Mo 21.04.03 22:59 
und wenn du dabei einfach z (bzw. den KO-Ursprung) vorher mit glTranslate so hindrehst wie du es brauchst?

_________________
OS: Linux - RedHat 9
Delphi: Kylix 3
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Di 22.04.03 16:09 
Du mussdir das so vorstellen: Z=f(x,y). Woher kenne ich X/Y? Indem ich X=f(Z) und Y=f(Z) mache, denn je tiefer ich in den Screen reingehe, umso schmäler wird die Szene. Also brauche ich für Z X und Y, und für X und y brauche ich Z.

Gibt es evtl. eine andere Lösung, um die Position zu bestimmen? Oder kann ich irgendwie mit SelectionModa arbeiten? Der hat halt nur einen begrenzten Namenstack, aber kann ich den umgehen???

_________________
Life is a bad adventure, but the graphic is really good!
t/f Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 70



BeitragVerfasst: Di 22.04.03 21:03 
ja das meine ich auch. drehe via glRotate dein Koordinatensystem so, das z eine Waagerechte ist, bewege dich in x- und y-Richtung und drehe dich wieder zurück.
...

Ansonsten weiß ich das nicht besser.
Irgendwie haut meine Methode zum anderen Problem auch nicht hin. Scheinbar mache ich irgendwas bei der Verschiebung falsch.

Wär' ja hilfreich, wenn nochmal einer von den Profis das Wort ergreift und am besten 'n bissel Code postet.

greetz
//me

_________________
OS: Linux - RedHat 9
Delphi: Kylix 3
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Di 22.04.03 21:17 
Soll ich dir was sagen? Es kann nicht gehen. Habe lange drüber nachgedacht. 0 Chance mit gluUnProject, da du ja (nach deinem kleinen Screenshot) auch eine rotierte Matrix hast. Vergiss es.

Was du brüchtest, ist, so heißt es glaube ich, Raytraycing, d.h. eien Straht, der von Auge des Btrachters ausgeht, zu verfolgen, und prüfen, wo er auf's Objekt trifft. Denn was wir hier vorliegen habe, ist nicht De-Projektion, sondern Clipping. Mit der glu-Methode fragst du ja nur "Wenn ich mir den Raum als parallelen 3D-Raum vorstelle, und an XYZ bin, wo wäre ich dann, wenn ich einen perspektivischen 3D-Raum hätte?". Was du aber willst (und ich auch), das wäre "Wenn ich mir den Raum als parallelen 3D-Raum vorstelle, und an XY bin, welches Objekt berühre ich dann im perspektivischen 3D-Raum?". Merkst du was? gluUnProject sagt nix über Objekte aus. Es rechent nur Matitzen um.

Und selbst Selectionmode langt da nicht aus, da müsstest du für jeden Pixel (!) einen namen vergeben. Das geht nicht.

Wie gesagt, du (und ich) brauchst Clipping und Raytracing. Oder wie siehst du das?

_________________
Life is a bad adventure, but the graphic is really good!
t/f Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 70



BeitragVerfasst: Di 22.04.03 21:27 
Also was du mir sagen willst, hab ich irgendwie schon verstanden ;) .... *Turorial 'rauskram* ... aber was die einzelnen Dinger Glu-Dingsta-etc heißen, das muss ich erst noch ergründen.

Aber dann interessier tmihc, wieso Ayas Beispiels funktioniert hat, wenn es eigentlich nicht meine X- nud Y-Koordinate ins 3D Netz bringt (gut wir haben dabei z außer acht gelassen *Stirn runzel*)

greetz
//me

_________________
OS: Linux - RedHat 9
Delphi: Kylix 3
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Di 22.04.03 21:32 
Nu ja, Aya's Objekt ist FLACH, d.h. die Z ist irrelevant, da sie überall gleich ist. Und da Z überall gleich ist, kannst du sie vorgeben, und somit X und Y berechnen. Bei einer gedrehten Fläche --> Kein Z --> Kein X/Y.

Macht's Klick?

_________________
Life is a bad adventure, but the graphic is really good!
t/f Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 70



BeitragVerfasst: Di 22.04.03 21:36 
ja und das meinte ich ja auch vorhin. angenommen du drehst dein objekt so hin, dass es flach ist, verschiebst deine x- und y-Koordinate und drehst das Objekt danach wieder zurück.... sollte doch eigentlich hinhaun oder?

Das dumme bei meinem Prog war nur, dass ich nichtmal die x- und y-Koordinate auf dem Ding verschoben krieg. Eigentlich sieht das so einfach aus - richtig depremierend.

greetz
//me

_________________
OS: Linux - RedHat 9
Delphi: Kylix 3
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Di 22.04.03 21:44 
Nee, das geht nicht. Stell dir sie Silhouette vor (denn die sieht man ja nur auf dem Screen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
+------------+
|            |
|    +-+     |
|   /   \    |
|  /     \   |
| +-------+  |
|            |
+------------+

OK, das ist deine Fläche, nach hinte geschwenkt. Nun rotierst du sie, bis sie flach ist:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
+------------+
|            |
|   +---+    |
|   |   |    |
|   |   |    |
|   +---+    |
|            |
+------------+

So nun stimmen aber die Screenkoordinaten nicht mehr, also kannste deine Methode vergessen.

_________________
Life is a bad adventure, but the graphic is really good!
t/f Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 70



BeitragVerfasst: Mi 23.04.03 00:00 
hey ich habe gerade bei delphigl.com ein tutorial zu etwas ähnlichem gefunden. ich les' es mir in den nächsten tagen einmal durch... es sieht aus, als könnte es uns weiterhelfen.... www.phobeus.de/hosti...ras&head=kameras

kannst ja auch 'mal 'reinschaun

greetz
//me

_________________
OS: Linux - RedHat 9
Delphi: Kylix 3
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Do 24.04.03 16:16 
Titel: geöffnet"
Hä? Was habe denn Kameras damit zu tun?

_________________
Life is a bad adventure, but the graphic is really good!