AGEIA PhysX + Blitz3D?
Blitz3D Forums/Blitz3D Userlibs/AGEIA PhysX + Blitz3D?
| ||
Hi all, It is said that AGEIA PhysX is a new technology. The AGEIA PhysX processor is available in game PCs from Dell, Alienware and Falcon Northwest starting today, and on add-in boards from ASUS and BFG technologies starting in May 2006. Darkbasic Pro has integrated it (DarkPhysics). Is it possible for blitz3D to work with it? Thanks in advance. Sammy :) |
| ||
Mmm, I'd rather let them go first and see how they get on with it before it comes our way. Anyway, I'd assume you have to have the required GPU hardware to use it? I assume for Blitz to use this then a deal must be struck with AGEIA. |
| ||
Should just be a case of using Novodex (or whatever they've called the engine now). Aegia should have encoded support for their hardware in that. Though I'd wait and see if anyone bothers to get a PPU first. In most game situations you'd stillneed to sdesign fr lower specced PCs, so the PPU would just be about adding extra eyecandy. And if you're all about power-hungry eyecandy, Blitz3D probably isn't the platform of choice. |
| ||
You do not need the hardware to run the physics engine. |
| ||
I think it's a good move. Good physics is as much about game play as Eyecandy. I use JV-ODE but even the hight JV-ODE has to share a already taxed PCU. I say we need PPU it is the future just as long as it as ease to use as JV-ODE. |
| ||
Darkbasic pro will be having AGEIA physics. What I love about AGEIA is, say you have the hardware? no problem... but if you don't and you have a dual core cpu then it will take advantage of that too!. |
| ||
Physics add to gameplay rather than just an eyecandy (compared to HDR, etc) So, I hope PPUs catch on in the next few years. |
| ||
It's a misconception that HDR and eye candy do not contribute to gameplay. I immerse better and enjoy the game and play differently with better graphics. |
| ||
Hi all, Now "Darkbasic" and "irrlicht" have integrated AGEIA PhysX!!! http://www.twilightstar.net/~andrew/works/tutorial/irrlicht_physx/physxtutorial.htm Sammy :) |
| ||
Darkbasic's AGEIA physics is gonna rule, with water, etc... gonna be cool stuff. What I like is, it's hardware accelerated also! |
| ||
Would AGEIA physics be the rezone to switch to Darkbasic? The answer has to be NO. Why? you can't set the physics detail on Hi in a game unless it got the hardware to do it. So until it become wide spread it's at best a nice toy at worst a big waste of time for us to code on. Especially when we have JV-ODE which is fast, stable and well supported by Viper. We should concentrate on playability not gimmicks. In two years things will have changed but for now the best thing you can do is use Blitz3D with JV-ODE and leave the Big boys to play with AGEIA physics until it’s makes sense for us to use. |
| ||
I can do this in DarkBasic with DarkPhysics: REM load the universe, make the physics loadobject "media\simple.dbo", 1000 phy make rigid body static mesh 1000 REM make our player make object box 10, 20, 50, 20 phy make box character controller 10, 400, 40, -500, 10, 35, 10, 1, 10.5, 45 hide object 10 What's the equivalent with JV-ODE? scene = loadanimmesh "media\simple.b3d" then what? I think it will require more coding than the above DBP fragment. Which is better? I've got both Blitz3D and JV-ODE, DarkBasic Pro with DarkPhysics - I'll let you know! |
| ||
Maybe something like this...scene=CreateTriMesh(Space,LoadMesh("media\simple.b3d")) body=dBodyCreate(World) dBodySetRotation(body,rx,ry,rz) dBodySetPosition(body,xpos,ypos,zpos) geom=dCreateBox(Space,xscale,yscale,zscale) dGeomSetBody(geom,body) It's possible to build much simpler helper functions in JV-ODE though... Function MakeObjectBox(xpos#,ypos#,zpos#,rx#,ry#,rz#,xscale#,yscale#,zscale#) body=dBodyCreate(World) dBodySetRotation(body,rx,ry,rz) dBodySetPosition(body,xpos,ypos,zpos) geom=dCreateBox(Space,xscale,yscale,zscale) dGeomSetBody(geom,body) Return body End Function Which would result in a similar setup to the DarkPhysics example above... scene=CreateTriMesh(Space,LoadMesh("media\simple.b3d")) player=MakeObjectBox(xpos#,ypos#,zpos#,rx#,ry#,rz#,xscale#,yscale#,zscale#) Obviously this doesn't include the 10-15? lines of ODE init/step/close. It also doesn't include player control but that's trivial stuff... If KeyDown(leftkey) Then dBodyAddForce(player,-10,0,0) It's difficult to say without knowing what '10, 400, 40, -500, 10, 35, 10, 1, 10.5, 45' means exactly. AGEIA PhysX is great with the required hardware, but without the PhysX hardware it's just a Novadex based physics engine, nothing more. |
| ||
Thanks, I'll try it! I was thinking I would need to examine the contents of the mesh to find all the bounding boxes and create ODE geometries accordingly... phy make box character controller 10, 400, 40, -500, 10, 35, 10, 1, 10.5, 45 Sorry, should have been a bit more descriptive there... they are parameters describing the size of the player, let's see... 10 is the object ID (DBP's ghastly system, I prefer the Blitz way) 400, 40, -500 is the X, Y, Z position 35, 10, 1 is the size 10.5 is the maximum step level (so you can walk up steps) 45 is the maximum slope angle (walking up slopes) |
| ||
I can get a basic mesh to load - four walls in a scene in this case. However, when I try to add a dynamic object to the scene, I get a memory access violation in the dSpaceCollide call; if I remove the mesh, then it works fine with just the dynamic object. To load the mesh I do the following: ; The walls walls.PhysicsObject = New PhysicsObject walls\mesh = LoadMesh("walls.b3d") walls\geometry = dCreateTriMesh( space, walls\mesh ) To create the dynamic object: Function MakeDynamicBox.PhysicsObject(xpos, ypos, zpos, xsiz, ysiz, zsiz, xrot, yrot, zrot) obj.PhysicsObject = New PhysicsObject obj\body = dBodyCreate( world ) dBodySetRotation( obj\body, xrot, yrot, zrot ) dBodySetPosition( obj\body, xpos, ypos, zpos ) dBodySetAutoDisableFlag( obj\body, 1 ) obj\geometry = dCreateBox( space, xsiz, ysiz, zsiz ) dGeomSetBody( obj\geometry, obj\body ) mass = dMassCreate() dMassSetBox( mass, 0.1, xsiz, ysiz, zsiz ) dBodySetMass( obj\body, mass ) obj\mesh = CreateCube() ScaleMesh obj\mesh, xsiz / 2, ysiz / 2, zsiz / 2 Return obj End Function |
| ||
Hi Pete, The following line is incorrect... walls\geometry = dCreateTriMesh( space, walls\mesh ) It should be as follows (no 'd' prefix)... walls\geometry = CreateTriMesh( space, walls\mesh ) Check the TriMesh/AnimTriMesh car demos included with JV-ODE to see the above in action. |
| ||
Thanks, that fixed it. I changed my simple scene to one with a few obstacles and now have a few spheres all bouncing around inside it... |