avbd-babylon 0.4.0 → 0.4.2
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 +27 -8
- package/dist/avbd.global.js +274 -188
- package/dist/avbd.js +273 -187
- package/dist/nativeScenes.d.ts +4 -2
- package/docs/BABYLON_API.md +18 -2
- package/package.json +2 -1
- package/tests/README.md +16 -2
package/README.md
CHANGED
|
@@ -78,6 +78,7 @@ JavaScript examples. Run `npm start`, then open the
|
|
|
78
78
|
| Batched body edits, pose reads and queries | [Bulk-edit examples](#bulk-edits-and-gpu-dispatches), [measurement code](tests/native-edit-performance.js), [runner](scripts/check-native-performance.mjs) |
|
|
79
79
|
| CPU compatibility versus WebGPU | [Settings and results](#backend-differences-and-benchmarks), [measurement code](tests/compatibility-performance.js), [runner](scripts/benchmark-backends.mjs) |
|
|
80
80
|
| Sleeping and waking in large connected scenes | [Sleeping example](#queries-callbacks-and-sleeping), [connected-wall runner](scripts/benchmark-connected-sleep.mjs) |
|
|
81
|
+
| Sleeping stability while grabbing and settling | [28K ring check](scripts/check-sleep-stability.mjs), [jointed-drop timing and view check](scripts/check-jointed-settling.mjs), [saved jointed-drop results](test-results/jointed-settling.json) |
|
|
81
82
|
| Ships, buoyancy and water | [Scene explanation](#ships-water-and-destruction), [scene builder](demo/naval/scene.js), [runner](scripts/benchmark-naval.mjs) |
|
|
82
83
|
| Grid versus HPLOC++ collisions | [Collision guide](docs/HPLOC.md), [paired scene measurements](tests/performance.js), [tree refit runner](scripts/benchmark-hploc-refit.mjs) |
|
|
83
84
|
| D20 particle collisions | [Capacity benchmark](#d20-particle-capacity), [runner](scripts/benchmark-particles.mjs), [reusable GPU particles](src/gpu/surfaceParticles.js), [collision shader](src/gpu/surfaceParticles.wgsl) |
|
|
@@ -110,6 +111,12 @@ disabled collision groups are excluded from the initial contact-capacity estimat
|
|
|
110
111
|
The [startup check](scripts/check-demo-startup.mjs) initializes every demo in a
|
|
111
112
|
paused worker with `--all` and records setup times separately from simulation
|
|
112
113
|
performance. Shader caches, device checks and scene size affect those times.
|
|
114
|
+
The scene view shows loading messages during setup, even with its performance
|
|
115
|
+
panel collapsed, and stays visible until the first GPU frame completes. Worker
|
|
116
|
+
startup reports also list the time spent in each setup phase.
|
|
117
|
+
The web demo loads the selected demo and renderer on demand. Worker controls use
|
|
118
|
+
a small generated scene catalogue; scene construction and physics stay in the
|
|
119
|
+
worker. First use still includes GPU device setup and shader compilation.
|
|
113
120
|
|
|
114
121
|
## Install
|
|
115
122
|
|
|
@@ -121,7 +128,7 @@ npm install avbd-babylon @babylonjs/core
|
|
|
121
128
|
|
|
122
129
|
For local development, run `npm install` and `npm run build` in this repository,
|
|
123
130
|
then run `npm install /absolute/path/to/avbd` in your Babylon project. `npm pack`
|
|
124
|
-
creates an installable
|
|
131
|
+
creates an installable archive named for the current package version too.
|
|
125
132
|
|
|
126
133
|
The package includes ESM, TypeScript declarations and a browser global build.
|
|
127
134
|
Babylon 9 is an optional peer dependency; integration examples are checked with
|
|
@@ -217,8 +224,8 @@ portable 2D/3D APIs and a Babylon integration:
|
|
|
217
224
|
step/sleep/bounce settings and skips repeated buffer bindings within a compute
|
|
218
225
|
pass.
|
|
219
226
|
- **Sleeping and live editing.** Per-body sleep permission, support checks and
|
|
220
|
-
impact checks allow resting objects to sleep and wake again. Large
|
|
221
|
-
3D worlds
|
|
227
|
+
impact checks allow resting objects to sleep and wake again. Large desktop
|
|
228
|
+
3D worlds track connected groups so impacts can wake a wall
|
|
222
229
|
without waking unrelated walls on the same floor. Velocities,
|
|
223
230
|
impulses, teleports, filters and motor targets can change during simulation.
|
|
224
231
|
Welds capture their rest rotation from live GPU poses, and released
|
|
@@ -2201,12 +2208,17 @@ fallingBox.body.wakeUp();
|
|
|
2201
2208
|
console.log(await physics.readSleepStats());
|
|
2202
2209
|
```
|
|
2203
2210
|
|
|
2204
|
-
Impulses, teleports,
|
|
2205
|
-
world.
|
|
2211
|
+
Impulses, teleports, body-property edits, new bodies and removed supports wake
|
|
2212
|
+
the world. Adding or removing constraints and updating grab anchors wake their
|
|
2213
|
+
connected bodies. Desktop WebGPU worlds with at least 4,096 bodies automatically track connected
|
|
2206
2214
|
groups, so an impact wakes the touched group while unrelated piles stay asleep.
|
|
2207
|
-
The static floor does not connect separate piles.
|
|
2208
|
-
|
|
2209
|
-
|
|
2215
|
+
The static floor does not connect separate piles. Contact and joint connections
|
|
2216
|
+
let eligible members settle together. Awake groups rebuild their connections
|
|
2217
|
+
each step so separated debris can settle independently. Sleeping groups retain
|
|
2218
|
+
their support history. Creating, moving or releasing a grab keeps unrelated
|
|
2219
|
+
sleeping groups asleep. A connected wall can remain awake while any of its
|
|
2220
|
+
members are moving or losing support, even when most bricks look still.
|
|
2221
|
+
Smaller worlds and mobile compatibility paths use
|
|
2210
2222
|
whole-world impact waking. Set `sleeping: { islands: true }` to opt into connected
|
|
2211
2223
|
groups in a smaller 3D world, or `islands: false` to use whole-world waking. Under
|
|
2212
2224
|
gravity, unsupported slow-moving bodies stay awake; supports extend upward
|
|
@@ -2217,6 +2229,13 @@ world makes bodies eligible by default; `allowSleep:false` excludes a body.
|
|
|
2217
2229
|
Paper comparisons keep sleeping disabled. Portable 3D solvers accept these
|
|
2218
2230
|
same world and initial-body options.
|
|
2219
2231
|
|
|
2232
|
+
For stacks assembled at rest, native 3D solvers accept
|
|
2233
|
+
`world.createSolver(device, { sleeping: { islands: true, startAsleep: true } })`.
|
|
2234
|
+
Initialization takes one physics step to validate contacts, then sleeps stationary
|
|
2235
|
+
groups connected to stationary solid support. Floating, moving and sleep-excluded
|
|
2236
|
+
groups stay awake. The interactive half-million walls use this option; benchmark
|
|
2237
|
+
comparisons with the paper disable sleeping.
|
|
2238
|
+
|
|
2220
2239
|
Small jointless 3D worlds with up to 32 bodies also batch all movement iterations
|
|
2221
2240
|
into one GPU workgroup. Body poses stay in shared memory; contacts remain in GPU
|
|
2222
2241
|
storage. The equations, contact order, lane reductions and iteration count stay
|