PhysX v2.8.0 Released

SpaceDude

19-02-2008 14:23:01

Just thought you might like to know, v2.8.0 is now released.

http://devsupport.ageia.com/

Darksecond

19-02-2008 14:33:24

does it work with nxOgre 0.9?
in the release notes it sais that they also released the CharacterController source with it. is it usefull?

Aiursrage2k

19-02-2008 16:40:30

Looks like the source code for the controller is indeed released, hopefully our glorious leader (betajaen) can use for the good of all! Kind of stinks they got ride of the training programs

Release Notes - AGEIA PhysX SDK 2.8.0
12th November 2007
What's New In AGEIA PhysX 2.8.0

General

* Volumetric force fields have been introduced for cloth, soft bodies, fluids and rigid bodies. Please see the User's Guide for more information.
* The character controller source code is now distributed (see further below).
* The debug build has been replaced by a checked build. The purpose of this build is to provide more detailed debugging information to the user. In particular there are additional tests to ensure the validity of user input.
* Profiling is now enabled in the release and checked build by default.
* The training programs are not available any longer. Have a look at the sample programs to see how the PhysX SDK features are used.
* A new runtime installer, called a Game Installer, is now available for 3rd party distribution. The intent of this installer is to allow for developers to include the AGEIA PhysX runtime system and hardware driver without having to include the full AGEIA PhysX System Software with their installs. Please see the developers support website for details.
* Rocket is not supported any longer.
* Microsoft Visual Studio .NET 2003 is not supported any longer. The supported development tools are listed in the section Supported Platforms.

API changes

* NxForceField and other force field related classes/structures have been redesigned. Among the other classes the following force field related properties/methods have been added. See the documentation for more information.
o NX_FORCE_FIELD_CUSTOM_KERNEL_EPSILON in enum NxParameter
o NxActorDescBase::forceFieldMaterial
o NxClothDesc::forceFieldMaterial
o NxSoftBodyDesc::forceFieldMaterial
o NxFluidDescBase::forceFieldMaterial
o NxActor::setForceFieldMaterial()
o NxActor::getForceFieldMaterial()
o NxCloth::setForceFieldMaterial()
o NxCloth::getForceFieldMaterial()
o NxSoftBody::setForceFieldMaterial()
o NxSoftBody::getForceFieldMaterial()
o NxFluid::setForceFieldMaterial()
o NxFluid::getForceFieldMaterial()
o NxScene::createForceFieldLinearKernel()
o NxScene::releaseForceFieldLinearKernel()
o NxScene::createForceFieldShapeGroup()
o NxScene::releaseForceFieldShapeGroup()
o NxScene::createForceFieldVariety()
o NxScene::releaseForceFieldVariety()
o NxScene::createForceFieldMaterial()
o NxScene::releaseForceFieldMaterial()
o NxScene::setForceFieldScale()
o NxScene::getForceFieldScale()
* NxClothMeshDesc::weldingDistance added (see below)
* NxClothMeshFlags::NX_CLOTH_MESH_WELD_VERTICES added (see below)
* The following cloth and soft body flags were added to disable continuous collision detection with dynamic actors
o NX_CLF_DISABLE_DYNAMIC_CCD in enum NxClothFlag
o NX_SBF_DISABLE_DYNAMIC_CCD in enum NxSoftBodyFlag
* The following classes and member functions were added to support event notification for cloth and soft bodies in future releases. Please note that these features are not supported yet.
o NxClothUserNotify
o NxSoftBodyUserNotify
o NxSceneDesc::clothUserNotify
o NxSceneDesc::softBodyUserNotify
o NxScene::setClothUserNotify()
o NxScene::getClothUserNotify()
o NxScene::setSoftBodyUserNotify()
o NxScene::getSoftBodyUserNotify()
* The following properties/methods were added to adjust the behavior of cloth or soft body with respect to the movement of attached shapes (see below)
o NX_CLF_ADHERE in enum NxClothFlag
o NX_SBF_ADHERE in enum NxSoftBodyFlag
o NxClothDesc::minAdhereVelocity
o NxSoftBodyDesc::minAdhereVelocity
o NxCloth::setMinAdhereVelocity()
o NxCloth::getMinAdhereVelocity()
o NxSoftBody::setMinAdhereVelocity()
o NxSoftBody::getMinAdhereVelocity()
* NxSoftBody::setSplitPairData(), NxSoftBody::getSplitPairData() added to set/get the user buffer for the split tetrahedra data after the soft body has been created
* NxImplicitScreenMesh, NxImplicitScreenMeshDesc and the following list of related methods have been removed (see below)
o NxFluid::createScreenSurfaceMesh()
o NxFluid::releaseScreenSurfaceMesh()
o NxFluid::getNbScreenSurfaceMeshes()
o NxFluid::getScreenSurfaceMeshes()
o NxScene::createImplicitScreenMesh()
o NxScene::releaseImplicitScreenMesh()
o NxScene::getNbImplicitScreenMeshes()
o NxScene::getImplicitScreenMeshes()
* NX_FF_FORCE_STRICT_COOKING_FORMAT added to the enum NxFluidFlag but not supported yet. NxScene::cookFluidMeshHotSpot() has been adjusted accordingly. See the documentation for more details.
* NxFluid::addParticles() has been extended (see below)
* NxFluid::setCurrentParticleLimit(), NxFluid::getCurrentParticleLimit() have been added (see below)
* The following new fluid parameter and its related methods have been added for future use but are not supported yet
o NxFluidDescBase::surfaceTension
o NxFluid::setSurfaceTension()
o NxFluid::getSurfaceTension()
* The following new fluid parameter and its related methods have been added to restrict fluid particle movement to a plane (see below)
o NX_FF_PROJECT_TO_PLANE in enum NxFluidFlag
o NxFluidDescBase::projectionPlane
o NxFluid::setProjectionPlane()
o NxFluid::getProjectionPlane()
* The following fluid parameters and the related methods have been renamed or added for future functionality (see below)
o NxFluidDescBase::staticCollisionRestitution renamed to NxFluidDescBase::restitutionForStaticShapes
o NxFluidDescBase::dynamicCollisionRestitution renamed to NxFluidDescBase::restitutionForDynamicShapes
o NxFluidDescBase::staticCollisionAdhesion renamed to NxFluidDescBase::dynamicFrictionForStaticShapes
o NxFluidDescBase::dynamicCollisionAdhesion renamed to NxFluidDescBase::dynamicFrictionForDynamicShapes
o NxFluidDescBase::staticCollisionAttraction renamed to NxFluidDescBase::attractionForStaticShapes
o NxFluidDescBase::dynamicCollisionAttraction renamed to NxFluidDescBase::attractionForDynamicShapes
o NxFluidDescBase::staticFrictionForStaticShapes added but not yet supported
o NxFluidDescBase::staticFrictionForDynamicShapes added but not yet supported
o NxFluid::setStaticCollisionRestitution() renamed to NxFluid::setRestitutionForStaticShapes()
o NxFluid::getStaticCollisionRestitution() renamed to NxFluid::getRestitutionForStaticShapes()
o NxFluid::setDynamicCollisionRestitution() renamed to NxFluid::setRestitutionForDynamicShapes()
o NxFluid::getDynamicCollisionRestitution() renamed to NxFluid::getRestitutionForDynamicShapes()
o NxFluid::setStaticCollisionAdhesion() renamed to NxFluid::setDynamicFrictionForStaticShapes()
o NxFluid::getStaticCollisionAdhesion() renamed to NxFluid::getDynamicFrictionForStaticShapes()
o NxFluid::setDynamicCollisionAdhesion() renamed to NxFluid::setDynamicFrictionForDynamicShapes()
o NxFluid::getDynamicCollisionAdhesion() renamed to NxFluid::getDynamicFrictionForDynamicShapes()
o NxFluid::setStaticCollisionAttraction() renamed to NxFluid::setAttractionForStaticShapes()
o NxFluid::getStaticCollisionAttraction() renamed to NxFluid::getAttractionForStaticShapes()
o NxFluid::setDynamicCollisionAttraction() renamed to NxFluid::setAttractionForDynamicShapes()
o NxFluid::getDynamicCollisionAttraction() renamed to NxFluid::getAttractionForDynamicShapes()
o NxFluid::setStaticFrictionForStaticShapes() added but not yet supported
o NxFluid::getStaticFrictionForStaticShapes() added but not yet supported
o NxFluid::setStaticFrictionForDynamicShapes() added but not yet supported
o NxFluid::getStaticFrictionForDynamicShapes() added but not yet supported
* The following properties/methods were added in regards to the extended contact event mechanism (see below)
o NX_NOTIFY_ON_START_TOUCH_FORCE_THRESHOLD, NX_NOTIFY_ON_TOUCH_FORCE_THRESHOLD, NX_NOTIFY_ON_END_TOUCH_FORCE_THRESHOLD in enum NxContactPairFlag
o NX_NOTIFY_ALL in enum NxContactPairFlag extended to include the force based contact flags (see above)
o NxBodyDesc::contactReportThreshold
o NxActorDescBase::contactReportFlags
o NxActor::setContactReportThreshold()
o NxActor::getContactReportThreshold()
o NxActor::setContactReportFlags()
o NxActor::getContactReportFlags()
* NxContactPair::isDeletedActor has been added (see below)
* NxActor::recomputeAdaptiveForceCounters() has been removed. It was introduced as a workaround for a known issue which has been fixed in this release.
* NxActor::updateMassFromShapes() returns now a boolean specifying whether the operation was successful
* Enum NxBroadPhaseType and the following list of related properties have been added:
o NxSceneDesc::bpType
o NxSceneDesc::nbGridCellsX
o NxSceneDesc::nbGridCellsY
* The following scene parameter and its related methods have been added to control the spawning of rigid body solver threads (see below)
o NxSceneDesc::solverBatchSize
o NxScene::setSolverBatchSize()
o NxScene::getSolverBatchSize()
* Enum NxShapeCompartmentType and the following list of related properties/methods have been added:
o NxShapeDesc::nonInteractingCompartmentTypes
o NxShape::setNonInteractingCompartmentTypes()
o NxShape::getNonInteractingCompartmentTypes()
* NX_VISUALIZE_COLLISION_SAP has been removed from the enum NxParameter
* Deprecated flag NX_CF_USE_LEGACY_COOKER has been removed from the enum NxConvexFlags
* NX_ARRAY_TRIANGLES_REMAP has been added to the enum NxInternalArray (see below)
* NxMat33 and NxMat34 have additional versions of the following set/get methods to access the matrix data. These new methods ensure correct behavior when the user passes a 2-dimensional data array as argument. See the documentation for more details.
o NxMat33::setColumnMajor()
o NxMat33::getColumnMajor()
o NxMat33::setRowMajor()
o NxMat33::getRowMajor()
o NxMat33::setColumnMajorStride4()
o NxMat33::getColumnMajorStride4()
o NxMat33::setRowMajorStride4()
o NxMat33::getRowMajorStride4()
o NxMat34::setColumnMajor44()
o NxMat34::getColumnMajor44()
o NxMat34::setRowMajor44()
o NxMat34::getRowMajor44()
* NxVec3::setNotUsed() and NxVec3::isNotUsed() have been removed

