CreateDynamics Changes with Release #9: December 29, 2006

 

Changes:

 

 

 

DIRECTORY STRUCTURE WITH DECEMBER 29, 2006 RELEASE

 

\Production                             : Root folder, launch batch files.

..\Samples                              : Contains the source and run-time for PhysXViewer

..\..\PhysXViewer                       : Contains source and run-time for PhysXViewer

..\..\PhysXViewer\documentation         : Constains various doc files

..\..\PhysXViewer\src                   : Source to the PhysXViewer application.

..\..\PhysXViewer\src\common            : Contains the DirectX9.0 GUI for samples.

..\..\PhysXViewer\src\tui               : Utility code for the text user interface

..\..\PhysXViewer\PhysXViewer262        : Executable for the 2.6.2 version.

..\..\PhysXViewer\PhysXViewer270        : Executable for the 2.7.0 version.

..\..\PhysXViewer\media                 : Data assets used by PhysXViewer

..\..\PhysXViewer\compiler              : Workspaces for .NET 2003 and 2005

..\..\PhysXViewer\compiler\xpj          : Scripts to generate the workspaces

..\..\PhysXViewer\compiler\vc71win32    : Workspace for .NET2003

..\..\PhysXViewer\compiler\vc8win32     : Workspace for .NET2005

..\tools                                : Source code libraries, NxuStream, SoftBody, CreateDynamics

..\tools\nxustream2                     : Source to the latest version of NxuStream

..\tools\SoftBody                       : Source to the soft body library used by PhysXViewer

..\tools\CreateDynamics                 : Source to build the CreateDynamics DLL

..\tools\CreateDynamics\AutoPhysX       : Source to autogenerate physics models.

..\tools\CreateDynamics\ConvexDecomposition : ConvexDecomposition library.

..\tools\CreateDynamics\CreateDynamics : Workspace to build the DLL

..\tools\CreateDynamics\CreateDynamicsStandalone : Console version

..\tools\CreateDynamics\granny          : granny header and lib (licensees only)

..\tools\CreateDynamics\GrannyPhysX     : The run-time Granny PhysX library

..\tools\CreateDynamics\grimp           : A generic granny mesh importer (licenees only)

..\tools\CreateDynamics\MeshEZM         : EZ-Mesh importer.

..\tools\CreateDynamics\psk             : Unreal PSK importer

..\tools\CreateDynamics\snippets        : Shared utility source

..\tools\CreateDynamics\TinyXML         : The TinyXML parser

..\tools\MeshFw                         : Contains the prototype 3d studio max plugin for convex decomposition

           

 

 

 

CreateDynamics Changes with Release #8: November 10, 2006

 

Changes:

 

 

 

 

 

CreateDynamics Changes with Release #7: October 12, 2006

 

Changes:

 

 

·       What’s coming up next?

o      More integration of features in Max and Maya plugins.

o      Improvements to PhysXViewer such as mouse dragging, debug visualization, and better Granny integration.

o      Improved interface to tweak individual bones in a skeletal hierarchy.

o      The ability to derive joint limits from a reference animation.

o      The ability to apply a drive model to a granny skeleton using the GrannyPhysX library.

o      Improvements to the convex decomposition library so that it generates internal faces.  This will prevent crash problems and produce better quality compound shapes.

 

 

 

CreateDynamics Changes with Release #6: August 31, 2006:

 

Changes:

 

 

 

 

 

 

CreateDynamics Changes with Release #5: August 11, 2006:

 

Major Changes:

 

 

 

 

CreateDynamics Changes with Release #4: August 3, 2006:

 

Major Changes:

 

 

 

CreateDynamics Changes with Release #3 : July 28, 2006:

 

Questions/comments: mailto:jratcliff@ageia.com

 

Major Changes:

 

 

 

CreateDynamics Changes with Release #2 : July 11, 2006:

 

Questions/comments: mailto:jratcliff@ageia.com

 

 

Major changes:

 

 

What is it?  NxuStream is a library to serialize the state of the PhysX SDK descriptors.  It can also be used to transport and instantiate data assets.  It provides support for both binary and XML file formats.

 

