@absolutejs/rapier3d 0.12.0 → 0.14.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 +61 -3
- package/absolutejs/README.md +61 -3
- package/dist/build-info.mjs +1 -1
- package/dist/provenance.json +5 -5
- package/dist/rapier.mjs +1 -1
- package/dist/types/pipeline/step_profile.d.ts +2 -1
- package/dist/types/pipeline/world.d.ts +20 -0
- package/dist/types/rapier_wasm3d.d.ts +2 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -232,7 +232,7 @@ before `init()`. It reports the packaged kernel; supplying custom bytes to
|
|
|
232
232
|
|
|
233
233
|
## Contact witnesses and force-free rotation (0.8)
|
|
234
234
|
|
|
235
|
-
|
|
235
|
+
Version 0.8 introduced the `absolutejs/parry` collision correction at revision
|
|
236
236
|
`dbd99a8dfce020da3698056471262435d56d3f69`, based on upstream 0.31.1.
|
|
237
237
|
Tetrahedron-to-face reduction now preserves support points needed by GJK's
|
|
238
238
|
previous-simplex calculation. Previously, an overwritten point could be combined
|
|
@@ -349,5 +349,63 @@ Reports remain usable after freeing the borrowed world. Always attach the actual
|
|
|
349
349
|
build identity when storing or sending a report through your existing diagnostics
|
|
350
350
|
system. Sampling has a cost: use explicit application policy and measure it.
|
|
351
351
|
|
|
352
|
-
|
|
353
|
-
solver thresholds, contact policies or physical
|
|
352
|
+
The sampler was introduced in 0.12.0 without changing the 0.11.0 native kernel.
|
|
353
|
+
Sampling itself does not change solver thresholds, contact policies or physical
|
|
354
|
+
state serialization. Later native revisions remain identified by buildInfo.
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
## Compound inertia reconstruction (0.13)
|
|
358
|
+
|
|
359
|
+
The collision dependency now pins `absolutejs/parry` revision
|
|
360
|
+
`c566aabd77be8ac7a427c2b704860c47e34657b9`. Mass-property aggregation uses a
|
|
361
|
+
scale-normalized, bounded Jacobi decomposition with double-precision workspace.
|
|
362
|
+
It corrects principal frames for small tensors and repeated or nearly repeated
|
|
363
|
+
moments. Public f32 types, mass, COM and nonnegative principal-moment policy are
|
|
364
|
+
unchanged; compound mass properties and resulting motion can change when the
|
|
365
|
+
previous decomposition was inaccurate. No JavaScript API is added.
|
|
366
|
+
|
|
367
|
+
The focused native suite covers 2,688 tensor/aggregation cases in f32 and f64.
|
|
368
|
+
The package tests also reconstruct two- and three-collider physical tensors
|
|
369
|
+
across scale, orientation and insertion order. The small-object baseline could
|
|
370
|
+
exceed 50% relative tensor error; this is a reproduced fixture, not an estimate
|
|
371
|
+
of error across all objects. Angular integration and articulated COM-transport
|
|
372
|
+
limitations are separate and remain under investigation.
|
|
373
|
+
|
|
374
|
+
This calculation runs when mass properties are recomputed. It is not a render
|
|
375
|
+
optimization: recompute after geometry/mass changes, not unnecessarily every
|
|
376
|
+
frame. Qualification records, measured cost and limits are retained under
|
|
377
|
+
`absolutejs/research/inertia-reconstruction/`.
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
## Matched isolated-body rotation and observations (0.14)
|
|
381
|
+
|
|
382
|
+
An isolated, awake dynamic body with gyroscopic forces enabled now uses a
|
|
383
|
+
bounded implicit midpoint angular update with its matching Cayley attitude.
|
|
384
|
+
This substantially reduces free-flight angular energy and world-momentum drift.
|
|
385
|
+
The path requires physical stored inertia, unlocked angular axes, zero external
|
|
386
|
+
torque and angular damping, and ordinary rotation limits. Contact-connected,
|
|
387
|
+
jointed, articulated, soft/FEM and fast-rotation bodies retain their existing
|
|
388
|
+
solver path. This does not correct coupled angular/contact integration or the
|
|
389
|
+
remaining articulated COM-transport defect.
|
|
390
|
+
|
|
391
|
+
A rejected update does not partially mutate state. Nonphysical stored moments,
|
|
392
|
+
rotation limits and failed/invalid solves are observed explicitly; the existing
|
|
393
|
+
correction/cap ordering applies for the rest of that island solve. The next solve
|
|
394
|
+
re-evaluates eligibility. No energy or momentum clamp is introduced.
|
|
395
|
+
|
|
396
|
+
With `world.profilerEnabled = true`, `world.freeRotationStats()` returns owned
|
|
397
|
+
counts (`acceptedSteps`, `nonphysicalInertiaRejections`, `rotationLimitRejections`,
|
|
398
|
+
`invalidOrFailedSolves`), maximum Newton updates, and maximum accepted residual
|
|
399
|
+
in radians/second. It returns null before a completed profiled step, after
|
|
400
|
+
restoration, while profiling is disabled or after toggling it. Counts include
|
|
401
|
+
solver substeps and CCD passes; zero acceptance does not establish conservation.
|
|
402
|
+
The bounded `createPhysicsStepProfiler` includes these observations as each
|
|
403
|
+
sample's `native.freeRotation`, with the same sample and ownership limits.
|
|
404
|
+
|
|
405
|
+
The 96-case native matrix reduces worst relative angular-energy drift from
|
|
406
|
+
3.2% to 0.00026%; 542 excluded/rejected control states match the previous release
|
|
407
|
+
exactly. On a synthetic 32-body CPU/WASM workload the median paired additional
|
|
408
|
+
cost is approximately 0.7 microseconds per body/substep (2.9x batch ratio).
|
|
409
|
+
These are fixture measurements, not game-wide guarantees or hardware FPS.
|
|
410
|
+
Admission, numerical/storage limits, actual-engine tests, failed assumptions and
|
|
411
|
+
cost records are preserved in `absolutejs/research/rigid-midpoint-engine`.
|
package/absolutejs/README.md
CHANGED
|
@@ -232,7 +232,7 @@ before `init()`. It reports the packaged kernel; supplying custom bytes to
|
|
|
232
232
|
|
|
233
233
|
## Contact witnesses and force-free rotation (0.8)
|
|
234
234
|
|
|
235
|
-
|
|
235
|
+
Version 0.8 introduced the `absolutejs/parry` collision correction at revision
|
|
236
236
|
`dbd99a8dfce020da3698056471262435d56d3f69`, based on upstream 0.31.1.
|
|
237
237
|
Tetrahedron-to-face reduction now preserves support points needed by GJK's
|
|
238
238
|
previous-simplex calculation. Previously, an overwritten point could be combined
|
|
@@ -349,5 +349,63 @@ Reports remain usable after freeing the borrowed world. Always attach the actual
|
|
|
349
349
|
build identity when storing or sending a report through your existing diagnostics
|
|
350
350
|
system. Sampling has a cost: use explicit application policy and measure it.
|
|
351
351
|
|
|
352
|
-
|
|
353
|
-
solver thresholds, contact policies or physical
|
|
352
|
+
The sampler was introduced in 0.12.0 without changing the 0.11.0 native kernel.
|
|
353
|
+
Sampling itself does not change solver thresholds, contact policies or physical
|
|
354
|
+
state serialization. Later native revisions remain identified by buildInfo.
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
## Compound inertia reconstruction (0.13)
|
|
358
|
+
|
|
359
|
+
The collision dependency now pins `absolutejs/parry` revision
|
|
360
|
+
`c566aabd77be8ac7a427c2b704860c47e34657b9`. Mass-property aggregation uses a
|
|
361
|
+
scale-normalized, bounded Jacobi decomposition with double-precision workspace.
|
|
362
|
+
It corrects principal frames for small tensors and repeated or nearly repeated
|
|
363
|
+
moments. Public f32 types, mass, COM and nonnegative principal-moment policy are
|
|
364
|
+
unchanged; compound mass properties and resulting motion can change when the
|
|
365
|
+
previous decomposition was inaccurate. No JavaScript API is added.
|
|
366
|
+
|
|
367
|
+
The focused native suite covers 2,688 tensor/aggregation cases in f32 and f64.
|
|
368
|
+
The package tests also reconstruct two- and three-collider physical tensors
|
|
369
|
+
across scale, orientation and insertion order. The small-object baseline could
|
|
370
|
+
exceed 50% relative tensor error; this is a reproduced fixture, not an estimate
|
|
371
|
+
of error across all objects. Angular integration and articulated COM-transport
|
|
372
|
+
limitations are separate and remain under investigation.
|
|
373
|
+
|
|
374
|
+
This calculation runs when mass properties are recomputed. It is not a render
|
|
375
|
+
optimization: recompute after geometry/mass changes, not unnecessarily every
|
|
376
|
+
frame. Qualification records, measured cost and limits are retained under
|
|
377
|
+
`absolutejs/research/inertia-reconstruction/`.
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
## Matched isolated-body rotation and observations (0.14)
|
|
381
|
+
|
|
382
|
+
An isolated, awake dynamic body with gyroscopic forces enabled now uses a
|
|
383
|
+
bounded implicit midpoint angular update with its matching Cayley attitude.
|
|
384
|
+
This substantially reduces free-flight angular energy and world-momentum drift.
|
|
385
|
+
The path requires physical stored inertia, unlocked angular axes, zero external
|
|
386
|
+
torque and angular damping, and ordinary rotation limits. Contact-connected,
|
|
387
|
+
jointed, articulated, soft/FEM and fast-rotation bodies retain their existing
|
|
388
|
+
solver path. This does not correct coupled angular/contact integration or the
|
|
389
|
+
remaining articulated COM-transport defect.
|
|
390
|
+
|
|
391
|
+
A rejected update does not partially mutate state. Nonphysical stored moments,
|
|
392
|
+
rotation limits and failed/invalid solves are observed explicitly; the existing
|
|
393
|
+
correction/cap ordering applies for the rest of that island solve. The next solve
|
|
394
|
+
re-evaluates eligibility. No energy or momentum clamp is introduced.
|
|
395
|
+
|
|
396
|
+
With `world.profilerEnabled = true`, `world.freeRotationStats()` returns owned
|
|
397
|
+
counts (`acceptedSteps`, `nonphysicalInertiaRejections`, `rotationLimitRejections`,
|
|
398
|
+
`invalidOrFailedSolves`), maximum Newton updates, and maximum accepted residual
|
|
399
|
+
in radians/second. It returns null before a completed profiled step, after
|
|
400
|
+
restoration, while profiling is disabled or after toggling it. Counts include
|
|
401
|
+
solver substeps and CCD passes; zero acceptance does not establish conservation.
|
|
402
|
+
The bounded `createPhysicsStepProfiler` includes these observations as each
|
|
403
|
+
sample's `native.freeRotation`, with the same sample and ownership limits.
|
|
404
|
+
|
|
405
|
+
The 96-case native matrix reduces worst relative angular-energy drift from
|
|
406
|
+
3.2% to 0.00026%; 542 excluded/rejected control states match the previous release
|
|
407
|
+
exactly. On a synthetic 32-body CPU/WASM workload the median paired additional
|
|
408
|
+
cost is approximately 0.7 microseconds per body/substep (2.9x batch ratio).
|
|
409
|
+
These are fixture measurements, not game-wide guarantees or hardware FPS.
|
|
410
|
+
Admission, numerical/storage limits, actual-engine tests, failed assumptions and
|
|
411
|
+
cost records are preserved in `absolutejs/research/rigid-midpoint-engine`.
|
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.14.0",qualifiedKernelRelease:"0.14.0",upstream:"b716d375efc0201003f0cd9ef7168eee0b62c177",engine:"0.36.0",collisionLibraryVersion:"0.31.1",collisionSource:"git+https://github.com/absolutejs/parry?rev=c566aabd77be8ac7a427c2b704860c47e34657b9#c566aabd77be8ac7a427c2b704860c47e34657b9",bindings:"0.21.0",bindgen:"0.2.129",wasmSha256:"0923de1a2b4be66faf2a17e602c566b227457cd511ef4ea6bab799c9d227af6c",wasmBytes:3307201,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.14.0",
|
|
6
|
+
"qualifiedKernelRelease": "0.14.0",
|
|
7
7
|
"upstream": "b716d375efc0201003f0cd9ef7168eee0b62c177",
|
|
8
8
|
"engine": "0.36.0",
|
|
9
9
|
"collisionLibraryVersion": "0.31.1",
|
|
10
|
-
"collisionSource": "git+https://github.com/absolutejs/parry?rev=
|
|
10
|
+
"collisionSource": "git+https://github.com/absolutejs/parry?rev=c566aabd77be8ac7a427c2b704860c47e34657b9#c566aabd77be8ac7a427c2b704860c47e34657b9",
|
|
11
11
|
"bindings": "0.21.0",
|
|
12
12
|
"bindgen": "0.2.129",
|
|
13
|
-
"wasmSha256": "
|
|
14
|
-
"wasmBytes":
|
|
13
|
+
"wasmSha256": "0923de1a2b4be66faf2a17e602c566b227457cd511ef4ea6bab799c9d227af6c",
|
|
14
|
+
"wasmBytes": 3307201,
|
|
15
15
|
"solverChanges": true
|
|
16
16
|
}
|