AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi OpenGL bewegen von Objekten geht schief
Thema durchsuchen
Ansicht
Themen-Optionen

OpenGL bewegen von Objekten geht schief

Ein Thema von Chefx · begonnen am 2. Dez 2009 · letzter Beitrag vom 5. Dez 2009
Antwort Antwort
Seite 2 von 2     12   
Chefx

Registriert seit: 13. Jun 2009
Ort: Radebeul
241 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: OpenGL bewegen von Objekten geht schief

  Alt 5. Dez 2009, 15:41
ich hab keine ahnung woran das liegt.
hier die Tastaturabfrage:
Delphi-Quellcode:
  // Tasten
  if Getkeystate(VK_LEFT) < 0 then
      if xk > -950 then
          begin
            xk:=xk-5;
            xap:=0.5;
          end;
  if Getkeystate(VK_RIGHT) < 0 then
      if xk < 950 then
          begin
            xk:=xk+5;
            xap:=-0.5;
          end;
  if Getkeystate(VK_UP) < 0 then
      If zk >-950 then
          begin
            zk:=zk-5;
            zap:=0.5;
          end;
 if Getkeystate(VK_DOWN) < 0 then
      If zk < 950 then
          begin
            zk:=zk+5;
            zap:=-0.5;
          end;
ich hab auch den quellcode oben gepostet^^ wenn du noch mehr wissen willst, oder frag einfach nach^^

Zitat von Lumpiluk:
Ich weiß im Moment leider nicht genau, wie du das ganze drehen möchtest.
das ist mir erstmal "egal" bloß das ich mal von "einem anderen sehen" kann wie er das machen würde
Zitat von Lumpiluk:
Würfel und Haus zusammen um die Y-Achse (in etwa so, als wäre der Würfel fest im "Garten" des Hauses installiert und man dreht sich darum)
das wäre vieleicht erstmal das beste^^
ein Sprichwort für Programmierer:
"Viele wege fürn zur EXE, aber ob sie funktioniert ist die andere Frage."
schau mal bei www.xlite.de.tc vorbei
  Mit Zitat antworten Zitat
Benutzerbild von Lumpiluk
Lumpiluk

Registriert seit: 25. Dez 2008
110 Beiträge
 
#12

Re: OpenGL bewegen von Objekten geht schief

  Alt 5. Dez 2009, 16:08
Delphi-Quellcode:
var
  rotX, rotY, rotZ, transX, transY, transZ, TimeFactor: Single;
  StartTime, LoopTime: Integer;

//...

procedure Render;
begin
  LoopTime := gettickcount-starttime;
  TimeFactor := LoopTime*0.00000000001+1;
  StartTime := gettickcount;

  //keys
  if Active = True then
  begin
    if getasynckeystate(vk_down) < 0 then rotx := Rotx + 1*(TimeFactor);
    if getasynckeystate(vk_up) < 0 then rotx := Rotx - 1*(TimeFactor);
    if getasynckeystate(vk_left) < 0 then roty := Roty - 1*(TimeFactor);
    if getasynckeystate(vk_right) < 0 then roty := Roty + 1*(TimeFactor);
    if getasynckeystate(ord('D')) < 0 then transx := transx - 0.01*(TimeFactor);
    if getasynckeystate(ord('A')) < 0 then transx := transx + 0.01*(TimeFactor);
    if getasynckeystate(ord('W')) < 0 then transy := transy - 0.01*(TimeFactor);
    if getasynckeystate(ord('S')) < 0 then transy := transy + 0.01*(TimeFactor);
    if (getasynckeystate(ord('Q')) < 0) and (transz + 0.01*TimeFactor > 0) then
      transz := transz + 0.01*(TimeFactor);
    if (getasynckeystate(ord('E')) < 0) and (transz - 0.01*TimeFactor > 0) then
      transz := transz - 0.01*(TimeFactor);
    if getasynckeystate(vk_prior) < 0 then rotz := rotz + 1*(TimeFactor); //Bild auf
    if getasynckeystate(vk_next) < 0 then rotz := rotz - 1*(TimeFactor); //Bild ab
    if getasynckeystate(ord('R')) < 0 then
    begin
      rotx := 0; roty := 0; rotz := 0; transx := 0; transy := 0; transz := 1;
    end;

    if rotx > 360 then rotx := rotx - 360;
    if roty > 360 then roty := roty - 360;
    if rotz > 360 then rotz := rotz - 360;
  end;

  //...

  glTranslatef(0,0,-2);

  gltranslatef(transx,transy,0);
  glRotatef(Rotx,1,0,0);
  glRotatef(Roty,0,1,0);
  glRotatef(Rotz,0,0,1);

  //... Haus und Würfel zeichnen
