Friday, 19 October 2012

NVIDIA PhysX upgrade and APEX integration with USC's Gamepipe Game Engine



Project : NVIDIA PhysX upgrade and APEX integration
Semester : Fall 2012
Platform : Visual C++
Course : Game Engine Development
Instructor : Prof. Jose Villeta


This was a team project (team of 2) for the Game Engine Development course. USC's Gamepipe Game Engine had PhysX 3.1.2 integrated for adding physics to a game. We upgraded it to support the latest PhysX version (3.2.1). 

Nvidia’s APEX is a multi-platform, high-level, scalable dynamic framework built around the PhysX SDK physics engine. APEX allows developers to create complex physically simulated systems like cloth and particles, without having to rely on low-level API. The Gamepipe Game Engine did not support APEX. We added support for APEX 1.2.1.

We integrated the basic APEX framework into the game engine. The APEX framework builds on top of the PhysX SDK interfacing through some user defined classes for renderable asset creation and rendering. The Gamepipe Game Engine uses the Ogre3D renderer. We implemented vertex buffer, index buffer and bone buffer classes to get data from APEX and created Ogre Manual Objects to render APEX assets. The game engine now supports import and rendering of APEX Destructible and Cloth assets.