How do you use it?  First, make sure your include paths point to the PhysX 2.4.4 SDK.  Next, add the source into your project.  In your own code simply include ‘NXU_Helper.h’.  This is the only header file you will need.

 

To save the current state of the PhysX SDK to a file on disk you would have a call like this:

 

NXU::coreDump(*gPhysicsSDK, “dump.xml”,  false, false, false, this );

 

To load the physics data:

 

NXU::NxuPhysicsCollection *c = NXU::loadCollection(dump.xml”, false, this );

 

To instantiate the physics data:

 

NXU::instantiateCollection(c,*gPhysicsSDK,myScene,rootNode,this,this);

 

To release the collection once it has been instantiated:

 

NXU::releaseCollection(c);

 

If you reset your instance of the PhysX SDK or when you application exits you clean up the persistent bindings in NxUStream by calling:

 

NXU::releasePersistentMemory();

 

To convert a file from XML to binary you would do the following:

 

NXU::NxuPhysicsCollection *c = NXU::loadCollection(dump.xml”, false, this );

NXU::saveCollection(c,”dump.nxb”, true, false, false, this );

 

Whenever you see the ‘this’ pointer in the code above it is intended to be an interface pointer to your application.  This will be one interface that handles error notification (NXU_errorReport) and another one that handles notification of object creation (NXU_userNotify).

 

 

What is GrannyPhysX?

 

The GrannyPhysX library provides bindings between an animated Granny model and an instantiation of an nxustream physics collection.

 

If you are not a licensee of Granny then you will not be able to build a functional version of this code.  However, it does serve as a reference example for how one might go about binding a character animation system to the PhysX SDK at run time.

 

If you are a Granny licensee simply stick ‘granny.h’ and ‘granny2.lib’ into the directory ‘\CreateDynamics\src\granny’ and the library will fully build with Granny support.

 

To see an example of how to invoke the Granny PhysX bindings you can refer to \CreateDynamics\src\PhysXViewer\GrannyFactory.cpp

 

 

What is the PhysXViewer?

 

The PhysXViewer is a new application that is being developed based on the original PhysX Rocket source code.  The goal was to create a slimmed down version that would be much easier to maintain and work as useful sample code.  By breaking things down into individual libraries the goal is to make as much of the code ‘reusable’ for developers..  The code has been heavily refactored and has a much cleaner layout and library breakdown.

 

Another goal was to use it to create better interactive character demos by leveraging against the Granny engine from Rad Game Tools. 

 

Eventually we would like to provide much more sophisticated libraries that show how to do corpse recovery, complex motion blending, physically modeled characters by using drive motors, cloth/character interaction, and a lot of other cool technologies.

 

For this project it was out of scope to write a full blown character animation system from scratch so, instead, by leveraging against the Granny tools we can develop some excellent technology demos.  For licensees of Rad Game Tools they will have access to the source to these libraries.  For non-licensees they can at least learn from the interfaces how they might go about accomplishing the same features and integration using their own animation engine.  We might implement many bindings through pure virtual interfaces.  While this would create some extra layers of source to maintain it would allow developers to more easily map the libraries to their own animation engine by simply re-writing the implementation of the pure virtual interface.

 

The PhysXViewer doesn’t do much of anything right now.  There has not been sufficient time to yet to do much more than get a shell application together.  However, it does allow you to invoke the create dynamics toolkit, load an NxuStream file, and simulate it.  You cannot pick up and drag the model or do anything more complex than that.  At this point it is mostly a ‘hello world’ application to demonstrate the usage of NxuStream, CreateDynamics, and the GrannyPhysX bindings.

 

This is why we have provided a binary executable version of PhysX Rocket that does provide many of those features.  In time, we hope the PhysXViewer application can become a standard ‘viewer’ for NxuStream and COLLADA files.

 

What is COLLADA?

 

COLLADA is a 3D data asset exchange format that is a proposed industry standard.  In the 1.4.1 specification it does provide limited support for describing physics and dynamics data.  A conversion tool will be provided that converts COLLADA physics to NxUStream and from NxuStream back to COLLADA physics.  Go to www.collada.org to learn more.

 

 

What changes were made to NxuStream?

 

 

What changes remain to be done to NxuStream?