bEPU Games Home

BEPUphysics Home

Forums

Overview

Media

Documentation

Downloads

Versions

 

 

      Versions
v0.7.0
Library

Additions:
-Collision detection special cases added for sphere-sphere, sphere-box, sphere-triangle, and box-box.
-Buffered states for momentum and velocity, along with improvements to the previously added buffered states, now provide thread safe entity access.
-Common engine access points now thread safe.
-Synchronization objects are now available to keep code from interfering with the engine's internal computations.
-Compound bodies now use an internal bounding volume hierarchy to accelerate collision detection, allowing for much more complicated concave bodies.
-Two different kinds of friction now available; dynamic and static.
-Event hooks for when entities are updated are now available.
-Slightly higher quality contact manifolds can once again be used (at a cost) by setting Space.simulationSettings.useOneShotManifolds to true.
Changes:
-Extensive optimizations to all performance critical sections of the engine have been made, boosting performance considerably.
-
The inertia tensor fields of entities have been replaced with properties Entity.localSpaceInertiaTensor and Entity.localSpaceInertiaTensorInverse.
-Entities with isDetector enabled will now still create controllers and contacts even if both entities in the collision are nondynamic.
-ConvexPolyhedron entity type and its associated helper types removed; ConvexHull used as its replacement.
-Various methods in Toolbox removed, mostly involving PolyhedronTriangles.
-PrimitiveToolbox removed.

Bug Fixes:
-Entity.makePhysical should no longer cause issues when the entity is colliding with static geometry.
-Toolbox.getConvexHull should no longer occasionally miss hull points.
-
Vehicle wheels no longer attempt to use intangible or detector entities as supports.
-Large compound bodies should no longer cause severe jerky performance.
-High angular velocities on irregular bodies should now work much better in all cases.
-Dynamic triangles should no longer throw exceptions during construction given odd dimensions.

Demos

Changes:
-"Lots o' Cubes" is now "Lots o' Spheres" and has many spheres in lieu of many cubes.
-"Tetrahedra" is now "Colosseum," a circular tower simulation.
-DisplayConvexPolyhedron removed.
-DisplayModel now uses entity CenterPosition.
Bug Fixes:
-Fixed a hotkey listing on the controls picture.


_____


v0.6.2
Library

Additions:
-Springs can now be used in either the traditional force = constant * compression mode or the velocity mode.
Changes:
-
Toolbox.findPenetrationDepth is now more robust.
-Springs, vehicle suspension, and the grab constraint all now use frame rate independent forces.
-Required forces for joint breakage should now be more consistent.
-A small arbitrary delay before sleeping has been removed, slightly increasing the rest speed.
-UprightConstraint is now frame rate independent and works on angular velocity instead of torque.

Bug Fixes:
-Raycasts against PersistentUniformGrid, UniformGrid, StaticGroup, and Terrain should no longer cause occasional momentary hangs.
-Toolbox.getDistanceBetweenObjects should no longer cause occasional freezes.
-CompoundBody subbodies now receive the default margin and allowed penetration if they are added to the space with 0 margin/allowed penetration.
-DistanceConstraint now properly breaks when force exceeds its limit in either direction.
-When entities are removed or constraints are added or removed, the associated simulation island is now activated, preventing floating resting objects.

Demos

Additions:
-
The CharacterController is now included, offering more robust character physics.
-Simulation #31, "Earthquake!" has been added.

v0.6.1
Library