end;
Sieht jetzt zwar nicht so schön aus, aber meistens mache ich es so ähnlich und es funktioniert
Der 'TimeFactor' bewirkt übrigens, dass sich bei unterschiedlichen Frameraten alles immernoch genauso schnell bewegt.
  Mit Zitat antworten Zitat
Chefx

Registriert seit: 13. Jun 2009
Ort: Radebeul
241 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: OpenGL bewegen von Objekten geht schief

  Alt 5. Dez 2009, 17:05
meine These ist
der render falsch

es ist immernoch aber jetzt hab ich das gefühl das der das falsch render.
ich hab jetzt deins eingebaut. aber das sieht mir noch so aus wenn ich von oben schaue und drehe japp funktioniert in jeder position wo der würfel das haus berührt ist der würfel hinter dem haus.
aber warum ? muss noch eine einstellung geändert werden?
ein Sprichwort für Programmierer:
"Viele wege fürn zur EXE, aber ob sie funktioniert ist die andere Frage."
schau mal bei www.xlite.de.tc vorbei
  Mit Zitat antworten Zitat
Benutzerbild von Lumpiluk
Lumpiluk

Registriert seit: 25. Dez 2008
110 Beiträge
 
#14

Re: OpenGL bewegen von Objekten geht schief

  Alt 5. Dez 2009, 17:11
Ich verstehe nicht ganz, was du meinst. Ist der Würfel vielleicht so nah an der Kamera, dass er wieder hinter dem Betrachter ist?
Vielleicht lädtst du dein Programm einfach mal hoch...
  Mit Zitat antworten Zitat
Chefx

Registriert seit: 13. Jun 2009
Ort: Radebeul
241 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: OpenGL bewegen von Objekten geht schief

  Alt 5. Dez 2009, 17:41
oben ist das ganze projekt zu finden einmal der gesamte quelltext(scoure.zip) und ganz oben die exe und die bilder ...
hier das aktuelle(bloß die exe also oben alles downloaden und die exe austauschen)
Angehängte Dateien
Dateityp: exe skybox_238.exe (638,0 KB, 6x aufgerufen)
ein Sprichwort für Programmierer:
"Viele wege fürn zur EXE, aber ob sie funktioniert ist die andere Frage."
schau mal bei www.xlite.de.tc vorbei
  Mit Zitat antworten Zitat
Benutzerbild von Lumpiluk
Lumpiluk

Registriert seit: 25. Dez 2008
110 Beiträge
 
#16

Re: OpenGL bewegen von Objekten geht schief

  Alt 5. Dez 2009, 18:23
'tschuldigung, hatte deine Anhänge vorher irgendwie übersehen

Das sieht wirklich merkwürdig aus. Ich habe mal versucht, das zu kompilieren, aber bei mir gibt es da irgendwo eine Zugriffsverletzung...

Ich bin mir deshalb nicht sicher, ob es was bringt, aber hast du schonmal
glEnable(gl_DEPTH_TEST); probiert?
http://wiki.delphigl.com/index.php/Tiefentest
  Mit Zitat antworten Zitat
Chefx

Registriert seit: 13. Jun 2009
Ort: Radebeul
241 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: OpenGL bewegen von Objekten geht schief

  Alt 5. Dez 2009, 19:41
es klappt,
wegen diesen einen befehl, hat es mich zum verzweifeln gebracht
Zitat von Lumpiluk:
'tschuldigung, hatte deine Anhänge vorher irgendwie übersehen
macht doch nix, kann jeden mal passieren

vielen dank Lumpiluk für deine Hilfe
ein Sprichwort für Programmierer:
"Viele wege fürn zur EXE, aber ob sie funktioniert ist die andere Frage."
schau mal bei www.xlite.de.tc vorbei
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 20:24 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