Changelog: v2.7
v2.7.0 (2026-09-28)
Pin joints and closed loops
Much faster closed-loop solves: Minitaur step 16.7 µs → 8.0 µs, solver sweeps 31 → 2.1 per step; pin rows warm-started.
Exact pin/self-contact inverse mass (sparse J·M⁻¹·Jᵀ).
Correct pin Jacobians (own anchor per body, fixed world basis, floating-base rotation columns kept); robust 3×3 effective mass for planar/redundant pins; 30% per-step position correction.
Sleeping objects no longer apply stale constraints; pins stay closed under mouse-drag and wire forces.
New Cassie closed-loop URDF (
res/cassie/cassie_v4_raisim.urdf).
Granular and deformable
Faster granular contacts (contact-history index, incremental grid, cheaper pair rejection): 1,536-grain pool 0.71 s → 0.55 s.
Opt-in
GranularPoolSleepController(1.09–1.34× faster settled pools).Removing particles remaps/drops tendons attached to them (fixed out-of-bounds write).
Deformable particle pairs use a sparse grid.
Assets
.rassetdescriptor (raisim::Rasset::load/save/instantiate/addStaticColliders); the TCP viewer resolves.rassetvisuals.
Contacts
Fixed: primitives falling through rotated meshes, box–cylinder rim contacts, parallel capsules, tilted cylinder on plane, plane–mesh normal flip, NaN AABBs in SAP, heightmap depth 5–300× too deep, frictionless contacts, static–static problems, pinned deformable normals, swept CCD stopping mid-air.
Contact::getSolverPosition().
ArticulatedSystem
Fixed: sensors on movable links aborting,
Childconstructor options and root pose,getAngularMomentum,SparseJacobianresize, 0-DOFgetInverseMassMatrix, fixed-basesetBasePosCOM,getNonlinearitiesoverwriting frame accelerations, RNE constraint-force lever arm, spherical effort limit, prismaticref.setJointLimits/setJointVelocityLimitsvalidate sizes;getFrameAccelerationdocumented as specific force.
Loaders
MJCF:
<freejoint/>, multi-joint bodies, rotated joint frames, quaternion/xyaxes/zaxisvalidation, extrinsic uppercase Euler.XML:
collision_grouphang, templated robots survive save/reload, duplicate names on export.USD: collision meshes through symlinked directories.
RaisimServer
Fixed: send-buffer overflow on large scenes, SIGPIPE on viewer close, short polylines exiting, dangling
focusOn, tag 0 matching, sensor exchange dropping clients, invalid wires; mouse force stays on the same body point.License activation is thread-safe (one
Worldper thread).
rayrai
Breaking:
glm::vec4orientations are (w, x, y, z) everywhere.Glass:
Material::glass(), progressive path-traced geometry refraction, optional Vulkan ray-query backend;rayrai_glass,rayrai_nested_glass,rayrai_multiple_lightsexamples.Foliage: automatic mesh LOD, async preparation, GPU/Hi-Z occlusion, batching, depth prepasses, wind, BC7; dense-forest examples.
Lighting: baked irradiance and sky-visibility grids, soft directional shadows, deep parallax, linear HDR; range-culled local lights.
Multithreaded/multi-window rendering; lower frame overhead.
Fixes: batch upload cache, upscale blit, camera frame cache, additional-light shadows on ≤32 texture units, sampler/cascade unit clash, foliage submesh offsets, LOD on line/point meshes, point size, weather resets, lidar angle grid, depth linearization.
TCP viewer
Filmic and AgX tone mapping; auto-connect to a local server.
Fixes: crash on disconnect with frustum shown, use-after-free on removal, unique recording names, atomic settings, live resource-dir edits, stale replay geometry.
Build
Windows short build dirs and
raisim-imported-config.cmake; Linux shader-manifest check; Vulkan headers and SPIR-V are vendored; CMake verifies the source manifest without Python.