Additions:
-A new entry in Space.simulationSettings, useInternalTimeStepping, now allows for smooth, consistent simulation given variable framerate.
-The CombinedUpdateable type is now available, providing the abilities of both the SolverUpdateable and Updateable.
Changes:
-Compound bodies now behave slightly better with continuous collision detection.
-Velocity clamping is now based on a time below the threshold rather than framecount, both of which can be changed in Space.simulationSettings.
-Updateables now have three separate update methods; one runs during force integration near the beginning of the frame (between broadphase and collision detection), another at the end of each update, and one at the very end of the frame as managed by the engine.  Usually the end-of-update and end-of-frame methods will run essentially side by side, but if internal timestepping is used the end-of-frame update only runs once per external Space.update call while the end-of-update method will run as many times as the engine internally steps.
-Contact caching heuristic improved.
-A few more fields and properties have been exposed in the Wheel class.
-Entity.rotationMatrix changed to Entity.orientationMatrix.
-centerPosition, centerOfMass, orientationQuaternion, and orientationMatrix are now all buffered states which are updated at the end of the frame from the internal values.  Additionally, these states include an interpolation component when useInternalTimeStepping is enabled.  The raw states can be accessed through internalCenterPosition, internalCenterOfMass, internalOrientationQuaternion, and internalOrientationMatrix.
-orientationMatrix is now a get/set property instead of the previously get-only rotationMatrix property.

Bug Fixes:
-PersistentUniformGrid.removeEntity will no longer occasionally leave out of date entries in the grid.
-Nested compound bodies and removing entities from compound bodies now works properly.

Demos

Bug Fixes:
-Wrapped bodies will no longer cause a crash in the display system when using CPU instancing.



v0.6.0
Library

Additions:
-New collision detection method, enabling faster and more robust detection and contact generation, especially during deep interpenetration.
-Improved continuous collision detection and multiple collision detection methods available in a space's SimulationSettings.
-Multiple collision events are now available in entities.
-New 'wrapped' body entity type available.  Forms an implicit convex hull around a set of entities.
-New DistanceConstraint, DistanceRangeConstraint, and Springs!
-StaticTriangleGroup now has additional raycasting methods that identify the indices of vertices composing triangles hit by the ray.
-Position correction velocity can now be capped.
-Triangles can now use their own normals in lieu of proper contact normals in a collision.  This can be enabled for smoother sliding on terrains and static triangle groups.
-Entities now have a new centerOfMass property that can be modified to change the rotational behavior of objects.
-Different friction/bounciness combination methods are now available in a space's SimulationSettings.
Changes:
-All simulation settings now reside in the SimulationSettings class.
-An entity's linearMomentum and angularMomentum are now properties and update velocities when changed.
-Joints can now have null passed in their constructor as a connection entity; the joint will connect to a special hidden entity at the anchor point.
-Compound-prefixed methods have been removed for the most part from the Entity class; getParent() replaces their functionality.
-Removed one-shot manifolds due to new detection methods; may return later.
-Fluid volumes now produce more consistent floating behavior.
-Damping for entities and fluids now properly takes the specified fraction of momentum away per second.
-Minkowski Sum and CompoundBody inertia tensor calculations sped up significantly.
-Slight runtime memory allocation reduction related to StaticTriangleGroups.
-Controller collision detection and solver methods are now public.

Bug Fixes:
-Joints now correctly break according to total impulse, not a per-iteration corrective impulse.
-Entity's angularVelocity property now properly returns angular velocity, not linear velocity.
-Terrain's single hit raycast method now works properly at the edge of the terrain.
-CompoundBodies with differently oriented subbodies should now maintain their correct orientations.
-Large bodies should no longer cause issues with terrain triangle generation.
-Contacts no longer keep their former accumulated impulses when pulled through the ResourcePool.
-MaximumSpeedConstraint should no longer cause periodic crashes.
-FluidVolume constructor now properly sets dimension sample count.
-Force.isActive now actually does something.

Demos

Additions:
-Added in a wrapped body class to the renderer and plopped a few down in the "Fancy Shapes" demo.
-New "Fish in a Barrel" demo, showcasing a simple usage of the new event system.
-
Added examples of the Spring, DistanceConstraint, and DistanceRangeConstraint to the "More Constraints" demo.
Changes:
-Changed static-connected joints in "More Constraints" to connect to null entities.
-Removed the double-dynamic point on line constraint in the "More Constraints" demo.
Bug Fixes:
-CompoundBodies should now be oriented correctly when subbodies are oriented differently during initialization.
-Removed Jenga's DynamicIterationCount of 200-300 iterations, reducing it to the default 15 and vastly improving performance.
-Specular highlights should no longer cause weird little ghost blobs.


