![]() |
OpenGL Bone Animation (Restless) funktioniert nicht?
Hey DPs,
Ich hab schon wieder ein Problem. :lol: ich will mit Bones eine Objekt animieren. Da hab ich mich auf ins WWW gemacht und hab das ![]() 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 :wink: ). Hier der Quellcode:
Delphi-Quellcode:
Hab ich da noch was vergessen oder falsch gemacht ?
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. Ich danke für alle antworten MfG Chefx |
Re: OpenGL Bone Animation (Restless) funktioniert nicht?
was nehmt ihr zur Bone Animation?
|
Re: OpenGL Bone Animation (Restless) funktioniert nicht?
Ich kenn mich damit zwar nicht aus, aber die Zeile
Delphi-Quellcode:
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. :mrgreen:
TimeFactor := LoopTime*0.00000000001+1;
|
Re: OpenGL Bone Animation (Restless) funktioniert nicht?
funktioniert leider nicht,
auch mit 2 geht es nicht :mrgreen: (die kleinen zahlen laufen sonst gut :stupid: ) |
Re: OpenGL Bone Animation (Restless) funktioniert nicht?
Ich hab es jetzt hin bekommen (mit hilfe der DGL :mrgreen: )
es lag hier dran das ich noch die Deklaration vergessen hab (in OnCreate):
Delphi-Quellcode:
und was NamenLozer noch gesagt hat:
StartTime := gettickcount;
Delphi-Quellcode:
drotzdem danke :thumb: :thumb: :thumb:
Timefactor:=gettickcount-StartTime;
StartTime := gettickcount; MfG Chefx |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz