@absolutejs/rapier3d 0.16.3 → 0.18.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 +72 -1
- package/absolutejs/README.md +72 -1
- package/dist/build-info.mjs +1 -1
- package/dist/provenance.json +5 -5
- package/dist/rapier.mjs +1 -1
- package/dist/types/dynamics/integration_parameters.d.ts +15 -0
- package/dist/types/pipeline/step_profile.d.ts +9 -0
- package/dist/types/rapier_wasm3d.d.ts +12 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -59,7 +59,7 @@ reconstructing the entire angular velocity through the inertia frame.
|
|
|
59
59
|
|
|
60
60
|
Use Bun 1.4.4+absolute.1, Rust 1.94.0 with `wasm32-unknown-unknown`, and Python 3.12.
|
|
61
61
|
Run `bun install --frozen-lockfile`, then `bash absolutejs/scripts/build-native.sh`.
|
|
62
|
-
Cargo's exact lockfile is versioned, compilation
|
|
62
|
+
Cargo's exact lockfile is versioned, compilation defaults to one job (override with `CARGO_BUILD_JOBS`), and the
|
|
63
63
|
wasm-bindgen 0.2.129 CLI archive is checksum verified before extraction. Caches and
|
|
64
64
|
generated build output are reproducible; modified source and selected test
|
|
65
65
|
receipts are committed. `dist/provenance.json` records the resulting WASM hash.
|
|
@@ -566,3 +566,74 @@ observations are not hardware FPS or a universal speedup claim. See
|
|
|
566
566
|
Independent builds match all 49 distribution files and the packaged native
|
|
567
567
|
payload byte-for-byte. Raw executable/data sections match; only unshipped
|
|
568
568
|
wasm-bindgen metadata differs.
|
|
569
|
+
|
|
570
|
+
## Rotational intervals and cached contact directions (0.17.0)
|
|
571
|
+
|
|
572
|
+
Orientation-changing 3D direct sweeps now use separating-plane motion bounds
|
|
573
|
+
to detect the captured case where a rotating bar crosses a surface between
|
|
574
|
+
two clear endpoint poses. Translation-only sweeps retain the existing path.
|
|
575
|
+
The distance-query budget remains 25, with explicit failure if safe progress
|
|
576
|
+
cannot be established. Composite traversal is a separate limitation; this is
|
|
577
|
+
not a universal continuous-separation guarantee.
|
|
578
|
+
|
|
579
|
+
Stalled convex queries preserve the direction associated with the support
|
|
580
|
+
bound used for classification. This fixes a captured tree/triangle query that
|
|
581
|
+
reported about 202 mm penetration while independent plane projection bounded
|
|
582
|
+
required separation to about 0.013 mm. Both corrections are qualified together:
|
|
583
|
+
the rotational change alone exposed this cached-direction error in the full
|
|
584
|
+
oak excavation test. The combined engine passes it and all 844 game tests.
|
|
585
|
+
|
|
586
|
+
Package API, snapshot layout, contact tolerances and solver budgets are unchanged.
|
|
587
|
+
The raw variant-5/960 terrain clearance rejection remains identically present;
|
|
588
|
+
physical outcomes elsewhere may change. Bounded CPU control scenes retain
|
|
589
|
+
identical physical results and comparable timings. The targeted tilted-contact
|
|
590
|
+
fixture costs about 51% more after extended warmup, about 0.037 ms extra per
|
|
591
|
+
restored step in that fixture. This is a measured correctness tradeoff, not a
|
|
592
|
+
browser FPS or general performance guarantee.
|
|
593
|
+
|
|
594
|
+
Qualification includes 432 direct-sweep cases, captured old/new contact
|
|
595
|
+
regressions, 237 package tests, GPU-disabled browser checks, native one/two-worker
|
|
596
|
+
controls, no-std, 24 tree/rate comparisons, four generated/excavated requests,
|
|
597
|
+
18 flat-tree cases and an independent build matching all shipped files.
|
|
598
|
+
Evidence: `absolutejs/research/rotational-contact/`.
|
|
599
|
+
|
|
600
|
+
### Numerical contact softness
|
|
601
|
+
|
|
602
|
+
`world.integrationParameters.contactSoftness` and `staticContactSoftness` read
|
|
603
|
+
or atomically replace `{ naturalFrequency, dampingRatio }`. The first controls
|
|
604
|
+
dynamic contacts (native default 30 Hz / 10); the second controls contacts with
|
|
605
|
+
a fixed body (native default 60 Hz / 10). Change them between steps. Reads
|
|
606
|
+
return owned copies; values must be representable finite native coefficients,
|
|
607
|
+
with positive frequency and nonnegative damping. Both values are validated
|
|
608
|
+
before either changes. Snapshots preserve both settings. Bounded step profiles
|
|
609
|
+
record each distinct settings pair once in a bounded `contactSettings` table;
|
|
610
|
+
samples carry `native.contactSettingsIndex`. Reports deeply own that table,
|
|
611
|
+
including after the world is freed. This avoids repeating configuration in
|
|
612
|
+
every sample and keeps telemetry within existing event budgets.
|
|
613
|
+
|
|
614
|
+
These are numerical regularization parameters, not measured material elasticity.
|
|
615
|
+
Higher frequency can reduce transient penetration but may produce jitter or
|
|
616
|
+
prevent sleeping. Qualify motion, contact, sleeping and cost across actual
|
|
617
|
+
scenarios before changing a product's policy. Defaults are unchanged.
|
|
618
|
+
|
|
619
|
+
### 0.18.0 contact correction and adoption limits
|
|
620
|
+
|
|
621
|
+
The collision library rejects an exactly duplicated CSO point before it can
|
|
622
|
+
form a degenerate tetrahedron and lose a valid terrain contact. Both friction
|
|
623
|
+
builders select static/dynamic coefficients directly, avoiding dependence on
|
|
624
|
+
an unused coefficient through floating-point cancellation.
|
|
625
|
+
|
|
626
|
+
Native defaults remain unchanged. In the game's actual tree matrix, the
|
|
627
|
+
collision correction fixes one missed-contact case but makes another case
|
|
628
|
+
exceed the game's clearance limit at default softness (-21.007 mm). The game
|
|
629
|
+
therefore qualifies an explicit 600 Hz / 10 static-contact policy alongside
|
|
630
|
+
this engine: all 24 tree/rate cases and 18 cut-tree cases pass and sleep.
|
|
631
|
+
This is a bounded product policy, not a universal stiffness recommendation.
|
|
632
|
+
The default-policy failure is retained in the investigation records.
|
|
633
|
+
|
|
634
|
+
Qualification: 242 package tests, 847 game tests, four generated/excavated
|
|
635
|
+
terrain requests, GPU-disabled browser controls, native serial/two-worker
|
|
636
|
+
checks, no-std, and independent builds matching all shipped files. Three
|
|
637
|
+
ordinary CPU controls are within roughly 1% of 0.17.0 in this run. See
|
|
638
|
+
`absolutejs/research/contact-softness-controls/` for measured fixture costs,
|
|
639
|
+
source hashes, intermediate failures and scope limitations.
|
package/absolutejs/README.md
CHANGED
|
@@ -59,7 +59,7 @@ reconstructing the entire angular velocity through the inertia frame.
|
|
|
59
59
|
|
|
60
60
|
Use Bun 1.4.4+absolute.1, Rust 1.94.0 with `wasm32-unknown-unknown`, and Python 3.12.
|
|
61
61
|
Run `bun install --frozen-lockfile`, then `bash absolutejs/scripts/build-native.sh`.
|
|
62
|
-
Cargo's exact lockfile is versioned, compilation
|
|
62
|
+
Cargo's exact lockfile is versioned, compilation defaults to one job (override with `CARGO_BUILD_JOBS`), and the
|
|
63
63
|
wasm-bindgen 0.2.129 CLI archive is checksum verified before extraction. Caches and
|
|
64
64
|
generated build output are reproducible; modified source and selected test
|
|
65
65
|
receipts are committed. `dist/provenance.json` records the resulting WASM hash.
|
|
@@ -566,3 +566,74 @@ observations are not hardware FPS or a universal speedup claim. See
|
|
|
566
566
|
Independent builds match all 49 distribution files and the packaged native
|
|
567
567
|
payload byte-for-byte. Raw executable/data sections match; only unshipped
|
|
568
568
|
wasm-bindgen metadata differs.
|
|
569
|
+
|
|
570
|
+
## Rotational intervals and cached contact directions (0.17.0)
|
|
571
|
+
|
|
572
|
+
Orientation-changing 3D direct sweeps now use separating-plane motion bounds
|
|
573
|
+
to detect the captured case where a rotating bar crosses a surface between
|
|
574
|
+
two clear endpoint poses. Translation-only sweeps retain the existing path.
|
|
575
|
+
The distance-query budget remains 25, with explicit failure if safe progress
|
|
576
|
+
cannot be established. Composite traversal is a separate limitation; this is
|
|
577
|
+
not a universal continuous-separation guarantee.
|
|
578
|
+
|
|
579
|
+
Stalled convex queries preserve the direction associated with the support
|
|
580
|
+
bound used for classification. This fixes a captured tree/triangle query that
|
|
581
|
+
reported about 202 mm penetration while independent plane projection bounded
|
|
582
|
+
required separation to about 0.013 mm. Both corrections are qualified together:
|
|
583
|
+
the rotational change alone exposed this cached-direction error in the full
|
|
584
|
+
oak excavation test. The combined engine passes it and all 844 game tests.
|
|
585
|
+
|
|
586
|
+
Package API, snapshot layout, contact tolerances and solver budgets are unchanged.
|
|
587
|
+
The raw variant-5/960 terrain clearance rejection remains identically present;
|
|
588
|
+
physical outcomes elsewhere may change. Bounded CPU control scenes retain
|
|
589
|
+
identical physical results and comparable timings. The targeted tilted-contact
|
|
590
|
+
fixture costs about 51% more after extended warmup, about 0.037 ms extra per
|
|
591
|
+
restored step in that fixture. This is a measured correctness tradeoff, not a
|
|
592
|
+
browser FPS or general performance guarantee.
|
|
593
|
+
|
|
594
|
+
Qualification includes 432 direct-sweep cases, captured old/new contact
|
|
595
|
+
regressions, 237 package tests, GPU-disabled browser checks, native one/two-worker
|
|
596
|
+
controls, no-std, 24 tree/rate comparisons, four generated/excavated requests,
|
|
597
|
+
18 flat-tree cases and an independent build matching all shipped files.
|
|
598
|
+
Evidence: `absolutejs/research/rotational-contact/`.
|
|
599
|
+
|
|
600
|
+
### Numerical contact softness
|
|
601
|
+
|
|
602
|
+
`world.integrationParameters.contactSoftness` and `staticContactSoftness` read
|
|
603
|
+
or atomically replace `{ naturalFrequency, dampingRatio }`. The first controls
|
|
604
|
+
dynamic contacts (native default 30 Hz / 10); the second controls contacts with
|
|
605
|
+
a fixed body (native default 60 Hz / 10). Change them between steps. Reads
|
|
606
|
+
return owned copies; values must be representable finite native coefficients,
|
|
607
|
+
with positive frequency and nonnegative damping. Both values are validated
|
|
608
|
+
before either changes. Snapshots preserve both settings. Bounded step profiles
|
|
609
|
+
record each distinct settings pair once in a bounded `contactSettings` table;
|
|
610
|
+
samples carry `native.contactSettingsIndex`. Reports deeply own that table,
|
|
611
|
+
including after the world is freed. This avoids repeating configuration in
|
|
612
|
+
every sample and keeps telemetry within existing event budgets.
|
|
613
|
+
|
|
614
|
+
These are numerical regularization parameters, not measured material elasticity.
|
|
615
|
+
Higher frequency can reduce transient penetration but may produce jitter or
|
|
616
|
+
prevent sleeping. Qualify motion, contact, sleeping and cost across actual
|
|
617
|
+
scenarios before changing a product's policy. Defaults are unchanged.
|
|
618
|
+
|
|
619
|
+
### 0.18.0 contact correction and adoption limits
|
|
620
|
+
|
|
621
|
+
The collision library rejects an exactly duplicated CSO point before it can
|
|
622
|
+
form a degenerate tetrahedron and lose a valid terrain contact. Both friction
|
|
623
|
+
builders select static/dynamic coefficients directly, avoiding dependence on
|
|
624
|
+
an unused coefficient through floating-point cancellation.
|
|
625
|
+
|
|
626
|
+
Native defaults remain unchanged. In the game's actual tree matrix, the
|
|
627
|
+
collision correction fixes one missed-contact case but makes another case
|
|
628
|
+
exceed the game's clearance limit at default softness (-21.007 mm). The game
|
|
629
|
+
therefore qualifies an explicit 600 Hz / 10 static-contact policy alongside
|
|
630
|
+
this engine: all 24 tree/rate cases and 18 cut-tree cases pass and sleep.
|
|
631
|
+
This is a bounded product policy, not a universal stiffness recommendation.
|
|
632
|
+
The default-policy failure is retained in the investigation records.
|
|
633
|
+
|
|
634
|
+
Qualification: 242 package tests, 847 game tests, four generated/excavated
|
|
635
|
+
terrain requests, GPU-disabled browser controls, native serial/two-worker
|
|
636
|
+
checks, no-std, and independent builds matching all shipped files. Three
|
|
637
|
+
ordinary CPU controls are within roughly 1% of 0.17.0 in this run. See
|
|
638
|
+
`absolutejs/research/contact-softness-controls/` for measured fixture costs,
|
|
639
|
+
source hashes, intermediate failures and scope limitations.
|
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.18.0",qualifiedKernelRelease:"0.18.0",upstream:"b716d375efc0201003f0cd9ef7168eee0b62c177",engine:"0.36.0",collisionLibraryVersion:"0.31.1",collisionSource:"git+https://github.com/absolutejs/parry?rev=53ac0b0b02767300da09d092d97cef53a975c947#53ac0b0b02767300da09d092d97cef53a975c947",bindings:"0.21.0",bindgen:"0.2.129",wasmSha256:"67e366a5151fd865f6e6fb154a8cb27a7c4073c19e51e0e594633cf07f6e956e",wasmBytes:3363613,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.18.0",
|
|
6
|
+
"qualifiedKernelRelease": "0.18.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=53ac0b0b02767300da09d092d97cef53a975c947#53ac0b0b02767300da09d092d97cef53a975c947",
|
|
11
11
|
"bindings": "0.21.0",
|
|
12
12
|
"bindgen": "0.2.129",
|
|
13
|
-
"wasmSha256": "
|
|
14
|
-
"wasmBytes":
|
|
13
|
+
"wasmSha256": "67e366a5151fd865f6e6fb154a8cb27a7c4073c19e51e0e594633cf07f6e956e",
|
|
14
|
+
"wasmBytes": 3363613,
|
|
15
15
|
"solverChanges": true
|
|
16
16
|
}
|