Autor Beitrag
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Di 06.11.12 11:55 
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)

ausblenden 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.
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Di 06.11.12 22:06 
GLScene gibt's noch?

Und das benutzt jemand (freiwillig)?

Hilfe.


user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
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 haben sowas fertig, aber ich kann dir spontan nicht sagen welches.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."