Archive for December, 2013
After the latter update, PC version of the Assassin’s Creed IV: Black Flag (AC IV) has became the first Ubisoft’s game that implements GPU accelerated PhysX effects.
In the Black Flag, GPU PhysX support was shaped into volumetric particle effects (“PhysX Particles“), implemented through the APEX Turbulence module.
Bearing in mind that Assassin’s Creed series is already using competitive physics solution, Havok Physics engine, it was certanly an interesting technical task.
Semen Kovalev, Producer of Assassin’s Creed IV for PC at Ubisoft Kiev, was kind enough to share company’s experience on the PhysX integration process.
PhysXInfo.com: What kind of GPU accelerated physics effects can be found in Assassin’s Creed IV: Black Flag?
Semen Kovalev: In Assassin’s Creed IV: Black Flag, our development team decided to focus on adding physical smoke effects to the game. The smoke effects are present in a variety of forms such as smoke from flintlock pistol or musket shots, smoke bombs.
GPU PhysX effects, in a form of APEX Turbulence based smoke, are now available in the PC version of the Assassin’s Creed IV: Black Flag title.
Update: Adding GPU PhysX support to Assassin’s Creed IV – interview with Ubisoft Kiev
We have prepared a short comparison video to showcase the effects.
Turbulence smoke is utilizing latest APEX 1.3, can cast and recieve shadows on a rendering side, and is applied to a number of environmental and combat assets throughout the game.
Particles are affected by forcefields (such as shots and explosions) and weather conditions (such as wind). They can interact with characters and are also colliding with static level geometry, as a nice addition.
New major APEX SDK 1.3 release is now available for public download.
Update: APEX SDK 1.3.1 released
1.3 version is featuring support for newest PhysX SDK 3.3.0 and also includes variety of improvements and new features for APEX modules.
Please note that corresponding authoring tools are required – PhysXLab 1.3 and DCC plug-ins 3.0
|APEX SDK 1.3: Feature Highlights|
APEX 1.3 now features a single Legacy Module (APEX_Legacy).
In APEX 1.2 every module had its own legacy module. For example, if an application uses APEX clothing and destruction, in APEX 1.2 the application would need to load both APEX_Clothing_Legacy and APEX_Destructible_Legacy.
However, assets created with APEX 1.1 or 1.2 should “just work” with APEX 1.3. The application must load the legacy module, which contains all the code that allows APEX to automatically upgrade assets to the latest version.
APEX Destruction and APEX Clothing modules can now utilize Render Proxies.
The rendering of destructibles and cloth can now be managed by a new object that is independent of the actors themselves. By default you will not see a change, but you may detach this object from the actors, meaning that the render data will not get deleted when the actors are deleted. You may delete the renderable when you’re done with it.
This is useful for multi-threaded renderers which may have the render data queued up even after the destructible or clothing actor is deleted in the main thread.
Speaking of Destruction, so called Behaviour Groups functionality was added to authoring pipeline.
Some common parameters, such as damage threshold, damage spread, density, etc., are now contained in “Behavior Groups“. Every chunk references a behavior group by index, allowing the user to customize behaviors for different chunks within single asset.
For those developers who are not ready yet to switch to 3.3 branch of the PhysX engine, NVIDIA has prepared several bug-fixing releases – PhysX SDK 3.2.5, APEX SDK 1.2.5 and corresponding tools.
Update: APEX SDK 1.3 is available
|PhysX SDK 3.2.5: Release Notes|
- Fixed a bug which could cause triggers to not fire touch events after a kinematic actor moved into or out of overlap and had no target set anymore in the next simulation step.
- Fixed crash when setting multiple materials on a shape followed by release/removal of the corresponding actor from the scene (all while the simulation is running).
- Rigid Bodies
- Fixed a bug that caused bodies to not respond to applied velocities or forces if the autowake parameter in those methods was set to false. This could happen for (almost) resting bodies which were close to other bodies (bounding box overlap) but did not touch them.
- Bugs in the suspension force and tire load computation have been fixed that affected handling when the vehicle was upside down.
- The tire load passed to the tire force computation is now clamped so that it never falls below zero.
- PxVehicleTireLoadFilterData now requires that mMinNormalisedLoad is greater than or equal to zero.
- PxVehicleTireLoadFilterData now has a new member variable mMinFilteredNormalisedLoad. This value describes the filtered normalised load that occurs when the normalised is less than or equal to mMinNormalisedLoad.
- PxVehicleWheelsSimData now has a new function setMinLongSlipDenominator. This can be used to tune stability issues that can arise when the vehicle slows down in the absence of brake and drive torques.
- A bug in the tank damping forces has now been fixed. Tanks now slow down more aggressively from engine and wheel damping forces.
- A new section “The Vehicle Under-steers Then Over-steers” has been added to the vehicle troubleshooting guide to describe steps to avoid twitchy handling on bumpy surfaces.
- A new section “The Vehicle Never Goes Beyond First Gear” has been added to the vehicle troubleshooting guide to describe a common scenario that occurs when the automatic gearbox is given a latency time that is shorter than the time taken to complete a gear change.
- A new section “The Vehicle Slows Down Unnaturally” has been added to the vehicle troubleshooting guide to describe the steps that can be taken to help the vehicle slow down more smoothly.
- The section “SI Units” in the vehicle guide has been updated to include the new functon PxVehicleWheelsSimData::setMinLongSlipDenominator.
However, in comparison to the major 1.x -> 2.x rewrite, round “3.0″ version number has not brought any significant changes to PhysX plug-ins – remaining 2.9.x digits were simply reserved for possible APEX 1.2.x branch updates.
And if you have missed latest additions to PhysX plug-ins, like introduction of the APEX Destruction authoring pipeline, you can check it here.
|PhysX Plug-in 3.0 for 3ds Max: Release Notes|
- New Features
- Using APEX 1.3.0, SDK 3.3.0 (SDK 2.8 is not supported any more).
- Deprecated UI for SDK 2x.
- Avoid generating multiple materials when they are with the same parameters.
- Destruction: Behavior Groups Management.
- Fix: Wrong volume calculation issue in Rigid body.
- Make exporter dialog from File -> Export also support .Apx and .Apb.
- Fix: TetherStiffness range. Set tetherStiffness to 1.0 – relax just as ClothingTool uses 1.0 – mTetherStretchiness.
- Fix: 2 UI updating issue introduced in CL 9122.
- Fix: Hammer icon.
- Some fixes for debug render in fast viewer.
- Fix: Apex render after rewind scene in ccViewer.
- Fix: Menu bug with Forces part.
- Fix: Kinematic animation in fast viewer for non-integer start frame.
- Sort bone list by name, improve bone indices in clothing asset.
- Fix: After painting on lod, lod node will fail to restore previous shading mode.
- Fix: LOD crash bug – switching lod during simulation crashes max.
- Fix: Wrong exporter file name like “C:\export\nc.PxProj.PXPROJ”.
- Fix: Fast viewer for precision sensitive Domino sample case.
- Fix: InitialSwing issue with SnailGames’ sample.
Final release of the new PhysX SDK 3.3 is now available for public, after two rounds of Beta Testing.
Update: PhysX SDK 3.3.1 is available
If you are not familiar with SDK 3.3 branch yet, we recommend you to refer Beta-1 and Beta-2 previews for features description, and for “The Evolution of the PhysX SDK” article for the performance improvements (and there are plenty) data.
As compared with PhysX 3.3 Beta-2, final release is including a set of bug-fixes among with minor improvements, and also more detailed documentation.
Full SDK 3.3.0 Release Notes can be viewed here.