@absolutejs/rapier3d 0.17.0 → 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 CHANGED
@@ -596,3 +596,44 @@ regressions, 237 package tests, GPU-disabled browser checks, native one/two-work
596
596
  controls, no-std, 24 tree/rate comparisons, four generated/excavated requests,
597
597
  18 flat-tree cases and an independent build matching all shipped files.
598
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.
@@ -596,3 +596,44 @@ regressions, 237 package tests, GPU-disabled browser checks, native one/two-work
596
596
  controls, no-std, 24 tree/rate comparisons, four generated/excavated requests,
597
597
  18 flat-tree cases and an independent build matching all shipped files.
598
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.
@@ -1 +1 @@
1
- var e=Object.freeze({schemaVersion:1,scope:"package",packageName:"@absolutejs/rapier3d",packageVersion:"0.17.0",qualifiedKernelRelease:"0.17.0",upstream:"b716d375efc0201003f0cd9ef7168eee0b62c177",engine:"0.36.0",collisionLibraryVersion:"0.31.1",collisionSource:"git+https://github.com/absolutejs/parry?rev=8c68a625c15930ca8b685f30861aedf5d59c3726#8c68a625c15930ca8b685f30861aedf5d59c3726",bindings:"0.21.0",bindgen:"0.2.129",wasmSha256:"0dad2a033f7d46e262a08a370429dc6e23ea95009f824c14a76302a15a8f73a8",wasmBytes:3362690,solverChanges:!0});export{e as buildInfo};
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};
@@ -2,15 +2,15 @@
2
2
  "schemaVersion": 1,
3
3
  "scope": "package",
4
4
  "packageName": "@absolutejs/rapier3d",
5
- "packageVersion": "0.17.0",
6
- "qualifiedKernelRelease": "0.17.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=8c68a625c15930ca8b685f30861aedf5d59c3726#8c68a625c15930ca8b685f30861aedf5d59c3726",
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": "0dad2a033f7d46e262a08a370429dc6e23ea95009f824c14a76302a15a8f73a8",
14
- "wasmBytes": 3362690,
13
+ "wasmSha256": "67e366a5151fd865f6e6fb154a8cb27a7c4073c19e51e0e594633cf07f6e956e",
14
+ "wasmBytes": 3363613,
15
15
  "solverChanges": true
16
16
  }