AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi OpenGL Bone Animation (Restless) funktioniert nicht?
Thema durchsuchen
Ansicht
Themen-Optionen

OpenGL Bone Animation (Restless) funktioniert nicht?

Ein Thema von Chefx · begonnen am 21. Jan 2010 · letzter Beitrag vom 31. Jan 2010
Antwort Antwort
Chefx

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

OpenGL Bone Animation (Restless) funktioniert nicht?

  Alt 21. Jan 2010, 18:58
Hey DPs,

Ich hab schon wieder ein Problem.
ich will mit Bones eine Objekt animieren. Da hab ich mich auf ins WWW gemacht und hab das http://texelviews.delphigl.com/index...peach#restless gefunden.
So jetzt zu mein Problem, wenn ich jetzt die Animation starte bewegt sich der bagger keinen Zentimeter.
Ich hab mir das beispiel angesehen (hab daraus auch die funktionen und das Objekt(den Bagger) her ).
Hier der Quellcode:
Delphi-Quellcode:
unit skybox1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,dglOpenGL, AppEvnts, GLBmp, StdCtrls, ExtCtrls, glRender,Model,Model3ds,
  ModelObj,ModelX,ModelMsa,glxsys, CategoryButtons, Geometry, restless;


type
  TForm1 = class(TForm)
    ApplicationEvents1: TApplicationEvents;
    Timer1: TTimer;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
    procedure FormResize(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    DC : HDC;
    RC : HGLRC;
    procedure render;
  end;

  var
  Form1: TForm1;
  Timefactor:real;
  StartTime, LoopTime: Integer;
  glx:Tglx;
  rlsObj : TRLSObject;
  updateTime : Single;
const
  ADVANCE_RATE = 25;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  restlessStartAnimation(rlsObj, 1, 1000);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
 Dummy : HPalette;
 i:integer;
 TMUs:integer;
begin
  randomize;
  glx:=Tglx.Create(form1);
  glx.Parent:=self;
  glx.Align:=alclient;
  glx.GLXini(DC,RC);
  glx.extfilepath:=extractfilepath(paramstr(0));
  //glx.GLXcreateSkybox('seiten', 'seiten', 'unten', 'oben', 'seiten', 'seiten',1000, 1000, 1000,list[0]);
  glClearColor(0,0,0,0);

  // restless initialisieren
  restlessInit();

  // objekt erstellt
  rlsObj := restlessCreate();

  //objekt laden
  restlessLoadFromFile(rlsObj, PChar(glx.extfilepath + 'objects/Kran.rlsobj'));

  //objektanimation laden
  restlessAddAnimationFromFile(rlsObj, PChar(glx.extfilepath + 'objects/Kran.rlsani'));


end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  DeActivateRenderingContext;
  wglDeleteContext(RC);
  ReleaseDC(Handle, DC);

  //animation wieder freigeben
  restlessDestroy(rlsObj);

  glx.Free;
end;

procedure TForm1.render;
var i:integer;
begin
  glMatrixMode(GL_MODELVIEW);
  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);

  glLoadIdentity;

  glRotated(90,0,1,0);
  gltranslatef(10,-1,1);
  glRotated(90,0,1,0);
  glPushMatrix();

  glColor3f(1.0,0,0);
  
  restlessRender(rlsObj); // objekt rendern


  glClear(GL_DEPTH_BUFFER_BIT);
  glColor3f(0,1.0,0);
  For i := 0 to restlessGetBoneCount(rlsObj) do
    restlessRenderBone(rlsObj, i, true); //bones rendern
  glPopMatrix();

  SwapBuffers(DC);

end;

procedure TForm1.FormResize(Sender: TObject);
begin
  glx.GLXhandleResize;
end;

procedure TForm1.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
begin
  LoopTime := gettickcount-starttime;
  TimeFactor := LoopTime*0.00000000001+1;
  StartTime := gettickcount;

      // Update Restless:
    updateTime := updateTime + TimeFactor;
    If (updateTime > ADVANCE_RATE) then
    Begin
      restlessAdvanceAnimation(rlsObj, updateTime);
      updateTime := updateTime - ADVANCE_RATE;
    End;

  Render;

  glx.SetFocus;
end;


end.
Hab ich da noch was vergessen oder falsch gemacht ?

Ich danke für alle antworten

MfG
Chefx
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
Chefx

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

Re: OpenGL Bone Animation (Restless) funktioniert nicht?

  Alt 24. Jan 2010, 19:11
was nehmt ihr zur Bone Animation?
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
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#3

Re: OpenGL Bone Animation (Restless) funktioniert nicht?

  Alt 24. Jan 2010, 23:24
Ich kenn mich damit zwar nicht aus, aber die Zeile
  TimeFactor := LoopTime*0.00000000001+1; kommt mir etwas seltsam vor. Hast du es mal mit höheren Werten probiert? Du sagst ja, dass sich bei dir nix bewegt. Vielleicht bewegt es sich ja schon, aber einfach so langsam, dass du keine Bewegung erkennst.
  Mit Zitat antworten Zitat
Chefx

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

Re: OpenGL Bone Animation (Restless) funktioniert nicht?

  Alt 25. Jan 2010, 15:05
funktioniert leider nicht,
auch mit 2 geht es nicht
(die kleinen zahlen laufen sonst gut )
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
Chefx

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

Re: OpenGL Bone Animation (Restless) funktioniert nicht?

  Alt 31. Jan 2010, 13:27
Ich hab es jetzt hin bekommen (mit hilfe der DGL )

es lag hier dran das ich noch die Deklaration vergessen hab (in OnCreate):
StartTime := gettickcount; und was NamenLozer noch gesagt hat:
Delphi-Quellcode:
Timefactor:=gettickcount-StartTime;
StartTime := gettickcount;
drotzdem danke

MfG
Chefx
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


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 05:35 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