Hardware/Software Rigid Bodies

* Contact reports can now be requested on a per-actor basis. See the User Guide for more information.
* A new contact-reporting mechanism has been introduced which filters out impacts whose force is below a configurable per-actor threshold. See the User Guide for more information.
* The member NxContactPair::isDeletedActor has been introduced to check whether the actor references provided in the user contact reports are valid. See NxContactPair::isDeletedActor in the documentation for more details.
* All options for the D6 joint are now supported in hardware scenes, except for linear velocity drive.
* The previously deprecated flag NX_CF_USE_LEGACY_COOKER has been removed.
* An alternative broadphase algorithm has been introduced. See NxSceneDesc::bpType in the documentation for more details.
* For triangle meshes a map from internal to external triangle indices can now be extracted using the new flag NxInternalArray::NX_ARRAY_TRIANGLES_REMAP.
* The height field functionality of triangle meshes has been deprecated and will no longer be supported. See NxTriangleMeshDesc in the documentation for more details.
* A new scene parameter has been introduced to give the user more control over the spawning of rigid body solver threads when multi threading is enabled (NX_SF_ENABLE_MULTITHREAD). See NxSceneDesc::solverBatchSize in the documentation for more details.
* The object limit for the broadphase in an un-restricted scene is now 64k shapes (previously 64k actors).