_____

v0.5.2
Library

Additions:
-Added two new shape types, the ConvexHull and MinkowskiSum.
-Vehicles can now use ConvexCastWheels for smoother contact.
Changes:
-Entity tags are now just objects instead of Dictionaries.

Bug Fixes:
-Broadphase's isValidPair returned to previous ordering, providing extra speed with static geometry.
-
Hit locations returned by the swept areObjectsColliding method are now more accurate and no longer fails in certain situations.

Demos

Additions:
-New display objects for MinkowskiSums and ConvexHulls.
-Extra comments now cover some details in the simulation setups.

v0.5.1
Library

Additions:
-StaticTriangleGroups can now be built based on a full model, or individual meshes (with or without parent bone transforms).
-StaticTriangleGroups can now output a list of worldspace vertex positions.

Bug Fixes:
-Moving entities no longer have hash code issues.
-
The constructor for compound bodies which takes a list of entities should now function correctly.

Demos

Additions:
-Rendering in wireframe mode can now be toggled.
Changes:
-DisplayModel now correctly transforms individual meshes by parent bones.
Bug Fixes:
-
Highly triangulated objects are now properly textured in CPU instancing mode.


v0.5.0
Library

Additions:
-Optimized StaticTriangleGroup added.
-
Framework for space-updated types, solver-updated types, single body constraints, and force fields added.
-
PushField, Tornado, GravitationalField added.
-MaximumSpeedConstraint, RotationalAxisConstraint, UprightConstraint, and GrabConstraint added.
-Buoyancy support and associated entity data (density, volume) added.
-New deactivation system based on simulation islands added.
-
Efficient ray casts against the entire environment and parts now available.
-Vehicles based on ray casts are now available.
-Collisions between entities can now be filtered using the Entity.collisionFilter bitmask and the Entity.nonCollidableEntities list.
-RK4 angular integration is now available as an option (useRK4AngularIntegration in Space).
-Entities can now have a set of associated tags for storing information locally.
-New interfaces, RayCastableContainer and RayCastableContainerWithoutMargins, denote classes containing ray-intersectable contents which can be tested against.
-Preexisting quad formats for Terrain within the QuadFormats class now available.
Changes:
-Massive reduction in runtime memory allocation.
-Numerous field, class, and function name changes:
   PhysicallySimulated interface removed, entities can switch between nondynamic and dynamic without being recreated
   "Phys" and "Static" prefixes removed, entity types are simply "Box," "Cylinder," etc.
   Entity now contains all information necessary for dynamic and nondynamic objects.
   Revised access permission for and renamed rotationMatrix and orientationQuaternion.
   Exposed inertia tensor fields for modification.
   Previously "ineffective" changes of derived fields now have the expected effect (changing velocity of a dynamic object, setting the orientation quaternion, etc.).
   Toolbox.rayCast cleans up and replaces the old ray casting methods.
   Space.addEntity, Space.addConstraint and other add___ methods are now simply Space.add(object to add).
   Cleaned up Entity.compound____ methods and clarified their use in XML documentation.
-Cleaned up the PrimitiveToolbox, removing many redundant construction methods in favor of always using their identical constructor counterparts.
-Significant speedup in grid-based broadphases, UniformGrid and PersistentUniformGrid.
-Entity.force and Entity.torque now represent all changes of linear momentum and angular momentum during a frame.
-Collision response position correction impulse 'overestimates' less frequently.
-Adjusted swept collision detection (Toolbox.areObjectsColliding) to be more intuitive and use forward swept motion instead of a backwards velocity.
-XML documentation has been filled in for all public methods and fields.
Bug Fixes:
-GJK-based ray casts should no longer enter infinite loops.
-Split Impulse position correction method (useSplitImpulsePositionCorrection) now appropriately uses angular correction.
-Compound bodies under split impulse position correction no longer cause sporadic crashes.
-Certain edges of terrain no longer let objects fall through.

v0.5.0
Demos

