Autor Beitrag
Hybrid
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 112

Win XP Pro
D7 Ent
BeitragVerfasst: Sa 17.09.05 14:58 
Hallo erstmal,
ich habe bisher nicht sehr viel (aber auch nicht wenig :wink: ) 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! :D
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Sa 17.09.05 15:11 
user profile iconHybrid 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 112

Win XP Pro
D7 Ent
BeitragVerfasst: 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! :D
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Sa 17.09.05 16:47 
user profile iconHybrid 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 112

Win XP Pro
D7 Ent
BeitragVerfasst: 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:
user defined image

Die Sphäre ist nun im Blickfeld, und Koordinatensystem der Camera und dreht sich auch so wie sie sollte
(siehe compilierten Anhang :wink: )

Die Up-Daten werden auch stätig in der Listbox angezeigt, aber ändern sich nie.
Einloggen, um Attachments anzusehen!
_________________
Hallo, ich bin eine Signatur! :D
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Sa 17.09.05 17:59 
user profile iconHybrid 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 112

Win XP Pro
D7 Ent
BeitragVerfasst: Sa 17.09.05 18:15 
Jup, danke für den Tipp. Hiermit, im Cadencer Progress, geht es jetzt:

ausblenden Delphi-Quelltext
1:
  GLCamera1.Up.SetVector(GLDummyCube1.Up.AsAffineVector);					


Vielen Dank! Jetzt kann ich endlich weitermachen :D

_________________
Hallo, ich bin eine Signatur! :D