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?
We are, we were and will not be.