Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release Rapier 0.20.0 #651

Merged
merged 1 commit into from
Jun 9, 2024
Merged

Release Rapier 0.20.0 #651

merged 1 commit into from
Jun 9, 2024

Conversation

sebcrozet
Copy link
Member

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

  • Add 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.
  • Add InverseKinematicsOption to customize some behaviors of the inverse-kinematics solver.
  • Add Multibody::body_jacobian to get the jacobian of a specific link.
  • Add Multibody::update_rigid_bodies to update rigid-bodies based on the multibody links poses.
  • Add Multibody::forward_kinematics_single_link to run forward-kinematics to compute the new pose and jacobian of a
    single link without mutating the multibody. This can take an optional displacement on generalized coordinates that are
    taken into account during transform propagation.
  • Implement Debug for ColliderBuilder.
  • Add Collider::converted_trimesh and MeshConverter for building a collider with a shape computed from a mesh’s
    index and vertex buffers. That computed shape can currently be a TriMesh, a Cuboid (covering the mesh’s AABB or
    OBB), a convex hull, or a convex decomposition.
  • Implement Default for RigidBodyBuilder. This is equivalent to RigidBodyBuilder::dynamic().
  • Implement Default for ColliderBuilder. This is equivalent to ColliderBuilder::ball(0.5).
  • Add RevoluteJoint::angle to compute the joint’s angle given the rotation of its attached rigid-bodies.

Modified

  • Renamed JointAxesMask::X/Y/Z to ::LIN_X/LIN_Y/LIN_Z; and renamed JointAxisMask::X/Y/Z to ::LinX/LinY/LynZ to
    make it clear it is not to be used as angular axes (the angular axis are JointAxesMask::ANG_X/ANG_Y/AngZ and
    JointAxisMask::AngX/AngY/AngZ).
  • The contact constraints regularization parameters have been changed from erp/damping_ratio to
    natural_frequency/damping_ratio. This helps define them in a timestep-length independent way. The new variables
    are named IntegrationParameters::contact_natural_frequency and IntegrationParameters::contact_damping_ratio.
  • The IntegrationParameters::normalized_max_penetration_correction has been replaced
    by ::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".
  • The Multibody::forward_kinematics method will no longer automatically update the poses of the RigidBody associated
    to each joint. Instead Multibody::update_rigid_bodies has to be called explicitly.
  • The Multibody::forward_kinematics method will automatically adjust the multibody’s degrees of freedom if the root
    rigid-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).
  • Remove an internal special-case for contact constraints on fast contacts. The doesn’t seem necessary with the substep
    solver.
  • Remove RigidBody::add_collider. This was an implementation detail previously needed by bevy_rapier. To attach
    a collider to a rigid-body, use ColliderSet::insert_with_parent or ColliderSet::set_parent.
  • Rename JointAxis::X/Y/Z to ::LinX/LinY/LinZ to avoid confusing it with ::AngX/AngY/AngZ.
  • Rename JointAxesMask::X/Y/Z to ::LIN_X/LIN_Y/LIN_Z to avoid confusing it with ::ANG_X/ANG_Y/ANG_Z.
  • The function RigidBody::add_collider is now private. It was only public because it was needed for some internal
    bevy_rapier plumbings, but it is no longer useful. Adding a collider must always go througthe ColliderSet.
  • CharacterController::solve_character_collision_impulses now takes multiple CharacterCollision as parameter:
    this change will allow further internal optimizations.
  • QueryPipeline::update now doesn't need the RigidBodySet as parameter.
  • Removed QueryPipelineMode.
  • QueryPipeline::update_with_mode was renamed to ::update_with_generator and now takes
    impl QbvhDataGenerator<ColliderHandle> as parameter see [QueryPipeline::updaters] module for more information.

@sebcrozet sebcrozet merged commit b3dc1c1 into master Jun 9, 2024
5 checks passed
@sebcrozet sebcrozet deleted the release-0.20.0 branch June 9, 2024 12:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant