Gausi - Di 06.11.12 11:55
Titel: GLScene, Kamera drehen
Ich beschäftige mich grade etwas mit GLScene, um ein paar 3D-Objekte darzustellen (keine Cover-Bilder oder Musiknoten, sondern Knoten und Kanten eines Graphen). Dabei möchte ich das Gebilde auch von allen Seiten betrachten, d.h. die Kamera drehen.
Das gesamte Konstrukt ist um 0/0/0 herum zentriert, wo sich auch ein DummyCube befindet, den die Kamera als TargetObject hat. Mit diesem Code drehe ich die Kamera um das Objekt (wie in den Demos, und auch in diversen Tutorials)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm2.GLSceneViewerMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin mx:=x; my:=y; end;
procedure TForm2.GLSceneViewerMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if Shift<>[] then begin GLCamera1.MoveAroundTarget(my-y, mx-x); mx:=x; my:=y; end; end; |
Das ist aber verwirrend, wenn die x-y-Ebene nicht die Bildebene ist. Soll heißen, wenn die x-Achse der Szene nicht der "X-Achse des Monitors" entspricht, dann läuft das nicht so wie gewollt - klar, was ich meine?
Wie bekomme ich das also hin, dass sich die Kamera immer "hoch-runter" bzw. "links-rechts" um das Objekt bewegt?
Martok - Di 06.11.12 22:06
GLScene gibt's noch?
Und das benutzt jemand (freiwillig)?
Hilfe.
Gausi hat folgendes geschrieben : |
Wie bekomme ich das also hin, dass sich die Kamera immer "hoch-runter" bzw. "links-rechts" um das Objekt bewegt? |
Normalerweise, indem du den "anderen" Winkel (den Up-Vektor der Szene) in sin/cos passend reinmultiplizierst, also im Endeffekt aus deinem Drehwinkel seine Projektion um die Bildschrim-Hochachse machst.
Komischer Satz.
Denk dir statt "Winkel" mal "Moment", das passt wenigstens physikalisch: Drehung um eine Achse ;)
Und einige der
DGL-Tutorials [
http://wiki.delphigl.com/index.php/Tutorial] haben sowas fertig, aber ich kann dir spontan nicht sagen welches.