Additions:
-
Source for Xbox360 demos now available.
-
Example vehicle input methods added.  Press V to jump in!
-Character controller demo based on dynamic entity and associated input methods added. Press C to walk around!
-"Grabber" added; right click to pull objects around.
-New display type, DisplayModel, for displaying loaded models.
-New "Buoyancy" demo.
-New "Gravitational Fields" demo.
-New "Static Triangle Group" demo.
-New demo showing off collision filtering, replacing the old "Double Ramp Slam" demo.
Changes:
-
Camera can now enter a "chase camera" mode which follows an entity, used by default in vehicles.
-Screen text minimized, controls and information put into a temporary menu overlay.
Bug Fixes:
-
Fixed a crash that could occur when removing display objects from the entity drawer.
-Fixed a problem which would cause mismatched graphics when removing display objects from the entity drawer.
 

      

v0.4.1
Demos

Changes:
-
Backface culling is now enabled.
-DisplayTriangles now use two triangles for representation.
-
Display object normals are now consistent.
Bug Fixes:
-
Vertex buffers are manually disposed of after starting a new simulation, preventing frequent OutOfVideoMemoryExceptions on some cards.

v0.4.0
Library

Additions:
-Continuous collision detection is now available.
-Spatial partitioning methods are now available; try out PersistentUniformGrid, its per-frame recalculated sibling UniformGrid, and the old BruteForce method.  Other custom broad phases can be derived from the BroadPhase class.
-
Terrain can now be created from heightmaps.  Supports runtime deformation.
-
Large numbers of static objects can now be added to StaticGroups which dynamically add and remove static entities from the space as needed, increasing performance greatly.
-New Capsule and Box primitives.
-Explosions can now be created and detonated.
-One-shot manifolds are now available for objects, increasing stability.
-Added an early out mechanism for collision detection, drastically increasing performance in stable simulations.
-Entities now can be rotated given a velocity by using the rotate(Vector3 w) function.
-Entities may now have unique margins and allowed penetration depths.  The defaults are stored within (Space).defaultMargin and (Space).defaultAllowedPenetration, which default to .04f and .025f respectively.
Changes:
-Collision detection optimized and tuned.
-linearVelocityClamping and angularVelocityClamping now both default to .01f.
-Center of masses for cones are now properly one fourth the way up from the base, rather than halfway up.
-Entities are no longer activated by neighboring entities if they share no controller.
-Coefficient of restitution within a collision is now calculated by using the maximum bounciness of either involved body.
-Disabled the formerly added bisection deep contact resolution method due to improvements in the related systems, marginally improving performance.
Bug Fixes:
-An errant multiplier causing clamping to fail at high framerates has been removed.
-A formerly required but now troublesome negation has been removed from Toolbox.getSegmentPlaneIntersection().

v0.4.0
Demos

Additions:
-All display systems formerly contained in the BEPUphysics.dll are now open source within the demos project.
-For SM3.0 enabled cards, shader instancing is now used for rendering.  For others, CPU instancing is used.
-"Broad Phase Stress Test" pushes the provided broad phase to its limits with thousands of objects.
-"Ball Pit:" shove boxes into a sphere-filled pit, realistically simulating the fate of many a child.
-"Terrain" showcases the new terrain system on a sine-based heightmap.
-"Bowl o' Cubes" showcases cubes, in a bowl.
-Rendering now supports textures, though default texture coordinates may be suboptimal for any detailed texture.
Changes:
-
Graphics for cones, spheres, cylinders, and capsules now use a much greater level of tessellation.  The number of faces per object can be adjusted easily within the source.
-
By default, demos now run with a non-fixed game timestep with a 60hz physics update rate.
-"Ramp Series" has been replaced.
-"Small Heightmap" has been replaced.
Bug Fixes:
-
Resolved an occasional flickering due to UI drawing.
 

      


v0.3.0
Library

