Autor Beitrag
ene
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Di 10.07.07 11:25 
Hiho,

ich habe in GLScene einen Viewer, mit dem ich STL-Dateien darstellen kann, das funktioniert auch alles super.

Ich kann meine Objekte rotieren und auch alles schön zoomen. Ich arbeite mit einer orthogonale Ansicht und möchte nun auche gerne meine Objekte verschieben. Aber da stehe ich irgendwie vor einem Problem:

Wenn ich mein Objekt lade und verschiebe, stimmt das Verschieben mit der Mausbewegung überein. Rotiere ich nun meine Objekte und möchte ich sie verschieben, verschiebe ich sie leider irgendwie und nicht meiner Mausbewegung entsprechend. Also ich fahre mit der Maus nach links und mein Objekt bewegt sich nach oben oder auch nach rechts oder sonst wo hin. Je nachdem wie ich sie rotiert habe.

Und ich komme leider nicht drauf, wie ich es machen soll...kann mir da vielleicht jemand bei helfen, wie ich es richtig hinbekomme?

Vielen Dank im Vorraus!

PS: Die Demo mit dem Teepot kenne ich, aber das funktioniert nur bei einer perspektivischen Ansicht.

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
ene Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Di 10.07.07 13:55 
Hier mal meine heutigen kläglichen Bemühungen. Fix ist ein DummyCube auf den ich schaue unn Liste ist ein Array Of Record. Dort sind meine FreeForms untergebracht um die es geht.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
  //Linke Maustaste Translation
  If ssLeft In Shift Then Begin
    MakeVector(vUp, Fix.Up.X, Fix.Up.Y, Fix.Up.Z);
    MakeVector(vDir, Fix.Direction.X, Fix.Direction.Y, Fix.Direction.Z);
    v:= VectorCrossProduct(vUp, vDir);
    NormalizeVector(v);
    KV:= Kamera.ScreenDeltaToVector(DX, DY, Kamera.SceneScale, v);
    caption:=floattostr(kv[0])+' '+floattostr(kv[1])+' '+floattostr(kv[2]);

    For i:= Low(Liste) To High(Liste) Do Liste[i].FreeForm.Position.Translate(kv);
    Kamera.TransformationChanged;
  End;


Ein bisschen weiter bin ich gekommen, aber meistens sind jetzt Y und Z vertauscht...

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.