Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
v0.20.0 (9 June 2024)
This release introduces two new crates:
rapier3d-urdf
for loading URDF files into rapier3d. This will load the rigid-bodies,colliders, and joints.
rapier3d-stl
for loading an STL file as a collision shape.Added
Multibody::inverse_kinematics
,Multibody::inverse_kinematics_delta
,and
::inverse_kinematics_delta_with_jacobian
for running inverse kinematics on a multibody to align one its links pose to the given prescribed pose.
InverseKinematicsOption
to customize some behaviors of the inverse-kinematics solver.Multibody::body_jacobian
to get the jacobian of a specific link.Multibody::update_rigid_bodies
to update rigid-bodies based on the multibody links poses.Multibody::forward_kinematics_single_link
to run forward-kinematics to compute the new pose and jacobian of asingle link without mutating the multibody. This can take an optional displacement on generalized coordinates that are
taken into account during transform propagation.
Debug
forColliderBuilder
.Collider::converted_trimesh
andMeshConverter
for building a collider with a shape computed from a mesh’sindex and vertex buffers. That computed shape can currently be a
TriMesh
, aCuboid
(covering the mesh’s AABB orOBB), a convex hull, or a convex decomposition.
Default
forRigidBodyBuilder
. This is equivalent toRigidBodyBuilder::dynamic()
.Default
forColliderBuilder
. This is equivalent toColliderBuilder::ball(0.5)
.RevoluteJoint::angle
to compute the joint’s angle given the rotation of its attached rigid-bodies.Modified
JointAxesMask::X/Y/Z
to::LIN_X/LIN_Y/LIN_Z
; and renamedJointAxisMask::X/Y/Z
to::LinX/LinY/LynZ
tomake it clear it is not to be used as angular axes (the angular axis are
JointAxesMask::ANG_X/ANG_Y/AngZ
andJointAxisMask::AngX/AngY/AngZ
).erp/damping_ratio
tonatural_frequency/damping_ratio
. This helps define them in a timestep-length independent way. The new variablesare named
IntegrationParameters::contact_natural_frequency
andIntegrationParameters::contact_damping_ratio
.IntegrationParameters::normalized_max_penetration_correction
has been replacedby
::normalized_max_corrective_velocity
to make the parameter more timestep-length independent. It is now set to a non-infinite value to eliminate aggressive
"popping effects".
Multibody::forward_kinematics
method will no longer automatically update the poses of theRigidBody
associatedto each joint. Instead
Multibody::update_rigid_bodies
has to be called explicitly.Multibody::forward_kinematics
method will automatically adjust the multibody’s degrees of freedom if the rootrigid-body changed type (between dynamic and non-dynamic). It can also optionally apply the root’s rigid-body pose
instead of the root link’s pose (useful for example if you modified the root rigid-body pose externally and wanted
to propagate it to the multibody).
solver.
RigidBody::add_collider
. This was an implementation detail previously needed bybevy_rapier
. To attacha collider to a rigid-body, use
ColliderSet::insert_with_parent
orColliderSet::set_parent
.JointAxis::X/Y/Z
to::LinX/LinY/LinZ
to avoid confusing it with::AngX/AngY/AngZ
.JointAxesMask::X/Y/Z
to::LIN_X/LIN_Y/LIN_Z
to avoid confusing it with::ANG_X/ANG_Y/ANG_Z
.RigidBody::add_collider
is now private. It was only public because it was needed for some internalbevy_rapier
plumbings, but it is no longer useful. Adding a collider must always go througtheColliderSet
.CharacterController::solve_character_collision_impulses
now takes multipleCharacterCollision
as parameter:this change will allow further internal optimizations.
QueryPipeline::update
now doesn't need theRigidBodySet
as parameter.QueryPipelineMode
.QueryPipeline::update_with_mode
was renamed to::update_with_generator
and now takesimpl QbvhDataGenerator<ColliderHandle>
as parameter see [QueryPipeline::updaters
] module for more information.