Autor Beitrag
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Do 26.12.02 19:21 
Hallo,
ich möchte bei meiner GLCamera1 die ansicht ändern.
und zwar wenn ich auf denn buton vor drücke soll es nach vorne gehen.
ich habe eine Plane und auf diese Plane schaut die GLCamera1.
Wie geht das am beseten ?
ich will nur das er nach vorne hinten nach oben nach unten gehe wenn man die tasten bzw. die buttoen dafür drückt.
Wie geht das ????

MFG
mimi
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Do 26.12.02 19:56 
mimi hat folgendes geschrieben:
Hallo,
ich will nur das er nach vorne hinten nach oben nach unten gehe wenn man die tasten bzw. die buttoen dafür drückt.
Wie geht das ????

"Was heißt das"?!?!?

Willst du mal von vorne, mal von hinten auf die Plane gucken? Dann wäre das einfachste eine zweite Camera, das nächst-schwierigere eine Positionsänderung der Camera (auf die neue Position auf der anderen Seite des Planes).

_________________
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
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Do 26.12.02 20:06 
also:
ich habe ne plane nun will ich mich diese planer nähern.
aus diesm projekt will ich Skyroads machen.
Aber wie veränder ich denn blick winkel der Kamera
Die plane ist etwas größer als das Form.
Bitte mit beispiel antworten(in deutsch)

MFG
mimi
MathiasH
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 699

WinXP, Win98SE, Debian, Win95
D5 Stand, D6 Prof
BeitragVerfasst: Fr 27.12.02 10:25 
dafür sind die ganzen variablen von glCamera zuständig soweit ich mich erinnere musst du einfach die position der Kamera ändern wenn du sie auf dein Objekt fokusiert hast "schaut" sie dann automatisch in die richtige Richtung

MathiasH

_________________
"Viel von sich reden, kann auch ein Mittel sein, sich zu verbergen."
Friedrich Nietzsche
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Fr 27.12.02 11:17 
ah so.
Winkeländerung...
Schwierig und Mathe...
Aber für den Anfang könntest du die Position der Kamera auf einer Achse verändern.
Wenn die Plane also auf der Z-Achse (durch den Raum, vorne nach hinten) liegt (0;0;0) und die Kamera ein bisschen weiter hinten ist (auf der Z-Achse) und höher als das Plane liegt, sehen die Koorinaten der Kamera so aus: (0;5;-10). Wenn Camera.Target das Plane ist, schaust du jetzt schräg auf die Plane. Um den Winkel zu ändern reicht es, den Y-Wert der Kamera zu ändern, sie also näher zum Plane auszurichten. Dank Target richtet sich die Kamera dann von alleine wieder auf das Plane aus. Also würde folgendes dann gehen:
ausblenden Quelltext
1:
2:
3:
4:
5:
procedure Timer1.Timer
begin
  GLCamera1.Position.Y := GLCamera1.Position.Y - 0.1;
  GLCamera1.TransformationChanged;
end;

So. Wenn der Timer ... 5mal in der Sekunde (?) ... aktiviert wird, wird die Kamera jedesmal ein bisschen weiter nach unten geschoben. Wenn man das lange genug macht, ist man natürlich auf der anderen Seite des Planes, also muss man sich selbst darum kümmern, wie weit man gehen darf und will.
Allerdings ist das keine wirkliche Rotation um das Target. Dafür gibt's die Funkion
ausblenden Quelltext
1:
GLCamera1.MoveAroundTarget(PitchDelta, TurnDelta);					

der man die Winkel (ich glaube in Grad, wenn nicht mit DegToRad umrechnen) übergibt. Damit dreht man sich dann wirklich um das Objekt, was aber imer noch nicht verhindert, plötzlich auf der anderen Seite der Plane zu sein, dafür geht 180° weiter wieder zurück auf die ursprüngliche Seite.
"Ranzoomen" geht auch, und zwar mit
ausblenden Quelltext
1:
GLCamera1.AdjustDistanceToTarget(Ratio);					

Übergeben wird der Faktor (Ratio) um den die Entfernung zum Objekt geändert werden soll. 0,5 würde also eine Halbierung, 2 eine Verdoppelung der Distanz bewirken.
Somit hätte man eigentlich alles, was man braucht, um den User einen beliebigen Blickwinkel zu erlauben.
Übrigens ändert jede dieser Funktionen die Position der Kamera. Geht auch nciht anders. Höchstens beim Zoomen könnte man SceneScale oder FocalLength nehmen, um die Position der Kamera beizubehalten und gleichzeitig in die Szene zu zoomen...

_________________
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