@absolutejs/rapier3d 0.8.1 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -0
- package/absolutejs/README.md +32 -0
- package/dist/build-info.mjs +1 -1
- package/dist/provenance.json +4 -4
- package/dist/rapier.mjs +1 -1
- package/dist/types/dynamics/multibody_joint_set.d.ts +12 -0
- package/dist/types/rapier_wasm3d.d.ts +10 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -260,3 +260,35 @@ exact locked collision library alongside the native WASM hash. They are lightwei
|
|
|
260
260
|
serialized strings and require no WASM initialization. Packaging rejects ambiguous
|
|
261
261
|
multiple Parry source entries. Release qualification evidence and retained experiment
|
|
262
262
|
results are recorded in `absolutejs/research/simplex-gyro/`.
|
|
263
|
+
|
|
264
|
+
## Articulation damping controls
|
|
265
|
+
|
|
266
|
+
`world.multibodyJoints.generalizedDamping(jointHandle)` returns an owned
|
|
267
|
+
`Float32Array` for the entire articulation containing that joint, including its
|
|
268
|
+
floating root. A removed joint returns `undefined`. These coefficients are
|
|
269
|
+
raw native coefficients, separate from rigid-body damping: native free angular generalized coordinates
|
|
270
|
+
default to `0.1` even when `RigidBody.setAngularDamping(0)` is used.
|
|
271
|
+
They are not dimensionless decay rates: angular coefficients act against inertia
|
|
272
|
+
in native world units. The same numeric coefficient need not produce the same
|
|
273
|
+
decay after changing the world length scale.
|
|
274
|
+
|
|
275
|
+
`setGeneralizedDamping(jointHandle, values)` returns `true` on success. It rejects
|
|
276
|
+
wrong lengths, negative/nonfinite values, native float overflow and removed
|
|
277
|
+
handles without mutation. Coordinate order is the native generalized order;
|
|
278
|
+
read the vector again after adding, removing or changing joints. The setter does
|
|
279
|
+
not wake sleeping bodies; wake the affected bodies explicitly. Neither method
|
|
280
|
+
changes the native default policy for newly created coordinates.
|
|
281
|
+
|
|
282
|
+
For an explicitly undamped diagnostic, read the vector, replace it with a zero
|
|
283
|
+
vector of the same length, and verify the readback. This is a diagnostic control,
|
|
284
|
+
not a recommendation to remove damping from every game mechanism.
|
|
285
|
+
|
|
286
|
+
## Coupled articulation impacts (0.10)
|
|
287
|
+
|
|
288
|
+
Coupled contacts can disturb each other: a single late restitution sweep can leave order-dependent velocities when two bodies strike one light articulation. Version 0.10 repeats the existing normal/restitution solve to a projected velocity residual, with a bounded iteration budget. In these adaptive phases, a local double-precision normal-impulse accumulator retains corrections that would otherwise round away. Native velocities, response matrices, warmstart storage, persistent snapshots, and the JavaScript API retain their existing formats. This is not a double-precision engine or an energy clamp.
|
|
289
|
+
|
|
290
|
+
Adaptive compression applies only to one-group, single-worker, generic-only frictionless contacts, with no soft/FEM bodies or independent joint rows. The configured PGS count remains a minimum; the cap is the larger of that count and 256. Adaptive restitution applies only to one-group, single-worker, generic-only contacts and is capped at 256 sweeps. Both stop at a projected velocity residual of `1e-6 * lengthUnit`. Ordinary and mixed/parallel contact paths retain their previous iteration policy. Reaching the cap is not a guarantee of convergence for arbitrary mass ratios or scenes.
|
|
291
|
+
|
|
292
|
+
The added regression cases cover opposing impacts, creation-order reversal, restitution 0/0.5/1, unequal masses, timestep and substep changes. Existing integration, contact preparation, damping defaults and geometry are unchanged; known general articulation integration limitations remain.
|
|
293
|
+
|
|
294
|
+
Accuracy has a CPU cost. A bounded CPU-only paired benchmark of 1/8/32 disconnected heavy-light-heavy impacts measured candidate median step times of 0.62/2.48/7.87 ms, versus 0.41/0.84/1.72 ms for 0.9.0, whose velocity error in that fixture was about 6.94 m/s. The candidate error was below 0.000002 m/s. These are host-specific step measurements excluding rendering and snapshot restoration, not a frame-rate guarantee. Production scenes still need physics budgets and profiling. Detailed qualification and limitations are in `absolutejs/research/contact-convergence/`.
|
package/absolutejs/README.md
CHANGED
|
@@ -260,3 +260,35 @@ exact locked collision library alongside the native WASM hash. They are lightwei
|
|
|
260
260
|
serialized strings and require no WASM initialization. Packaging rejects ambiguous
|
|
261
261
|
multiple Parry source entries. Release qualification evidence and retained experiment
|
|
262
262
|
results are recorded in `absolutejs/research/simplex-gyro/`.
|
|
263
|
+
|
|
264
|
+
## Articulation damping controls
|
|
265
|
+
|
|
266
|
+
`world.multibodyJoints.generalizedDamping(jointHandle)` returns an owned
|
|
267
|
+
`Float32Array` for the entire articulation containing that joint, including its
|
|
268
|
+
floating root. A removed joint returns `undefined`. These coefficients are
|
|
269
|
+
raw native coefficients, separate from rigid-body damping: native free angular generalized coordinates
|
|
270
|
+
default to `0.1` even when `RigidBody.setAngularDamping(0)` is used.
|
|
271
|
+
They are not dimensionless decay rates: angular coefficients act against inertia
|
|
272
|
+
in native world units. The same numeric coefficient need not produce the same
|
|
273
|
+
decay after changing the world length scale.
|
|
274
|
+
|
|
275
|
+
`setGeneralizedDamping(jointHandle, values)` returns `true` on success. It rejects
|
|
276
|
+
wrong lengths, negative/nonfinite values, native float overflow and removed
|
|
277
|
+
handles without mutation. Coordinate order is the native generalized order;
|
|
278
|
+
read the vector again after adding, removing or changing joints. The setter does
|
|
279
|
+
not wake sleeping bodies; wake the affected bodies explicitly. Neither method
|
|
280
|
+
changes the native default policy for newly created coordinates.
|
|
281
|
+
|
|
282
|
+
For an explicitly undamped diagnostic, read the vector, replace it with a zero
|
|
283
|
+
vector of the same length, and verify the readback. This is a diagnostic control,
|
|
284
|
+
not a recommendation to remove damping from every game mechanism.
|
|
285
|
+
|
|
286
|
+
## Coupled articulation impacts (0.10)
|
|
287
|
+
|
|
288
|
+
Coupled contacts can disturb each other: a single late restitution sweep can leave order-dependent velocities when two bodies strike one light articulation. Version 0.10 repeats the existing normal/restitution solve to a projected velocity residual, with a bounded iteration budget. In these adaptive phases, a local double-precision normal-impulse accumulator retains corrections that would otherwise round away. Native velocities, response matrices, warmstart storage, persistent snapshots, and the JavaScript API retain their existing formats. This is not a double-precision engine or an energy clamp.
|
|
289
|
+
|
|
290
|
+
Adaptive compression applies only to one-group, single-worker, generic-only frictionless contacts, with no soft/FEM bodies or independent joint rows. The configured PGS count remains a minimum; the cap is the larger of that count and 256. Adaptive restitution applies only to one-group, single-worker, generic-only contacts and is capped at 256 sweeps. Both stop at a projected velocity residual of `1e-6 * lengthUnit`. Ordinary and mixed/parallel contact paths retain their previous iteration policy. Reaching the cap is not a guarantee of convergence for arbitrary mass ratios or scenes.
|
|
291
|
+
|
|
292
|
+
The added regression cases cover opposing impacts, creation-order reversal, restitution 0/0.5/1, unequal masses, timestep and substep changes. Existing integration, contact preparation, damping defaults and geometry are unchanged; known general articulation integration limitations remain.
|
|
293
|
+
|
|
294
|
+
Accuracy has a CPU cost. A bounded CPU-only paired benchmark of 1/8/32 disconnected heavy-light-heavy impacts measured candidate median step times of 0.62/2.48/7.87 ms, versus 0.41/0.84/1.72 ms for 0.9.0, whose velocity error in that fixture was about 6.94 m/s. The candidate error was below 0.000002 m/s. These are host-specific step measurements excluding rendering and snapshot restoration, not a frame-rate guarantee. Production scenes still need physics budgets and profiling. Detailed qualification and limitations are in `absolutejs/research/contact-convergence/`.
|
package/dist/build-info.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=Object.freeze({schemaVersion:1,scope:"package",packageName:"@absolutejs/rapier3d",packageVersion:"0.
|
|
1
|
+
var e=Object.freeze({schemaVersion:1,scope:"package",packageName:"@absolutejs/rapier3d",packageVersion:"0.10.0",qualifiedKernelRelease:"0.10.0",upstream:"b716d375efc0201003f0cd9ef7168eee0b62c177",engine:"0.36.0",collisionLibraryVersion:"0.31.1",collisionSource:"git+https://github.com/absolutejs/parry?rev=dbd99a8dfce020da3698056471262435d56d3f69#dbd99a8dfce020da3698056471262435d56d3f69",bindings:"0.21.0",bindgen:"0.2.129",wasmSha256:"05237bc7c173763fc740d80f6440130e548743c02083542370f17bb3061bf1e3",wasmBytes:3297267,solverChanges:!0});export{e as buildInfo};
|
package/dist/provenance.json
CHANGED
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"scope": "package",
|
|
4
4
|
"packageName": "@absolutejs/rapier3d",
|
|
5
|
-
"packageVersion": "0.
|
|
6
|
-
"qualifiedKernelRelease": "0.
|
|
5
|
+
"packageVersion": "0.10.0",
|
|
6
|
+
"qualifiedKernelRelease": "0.10.0",
|
|
7
7
|
"upstream": "b716d375efc0201003f0cd9ef7168eee0b62c177",
|
|
8
8
|
"engine": "0.36.0",
|
|
9
9
|
"collisionLibraryVersion": "0.31.1",
|
|
10
10
|
"collisionSource": "git+https://github.com/absolutejs/parry?rev=dbd99a8dfce020da3698056471262435d56d3f69#dbd99a8dfce020da3698056471262435d56d3f69",
|
|
11
11
|
"bindings": "0.21.0",
|
|
12
12
|
"bindgen": "0.2.129",
|
|
13
|
-
"wasmSha256": "
|
|
14
|
-
"wasmBytes":
|
|
13
|
+
"wasmSha256": "05237bc7c173763fc740d80f6440130e548743c02083542370f17bb3061bf1e3",
|
|
14
|
+
"wasmBytes": 3297267,
|
|
15
15
|
"solverChanges": true
|
|
16
16
|
}
|