Additions:
-BallSocketJoint and PointOnLineJoint added, with maximum force limits available.
-Performance increased substantially with impulse short circuiting method.
-
Dynamic iteration counts now allow for adaptive collision response quality depending on the current performance of the game.
To use it, call activateDynamicIterationCount(float desiredFPS, int minIterations, int maxIterations) or deactivateDynamicIterationCount() to turn it off.
-Artifacts caused by deep contact resolution reduced with the addition of a secondary bisection algorithm.
Changes:
-Default angular velocity clamping changed to .02.
-Clarified Toolbox.getSegmentPlaneIntersection parameters.
Bug Fixes:
-Entities are now forced awake when applyImpulse is called.
-Deep contact now forces objects awake, preventing occasional inappropriate freezing associated with objects being shoved deeply into the ground.
-move(Vector3 v) and moveTo(Vector3 v) now wake up the entity.
-Objects floating in space can now fall asleep appropriately.

v0.3.0
Demos

Additions:
-'Bridge' simulation added; 200 cubes in a chain form a long curve.
-'More Constraints' simulation added; shows breakable and non-breakable point on line joints, ball and socket joints, emulated sliders/prismatic joints, welds, and hinges.
Changes:
-Changed line rendering to use vertex coloring.
-'Simple Pendulum' is now 'Multipendulum.'
-Demo background color is now dark gray.
-Ground size changed on stacking, tetrahedra, and jenga demos.
-Masses changed on tetrahedra and lots o' cubes demos.
-Change made to simulation switching via keyboard input; now more easily supports more without dozens of special cases.
 

      

v0.2.0
Library

Additions:
-Deactivation/activation for objects added; should improve performance under normal circumstances considerably.
-
New ray casting functions added; Toolbox.findRayEntityHit and Toolbox.findFiniteRayEntityHit.
-Compound bodies can now be nested within other compound bodies.
-All physically simulated objects now have the applyImpulse method.
-Space.update may now be provided either a float representing the time between frames (regardless of performance) or the GameTime object.
-Forces may now be put on a timer for expiration.
Changes:
-Velocity clamping will no longer inappropriately freeze objects with momentary low velocity.  The default velocity clamping values have been increased accordingly, allowing objects to discontinue motion more robustly.
-Inconsistent parameter order for position in PrimitiveToolbox revised.  Position vector is now first parameter in all cases.
-Removed redundant PrimitiveToolbox functionality.
-The default value of angular damping on objects has been increased.
-Various low-level, externally unhelpful methods removed from public visibility.
-DisplayObject changed into an abstract class from an interface.
-Everything has become a little more colorful.
Bug Fixes:
-An error which would cause compound bodies to sometimes teleport has been resolved.
-Compound bodies will now function properly with joints.
-Graphics of Triangles and ConvexPolyhedrons should no longer become desynchronized from their collision mesh when rotated with the applyQuaternion method.

v0.2.0
Demos

Additions:
-New spaceship simulation, showcasing a practical object created using compound bodies with a force applied.
-Obligatory Jenga simulation added; see how many you can knock out with your sphere launcher before it falls!
-Deactivation stress test added; 420 objects fall in sequence and fall asleep.
Changes:
-
Premade bowling ball removed from bowling simulation.
-
Camera controls for ascent and descent changed from W/X to A/Z.
 

      

v0.1.0
Library:

Additions:

-New CompoundBody type, composed of multiple PhysicallySimulated types.
   * New properties compoundPosition, compoundLinearVelocity, and compoundAngularVelocity for referencing an object's compound body's properties if existent.  If no compound body is available, the current object's data is referenced.
Changes:
-velocityClamping split into linear and angular components with default values .006f for linearVelocityClamping and .0001f for angularVelocityClamping.
-Default Space.iteration count increased to 10.
Bug Fixes:
-An infinite loop when running without debugging with ConvexPolyhedrons should no longer occur.
-Degenerate GJK simplices will no longer trigger NaN exceptions.

v0.1.0
Demos:

Additions:
-
High-mass/velocity sphere launchable by clicking.
-
New display options for bounding boxes of objects, contacts, joints, and screen font.
-A camera class has been implemented for easier simulation observation.

      

v0.0.1

Initial release.

      

 

 

 

© 2008 Bepu Entertainment LLC.  All rights reserved.
Contact Us.

RSS Feed