Hardware Scene Manager(HSM)

* Shapes can now be marked to suppress interactions with certain types of compartments. See NxShapeDesc::nonInteractingCompartmentTypes in the documentation for more details.

Hardware/Software Soft Bodies

* The behavior of soft bodies which are attached to shapes can be adjusted with a new parameter. See NxSoftBodyDesc::minAdhereVelocity in the documentation.
* A new flag NX_SBF_DISABLE_DYNAMIC_CCD was introduced to disable continuous collision detection with dynamic actors.

Hardware/Software Cloth

* The cooking format for cloth meshes has been changed. Please note that this new format is not backwards compatible. You need to cook old cloth meshes again to make them work with the current version of the SDK.
* The behavior of cloth which is attached to shapes can be adjusted with a new parameter. See NxClothDesc::minAdhereVelocity in the documentation.
* A new flag NX_CLF_DISABLE_DYNAMIC_CCD was introduced to disable continuous collision detection with dynamic actors.
* The option to automatically "weld" close vertices together in a cloth mesh has been added through the new "weldingDistance" member of the NxClothMeshDesc class. This is useful when you have duplicated vertices in a cloth mesh in order to handle multiple texture coordinates, but want to simulate them all as the same cloth particle. The feature is only enabled if the flag NX_CLOTH_MESH_WELD_VERTICES is set.
* Software cloth compartment is now supported.

Hardware/Software Fluids

* Fluids are now supported on PS3 and XBOX 360.
* New plane projection feature. All particles can be constraint to a configurable plane: NxFluidFlag::NX_FF_PROJECT_TO_PLANE, NxFluidDesc::projectionPlane.
* NxFluid::addParticles() now appends new particle data to the user particle write buffer. Available packet data and fluid bounds are immediately updated according to the new particles. Furthermore, the user can now specify whether the particle ids should be appended to the user buffer instead of replacing the existing data.
* The limit on the number of particles can now be adjusted dynamically within the initially defined bounds. See NxFluid::setCurrentParticleLimit() in the documentation for more details.
* Support for implicit surface generation for fluids has been removed.
* Fluid collision coefficients have been renamed, in order to support future functionality. E.g. NxFluidDesc::dynamicCollisionAdhesion is now named NxFluidDesc::dynamicFrictionForDynamicShapes. The first appearence of "dynamic" depicts the nature of the friction. In this case particles having a relative velocity to the collision object, which is greater zero, are affected. The second appearance of "dynamic" depicts to which category of objects the friction is applied. In this case fluid collision with dynamic objects is affected.

Force Fields

* The force field feature has been considerably restructured. See the User Guide for more information.

Character Controller

* The character controller is now distributed as source, hence, users can modify the code to create their own customized version.

Samples

* The code for the cloth sample has been updated to make use of the SDK vertex welder functionality.
* The force field sample has been adjusted to account for the redesigned force field feature.

Rocket

* Rocket is not supported any longer.

Vista Readyness

AGEIA PhysX hardware is an unclassified device according to Microsoft's hardware driver classification and certification process. The certification available to unclassified hardware is WHQL (Windows Hardware Quality Labs) signing. The hardware drivers provided in this release are WHQL signed for both Vista 32bit and Vista 64bit as well as for Windows XP 32bit and 64bit.

By AGEIA's understanding of the Vista Certification process for applications, applications using the 2.8.0 runtimes will be able to obtain Vista Certification. We are continuing to work with Microsoft to clarify any potential issues which may arise for applications using the AGEIA PhysX runtimes.

Supported Platforms

Runtime

* Software Runtime for Microsoft Windows XP (32bit and 64bit editions; Pentium III / Athlon XP and higher only)
* Software Runtime for Microsoft Windows Vista (32bit and 64bit editions; Pentium III / Athlon XP and higher only)
* AGEIA PhysX Hardware Runtime for Microsoft Windows XP (32bit and 64bit editions; Pentium III / Athlon XP and higher only)
* AGEIA PhysX Hardware Runtime for Microsoft Windows Vista (32bit and 64bit editions; Pentium III / Athlon XP and higher only)
* Microsoft XBox360 (see below for development tools versions)
* Sony Play Station 3 (provided by Sony)
* Software Runtime on Linux: Debian Etch, Ubuntu 7.10, RedHat ES4. Other Linux distributions may work but are not tested

