| Autor |
Beitrag |
Hybrid
      
Beiträge: 112
Win XP Pro
D7 Ent
|
Verfasst: Sa 17.09.05 14:58
Hallo erstmal,
ich habe bisher nicht sehr viel (aber auch nicht wenig  ) Erfahrung mit GLScene.
Mich stört und behindert schon seit geraumer Zeit ein großes Problem:
Ich habe in meinem Prog ein 2 Objekte.
z.B. folgende:
Dummycube (Position.Z := 5) <- als Target der Camera
und
GLCube
-GLCamera (Position.Y := 2) <- als Child vom Cube
Wenn ich nun den Cube drehe (z.b. Roll(0.1)) dann dreht sich die Camera nicht mit, sondern nur ihre Positions Koordinaten.
Wie soll man denn mit solch einem Problem ein Standgeschütz mit einer Kamera am Waffenausgang erstellen ?!
Kennt jemand eine lösung des Problems?
-Irgendwie habe ich das Gefühl, dass es dafür eine ganz simple Lösung gibt.
PS: Ich habe das Beispiel mal als Anhang gepostet
mfG Hybrid
Einloggen, um Attachments anzusehen!
_________________ Hallo, ich bin eine Signatur!
|
|
tommie-lie
      
Beiträge: 4373
Ubuntu 7.10 "Gutsy Gibbon"
|
Verfasst: Sa 17.09.05 15:11
Hybrid hat folgendes geschrieben: | | Wenn ich nun den Cube drehe (z.b. Roll(0.1)) dann dreht sich die Camera nicht mit, sondern nur ihre Positions Koordinaten. |
Das Target-Property der Kamera existiert nicht nur um da zu sein
Du müsstest schon den DummyCube, also das Target der Kamera, entsprechend der Drehung bewegen. Also Einen GLDummyCube nehmen, den GLCube und den zweiten GLDummyCube rein, GLCamera als Child vom GLCube und als Target den zweiten GLDummyCube. Wenn du jetzt den äußeren GLDummyCube drehst, dreht sich das gesamte System, mitsamt Kamera, Würfel und Target, wodurch sich auf die Blickrichtung der Kamera der Drehung anpasst.
_________________ Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
|
|
Hybrid 
      
Beiträge: 112
Win XP Pro
D7 Ent
|
Verfasst: Sa 17.09.05 16:25
Als erstes mal muss ich sagen, dass deine Antwort klingt, als hätte ich das Target der Camera garnicht erst gesetzt, was im angehängten Beispiel richtig gemacht ist (hättes du es dir angesehen, hättest du das auch bemerkt)
Nichts desto trotz habe ich vergessen zu erwähnen, dass ich deinen Vorschlag natürlich auch schon getestet habe:
Scene Objects
-GLDummyCube1
--GLCube1
---GLCamera1
----GLLightSource1
--GLDummyCube2 <- Als Target der Camera
Cadencer:
GLDummyCube1.Roll(0.1);
Und das geht auch nicht. (Siehe Anhang)
Einloggen, um Attachments anzusehen!
_________________ Hallo, ich bin eine Signatur!
|
|
tommie-lie
      
Beiträge: 4373
Ubuntu 7.10 "Gutsy Gibbon"
|
Verfasst: Sa 17.09.05 16:47
Hybrid hat folgendes geschrieben: | | Als erstes mal muss ich sagen, dass deine Antwort klingt, als hätte ich das Target der Camera garnicht erst gesetzt |
Nein, ich habe bemerkt, daß du das Target gesetzt hast.
So, wie ich deinen Post gelesen habe, drehst du den GLCube, dessen Child die Kamera ist. Dadurch dreht sich zwar die Kamera mit, jedoch nicht ihre Blickrichtung. Ist das soweit richtig?
So wie ich es verstanden habe blickt sie immer in Richtung DummyCube, den du aber beim Drehen des GLCubes nicht veränderst, deswegen schaut die Kamera in Weltkoordinaten immer auf die gleiche Stelle, selbst wenn sie sich um den GLCube drehen sollte.
| Hybrid hat folgendes geschrieben: | | (hättes du es dir angesehen, hättest du das auch bemerkt) |
Ich habe mir das Beispiel nicht angeschaut, weil ich der Meinung war, alle Informationen aus deinem Post herauslesen zu können. Außerdem habe ich kein Delphi mehr installiert und kann es auch nicht mal eben neu installieren.
| Hybrid hat folgendes geschrieben: | | (Siehe Anhang) |
Könntest du mir bitte mal die Werte für die Eigenschaft Up der Kamera vor und nach dem Drehen angeben und noch ein zweites Objekt im Sichtbereich der Kamera platzieren, das Child der Kamera ist? Ich finde es eigenartig, daß zwar die Position der Kamera verändert wird, sich aber anscheinend das relative Koordinatensystem der Kamera nicht mitdreht. Ich habe eigentlich ein anderes Verhalten in Erinnerung.
_________________ Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
|
|
Hybrid 
      
Beiträge: 112
Win XP Pro
D7 Ent
|
Verfasst: Sa 17.09.05 17:11
So...
Ich muss mich erstmal entschuldigen, wenn das etwas agressic klang, aber ich bin im moment etwas gereizt, da mich dieses Problem schon seit geraumer zeit nervt.
ich habe mal einen Screenshot vom jetzigen AUfbau erstellt:
Die Sphäre ist nun im Blickfeld, und Koordinatensystem der Camera und dreht sich auch so wie sie sollte
(siehe compilierten Anhang  )
Die Up-Daten werden auch stätig in der Listbox angezeigt, aber ändern sich nie.
Einloggen, um Attachments anzusehen!
_________________ Hallo, ich bin eine Signatur!
|
|
tommie-lie
      
Beiträge: 4373
Ubuntu 7.10 "Gutsy Gibbon"
|
Verfasst: Sa 17.09.05 17:59
Hybrid hat folgendes geschrieben: | | Die Up-Daten werden auch stätig in der Listbox angezeigt, aber ändern sich nie. |
Hm, daß sie sich nicht ändern ist normal, aber anscheinend beziehen sie sich auf die weltkoordinaten, nicht auf die relativen des Koordinatensystems der Kamera, was in diesem Fall ziemlich ärgerlich ist.
Du kannst versuchen die Kamera synchron mit dem Würfel mitzudrehen, bzw das Up-Property durch geeignete Vektorarithmetik passend zu ändern, aber sonst fällt mir im Augenblick auch nichts ein.
_________________ Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
|
|
Hybrid 
      
Beiträge: 112
Win XP Pro
D7 Ent
|
Verfasst: Sa 17.09.05 18:15
Jup, danke für den Tipp. Hiermit, im Cadencer Progress, geht es jetzt:
Delphi-Quelltext 1:
| GLCamera1.Up.SetVector(GLDummyCube1.Up.AsAffineVector); |
Vielen Dank! Jetzt kann ich endlich weitermachen 
_________________ Hallo, ich bin eine Signatur!
|
|
|