Changelog: v2.4.5
RaiSim v2.4.5 focuses on physics correctness in degenerate/contact-rich scenes, solver and articulated-system hot paths, path handling, and CMake package configuration. This is a historical entry; see Changelog: v2.5.8 for the current package notes. The engine implementation remains closed source.
Contact and collision correctness
- Multi-box-prune broadphase now pairs overflow proxies correctly regardless of proxy order, while preserving full-width body ids, collision groups, and masks.
- Worlds containing deformables maintain a separate rigid-only detector view, preventing deformable entries from corrupting rigid collision pairing.
- Unsupported heightmap rotation is checked from the authoritative body rotation matrix in every build configuration. Heightmaps remain translation-only collision geometry; use a mesh for a rotated surface.
- MPR portal discovery/refinement is iteration-bounded so degenerate or deeply interpenetrating convex pairs cannot spin forever.
- Degenerate sphere-cylinder contact now produces a deterministic finite normal, and rays starting inside a sphere return the forward exit hit.
- Capsule inertia, deformable substep velocity recovery, heightmap update-size validation, and several articulated/contact edge cases were corrected.
See Collision Detection and Colliders, Contact and Collision, and Height Map for the current behavior and configuration surface.
Solver and articulated-system performance
The contact solver now reuses cached dense/sparse velocity accessors and maps fixed-size articulated contact-response blocks in setup hot paths. Articulated dynamics and matrix/vector operations also avoid repeated temporary work. These changes preserve the public API; measure them with the workloads and single-thread benchmark procedure in Build, Test, and Benchmark and Performance.
MJCF and path behavior
- MJCF
geomelements without atypeattribute now follow the MJCF default and load as spheres. At least onesizevalue is required. raisim::Pathnow normalizes.and..component-wise, collapses repeated separators, preserves POSIX roots, Windows drive roots, and UNC shares, and no longer mistakes..inside an ordinary filename for a parent-directory reference.
See World for the supported MJCF subset.
CMake package configuration
The installed RaiSim target requires C++20. Debug and Release installations can coexist in one prefix: imported-target configuration mapping selects an available matching binary and propagates RSDEBUG with that binary. A Debug consumer of a Release-only package therefore uses Release semantics, while a merged package selects its Debug library for Debug consumers. See Installation and Build, Test, and Benchmark.
Internal Engine 2 development
Engine 2 project-loading work was completed internally during this development cycle, but Engine 2 is not shipped in the public raisim2Lib distribution. There are no public Engine 2 executables, headers, libraries, or build targets in v2.4.5. Public users should use RaiSim XML, MJCF, OpenUSD, or the public world-construction APIs; reinforcement-learning workloads belong in RaisimGymTorch. See RaiSim Engine 2 and .rscene File for the availability boundary.