betajaen
15-11-2008 01:15:11
This is NxOgre 1.5.1 and BloodyCake for OpenGL only. There is no Ogre involved apart from the name. You don't even need Ogre on your computer to run it. Just PhysX.
This release is a completely and totally brand new version of NxOgre; it's very different from the previous NxOgre we are all used to. Apart from being a complete rewrite, it does not use Ogre anymore in the core library. Support for Ogre will come soon in a form of a static library; which you include into your application.
What's in it?
- World class
- Memory Debugger and Memory allocation classes routed through Nedalloc (much faster than malloc)
- Scene class (with partial support for NxSceneDesc as SceneDescription)
- Custom Array classes
- Custom Singleton classes
- Custom String classes
- Custom StringStream classes
- Actors
- SceneGeometry
- Shapes; Boxes, Spheres, Capsules and PlaneGeometries.
- Materials
Download
I have zipped up BloodyMess and BloodyCake both in the same zip file, which can be downloaded from here - NxOgre.1.5.zip (218KB)
Install and Play
Theoretically. If you still have the PhysX environmental variable. You can unzip BloodyMess and BloodyCake into any folder and compile them both. Currently; the dlls and libs for both release and debug both called NxOgre.dll/NxOgre.lib, so be careful with that.
The NxOgre Solution is at.
- BloodyMess/compiler/windows/NxOgre.sln
Make sure you compile every project in there. BloodyCake needs GLUTRenderSystem
The BloodyCake solution is at:
- BloodyCake/BloodyCake.sln
Make sure you have NxOgre.lib and NxOgreGLUT.lib compiled.
Including and Linking to NxOgre and NxOgreGLUT.
For now on all you have to do is link and include to the BloodyMess/sdk/ folder. Both the headers and libs will be copied into there.
Don't bother with the real headers folders; because eventually each platform will have their own specific headers.
You don't need to link or reference to PhysX at all. Don't even need the DLLs anymore. Seriously.
BloodyCake
Once you've compiled them both, go into the release or debug folder in the BloodyCake folder. Just run the application; it should be good to go.
By default will spawn 401 NxActors; 400 Actors and 1 SceneGeometry at once. Obviously you can look at the source code to see how it works.
There are no camera controls or any keys. Just click on the exit button to quit.
If you want benchmarks. I used Fraps on it, and it stayed steady at 30FPS, with no slowdown.
A very quick tutorial
Everything is a little rough at the moment; But it's fun to play with:
World is created via a static function now.
World* mWorld = World::createWorld();
Destroying via:
World::destroyWorld()
If you don't destroy world, or you cause a crash. The MemoryDebugger will dump a log to the console. In the future it will be logged to a file.
Parameters are replaced by descriptions.
WorldDescription wd;
wd.mNoHardware = true
Scenes are almost like the old ones; they can be created via a description or prototype.
mWorld->createScene();
Actors are now split into four categories, linked together via a common class called RigidBody.
- Dynamic (Actor); Moves around
- Geometry (SceneGeometry); Never moves at all.
- Kinematic (KinematicActor); Moves around but doesn't do physics
- Trigger (Trigger); Never moves around, and things can move through it.
Creating an Actor; is almost like before. Names aren't important, so they've been demoted into the RigidBodyDescription (if you have to use them).
Actors:
Can only use Boxes, Capsules, Spheres, Wheels and Convexes.
mScene->createActor(new Box(1), Matrix44(0, 1, 0));
SceneGeometries:
SceneGeometries can only use Meshes and Terrain. It is designed to be a multi-shape Actor. So it is best to dedicate most of the geometry of a room to it.
Shapes shapes;
shapes.insert(new PlaneGeometry(0, real3(0, 1, 0));
mScene->createSceneGeometry(shapes, Matrix44(Matrix44::T_Identity));
"Bodies" are up to what ever the RenderSystem names them, and implements them. The GLUTBody that comes with the GLUTRenderSystem; is a more traditional body. It only does dynamic actors and can only render boxes, spheres or capsules.
You'd want to look at BloodyCake and GLUTRenderSystem to see how to use it, and in the future how to make your own rendersystem.
Screenshots
Okay that's it. Usual rules apply. Do not discuss this outside this thread.