Here’s our third PhysX tutorial, and it doesn’t look like we are getting anywhere, but this tutorial is going to start getting into the PhysX SDK. We are going to create a scene which will calculate all our physics interactions. Just like OpenGL needs a window to draw to, PhysX needs a scene to simulate a world with. But don’t interperet this wrong, the PhysX SDK DOES NOT do any rendering for you.
So, continuing on from the previous tutorial, we need to create a new global variable that will be the scene for our PhysX world. This is going to be called gScene, and takes the type NxScene. We will set it like so:
NxScene* gScene = NULL;
So we have a scene, what do we do with it? First off we are going to set the most basic of properties, gravity. So we need to create a scene descriptor which will hold the properties for our scene. We are going to start off with creating a variable for our scene descriptor called sceneDesc like so:
NxSceneDesc sceneDesc;
Now that we have a scene descriptor, we need to set our gravity:
sceneDesc.gravity.set(0.0f, -9.8f, 0.0f);
And now we are going to create our scene:
gScene = gPhysicsSDK->createScene(sceneDesc);
So we now have a scene that we can add objects to, and adjust its properties as needed. Eg: In the game Prey, we change the gravity direction throughout to allow for a new type of gameplay.
To close up our program, we need to go to our deinitNX function and release our scene:
gPhysicsSDK->releaseScene(*gScene);
gScene = 0;
So we now have a scene, in our next tutorial we are going to start playing with some different parameters. You can check it out here.
Questions or corrections? If something doesn’t work or you spot something I’ve got wrong, leave a comment below. These tutorials have been around a long time, so useful corrections are always welcome!
Related posts:
5. PhysX Materials Just like we assign materials to objects in OpenGL, we...
1 Response
[…] 1, … hosted by GScene magazine and Curiosity Cabaret from 8.30pm); the Deep bar and Tahiti …3. PhysX Scenes | SwiftlessPhysX, just like OpenGL, needs to be setup, but and instead of setting the OpenGL state, we setup […]