ODE Physics unglückliches Beispiel
Übersicht

![]() |
VertexBetreff: ODE Physics unglückliches Beispiel |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, habe jetzt mal auf die Schnelle DreiDe für BMax 1.12 zum laufen gebracht, und wollte das neue ODE Module ausprobieren....
Also, ersteinmal was ist ODE? ODE steht für Open Dynamics Engine, und ist m.M. nach die beste Open Source Physics Engine, die man z.Z. bekommen kann. Alle Infos dazu auf http://www.ode.org Mak.ODE Module steht noch nicht standardmäßig zur Verfügung. Dazu Eingabeaufforderung öffnen, zu BlitzMax\bin wechseln, und dort "syncmods.exe -u Benutzername -p Passwort mak" starten. Das Beispiel hier funktioniert nichteinmal mit Kollision, da ich noch keine CallBack Funktion geschrieben habe. Zumindest Gravitation funzt. Geht mir nur darum, ersteinmal überhaupt ODE zum laufen gebracht zu haben: Code: [AUSKLAPPEN] Strict
Framework Pub.DreiDe Import Mak.ODE Global World : Int Global Space : Int Global BoxBody : Int Global BoxMass : dMass Global BoxGeom : Int Global BoxMesh : TMesh Global PlaneGeom : Int Global PlaneMesh : TMesh Global Camera : TCamera Global Position : Float Ptr TDreiDe.Graphics3D(640, 480) ' Erstelle Welt World = dWorldCreate() dWorldSetGravity(World, 0.0, -9.81, 0.0) ' Erstelle Raum Space = dHashSpaceCreate(0) ' Erstelle Box BoxBody = dBodyCreate(World) dBodySetPosition(BoxBody, 0.0, 20.0, 0.0) BoxMass = New dMass dMassSetBoxTotal(BoxMass, 0.01, 2.0, 2.0, 2.0) dBodySetMass(BoxBody, BoxMass) BoxGeom = dCreateBox(Space, 2.0, 2.0, 2.0) dGeomSetBody(BoxGeom, BoxBody) BoxMesh = TPrimitive.CreateCube() BoxMesh.ScaleVertices(2.0, 2.0, 2.0) BoxMesh.SetPosition(0.0, 20.0, 0.0) ' Erstelle Boden PlaneGeom = dCreatePlane(Space, 0.0, 1.0, 0.0, 0.0) PlaneMesh = TPrimitive.CreateQuad() PlaneMesh.ScaleVertices(100.0, 100.0, 1.0) PlaneMesh.SetRotation(-90.0, 0.0, 0.0) ' Erstelle Kamera Camera = New TCamera Camera.SetPosition(0.0, 10.0, 30.0) While Not KeyDown(KEY_ESCAPE) dWorldQuickStep(World, 0.1) If dBodyIsEnabled(BoxBody) Then Rem BoxMesh.SetRotation(dGeomGetPitch(BoxGeom), .. dGeomGetYaw(BoxGeom), .. dGeomGetRoll(BoxGeom)) End Rem Position = dGeomGetPosition(BoxGeom) BoxMesh.SetPosition(Position[0], .. Position[1], .. Position[2]) EndIf Camera.Render() Flip() Wend EndGraphics() End Dem Module fehlt übrigens dODEClose Funktion, event. gibt es dadurch MemoryLeaks. Ich werde denke ich mich aber nochmal hinsetzen, und ein vernünftiges Module mit Helperfunktionen zusammenbasteln. Da ihr nicht DreiDe mit Kompatibelität zu BMax 1.12 habt, habe ich das mal alles zu einem Packet gepackt: http://www.blitz-pasting.net/i...amp;id=640 (inkl. Win32 Exe) mfg olli |
||
vertex.dreamfall.at | GitHub |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group