Development

* Microsoft Windows XP
* Microsoft Visual Studio .NET 2005
* Microsoft XBox360 development tools:
o November 2007 XDK (v6534)
o Other versions of the XDK might be supported by request
* Sony Playstation 3 development tools
* Linux, gcc 3.3 and greater


Known Issues And Limitations


Hardware/Software Rigid Bodies

* Please note that deleting an actor does not immediately increase the number of actors you can create. A simulation step is necessary to get the additional capacity for deleted actors. Keep this in mind when operating near the actor limit and running into troubles with actor creation.

Hardware Scene Manager(HSM)

* Enabling interactions with a previously disabled compartment type for a shape (NxShape::setNonInteractingCompartmentTypes()) does not work for objects which lie close to the shape. These close objects will not start to interact with the shape unless they are removed and re-added to the scene.

Hardware/Software Cloth

* Pressure simulation in conjunction with a damping coefficient of 1.0 results in inconsistent cloth behavior.
* The amount of tearing within cloth mesh patches is limited in HW. This may lead to inconsistent behavior between SW and HW during excessive tearing events. Specify tear lines during cloth creation to prevent this.

Tools

* The Visual Remote Debugger (VRD) will not display Force Fields or their parameters.

betajaen

19-02-2008 16:59:42

sigh. More work for me then :roll:

But this looks promising:

The character controller is now distributed as source, hence, users can modify the code to create their own customized version.


[Edit]

For those people who have been BEGGING for a smaller driver, look in the main downloads section. ;)

betajaen

19-02-2008 18:11:14

Okay. I had quite a few compile errors with Bleeding mostly to do with the removal of the FluidMesh stuff and some to do with PhysXDesc enum (which is an addition in Bleeding), I suspect 0.9 will have the same problem.

So for now, you'll have to disable the Fluid system, add these into NxOgreStable.h before anything else.

#define NX_DISABLE_FLUIDS
#define NX_USE_FLUID_API 0


Then recompile. Post back if you have an errors and I'll sort them out.

SpaceDude

19-02-2008 18:12:37

Yes, the character controller has been giving me no end of problems. I'm glad they released the source so I can get in there and fix the problems.

The smaller driver is also very good news. I will no longer need to distribute my game in two version (with and without PhysX software). The new driver is small enough to include irrespective of whether it is already installed or not.

betajaen

19-02-2008 18:32:57

I'm seriously of thinking of rewriting the NxCharacter code into NxOgre and renaming the classes as KinematicActor, and implement some of the things it has (i.e. stepping) into a non KinematicActor for more flexibility (walking up walls, weird gravity zones, etc.).

Should be fun, I've briefly seen the source. It's huge and way over my head. ;)

betajaen

19-02-2008 20:02:12

Alright. I was getting an "ESP" crash. After many searching around it seems to be the disabling of Fluids via a macro.

So what you need to do; Undo what I said, remove the Fluid.cpp/.h files from NxOgre, and remove mFluids and the fluid functions from Scene. Compile, and then it'll moan about mFluid container. Follow the error and remove that block of code (there may be two or three).

I'll be posting a fix to 0.9 in a few days (I need to download the thing first).

Artic_Ice83

26-02-2008 22:11:56

i did what you say but when i remove that files and reference to mFluids from the scene the compiler gives me errors also in the nxogreforcefield...i will wait until a fix....

Artic_Ice83

01-03-2008 10:54:30

maybe i have by-passed the problem removeing the files fluid, fluidmesh and forcefield from the project and than all references in NxOgreScene...the library compiles well but i have to test if all (excluding obviously fluid and force field... :D ) works well without any crash...
this is only a fallback...a fix is needed....

betajaen

01-03-2008 11:02:49

That is pretty much the fix.

Artic_Ice83

01-03-2008 11:31:16

ok. i have tested and now works well with the cakebox!!!