AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi GLScene Bild verschieben
Thema durchsuchen
Ansicht
Themen-Optionen

GLScene Bild verschieben

Ein Thema von Schuby · begonnen am 26. Mär 2021 · letzter Beitrag vom 27. Mär 2021
Antwort Antwort
Schuby

Registriert seit: 25. Dez 2018
93 Beiträge
 
#1

GLScene Bild verschieben

  Alt 26. Mär 2021, 16:03
Hallo,
ich bekomme es einfach nicht hin das ich mit der rechten Maustaste das
Bild in GLScene verschieben kann, also den Null Punkt nach links oder rechts o/u verschieben kann.

Mit GLSceneViewer1MouseWheel kann ich Zoomen
Mit GLSceneViewer1MouseMove kann ich überall hin drehen.

Aber verschieben, das bekomme ich nicht hin.

Kann mir jmd von euch einen Tipp geben ?

Mfg Schuby

Delphi-Quellcode:
//================================================
procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  mx:= x;
  my:= y;
end;

//================================================
procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if Shift=[ssLeft] then
  Begin
    GLCamera1.MoveAroundTarget(my-y,mx-x);
  end;

{  if Shift=[ssRight] then
  Begin
    ?????????????
  end; }

  mx:= x;
  my:= y;
end;

//================================================
procedure TForm1.GLSceneViewer1MouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
var step: Double;
begin
  if GLCamera1.FocalLength >= 20 then
  begin
    xx:= (WheelDelta / 20);
    GLCamera1.FocalLength:= GLCamera1.FocalLength + (step); //
    Edit1.Text:= FloatToStr(GLCamera1.FocalLength);
  end else
  begin
    GLCamera1.FocalLength:= 21;
  end;
end;
Miniaturansicht angehängter Grafiken
glscene.jpg  
  Mit Zitat antworten Zitat
mmw

Registriert seit: 10. Sep 2019
Ort: OWL
322 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: GLScene Bild verschieben

  Alt 26. Mär 2021, 16:45
vielleicht hilft das 'GLNavigator'

https://www.youtube.com/watch?v=nP2KQElG2XE
  Mit Zitat antworten Zitat
Ydobon

Registriert seit: 3. Mär 2006
261 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: GLScene Bild verschieben

  Alt 26. Mär 2021, 19:27
Bei mir funktioniert es so.
Delphi-Quellcode:
procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if shift=[ssRight] then
  begin
    mx:=x;
    my:=y;
  end;
end;

procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var xx, yy: Single;
    pl: TGLCoordinates3;
begin
  if shift=[ssRight] then
  begin
    xx:=GLCamera1.Position.x;
    yy:=GLCamera1.Position.y;
    GLCamera1.Position.x:=xx+(my-y)/20;
    GLCamera1.Position.y:=yy+(mx-x)/20;
    mx:=x;
    my:=y;
  end;
end;
  Mit Zitat antworten Zitat
Schuby

Registriert seit: 25. Dez 2018
93 Beiträge
 
#4

AW: GLScene Bild verschieben

  Alt 27. Mär 2021, 12:41
Hallo Ydobon,
mit DummyCube2 gehts bei mir.
Ich denke ich habe die Camera nicht richtig eingestellt.

mfg


Delphi-Quellcode:
procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 // mx:= x;
 // my:= y;

  if shift=[ssRight] then
  begin
    mx:=x;
    my:=y;
  end;
end;
//==============================================================================
procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var xx, yy: Single;
    pl: TGLCoordinates3;
begin
// if Shift=[ssLeft] then
// Begin
// GLCamera1.MoveAroundTarget(my-y,mx-x);
// end;
  if shift=[ssRight] then
  begin
    xx:=GLDummyCube2.Position.x; //GLDummyCube2 GLDummyCube2 GLCamera1
    yy:=GLDummyCube2.Position.y;
    GLDummyCube2.Position.x:=xx+(my-y)/20;
    GLDummyCube2.Position.y:=yy+(mx-x)/20;
    mx:=x;
    my:=y;
  end;
end;
Miniaturansicht angehängter Grafiken
gldummycube2.jpg  

Geändert von Schuby (27. Mär 2021 um 12:43 Uhr)
  Mit Zitat antworten Zitat
mmw

Registriert seit: 10. Sep 2019
Ort: OWL
322 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: GLScene Bild verschieben

  Alt 27. Mär 2021, 17:15
eine Möglichkeit wäre noch


Delphi-Quellcode:
 private
    { Private-Deklarationen }
   picked_object:TGlBaseSceneObject;
Delphi-Quellcode:
procedure TForm39.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
picked_object:=GLSceneViewer1.Buffer.GetPickedObject(X,Y);
end;

procedure TForm39.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

var pp:TVector3f;

begin
if (Assigned(picked_object)) and (Shift=[ssRight]) then begin
        pp:=GLSceneViewer1.Buffer.ScreenToWorld(x,y);
        picked_object.Position.x:=pp.x;
        picked_object.Position.y:=pp.y;
        end;
end;

procedure TForm39.GLSceneViewer1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
picked_object:=nil;
end;

end.
  Mit Zitat antworten Zitat
Schuby

Registriert seit: 25. Dez 2018
93 Beiträge
 
#6

AW: GLScene Bild verschieben

  Alt 27. Mär 2021, 19:04
@mmw

var pp : TVector3f; <== damit komme ich nicht klar, kannst du helfen ?


mfg
  Mit Zitat antworten Zitat
mmw

Registriert seit: 10. Sep 2019
Ort: OWL
322 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: GLScene Bild verschieben

  Alt 27. Mär 2021, 19:08
hallo,

die Unit ist

GLS.VectorTypes
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz