Skip to content

Physics settle bake for lab_workbench01 — 234/340 entities - #1

Open
jensjebens wants to merge 1 commit into
mainfrom
settle-workbench
Open

Physics settle bake for lab_workbench01 — 234/340 entities#1
jensjebens wants to merge 1 commit into
mainfrom
settle-workbench

Conversation

@jensjebens

Copy link
Copy Markdown
Owner

Workbench Physics Settle Bake

Settles rigid-body entities on the lab_workbench01 assembly using Newton physics (SemiImplicit solver) and bakes the resulting transforms into per-entity domain layers.

What this does

  • 234 of 340 entities settled — each entity gets a physics/<entity>_settled.usda layer with baked resting transforms
  • Per-entity tracking in alab/settle_per_entity.csv (358 rows with positions, drift, surface assignment)
  • Portable test scene: alab/workbench_settled_test.usda (234 bodies, 270 collision shapes, 2 cameras)
  • Orchestrator and batch scripts: alab/run_settle_all.py, alab/run_settle_direct.py, alab/run_one_batch.py

Physics settings (proven stable)

  • Solver: SemiImplicit, angular damping 2.0
  • Contacts: ke=50000, kd=5000, mu=1.0
  • XZ spring attractor: k=500, d=200 (keeps entities near original position)
  • Sub-dt: 1/12000 (120 substeps at 100 fps), 200 frames (2s settle)
  • Collision: convexDecomposition, batches of ≤20 entities

Known issues — 106 entities still unsettled

These entities fall through their support surfaces due to missing or incomplete collision geometry:

Surface Success Rate Issue
Wall shelving (furniture_shelving01) 68/68 (100%) ✅ All good
Counter (Y≈98) 111/149 (74%) Complex geometry falls through
Upper workbench shelves (Y≈60) 32/57 (56%) Partial shelf collision
Lower-mid shelves (Y≈37) 9/23 (39%) Missing shelf board collision
Bottom shelves (Y≈15) 4/32 (12%) Minimal collision coverage
Floor (Y≈0) 0/7 (0%) No floor collision surface

Next steps: Add collision geometry for individual shelf boards at each height level + floor plane, then re-run the 106 failures.

Excluded entities (not settled — by design)

  • 192 circuit board components (proc_dev_circuit_*) — RigidBodyAPI stripped (soldered parts, 32+ neighbors cause chain explosions)
  • decor_thumb_tack01 — stripped (30 neighbors)
  • furniture_bench_seat01 — stripped (falls over)
  • vegetation_bonsai* + decor_bonsai_jar01 — stripped (complex tree geometry)

Physics settle of lab_workbench01 assembly:
- 234/340 entities settled on surfaces (69%)
- Settled layer: ALab/entity/lab_workbench01/physics/lab_workbench01_settled.usda
- Per-entity CSV with positions, drift, surface mapping: settle_per_entity.csv
- Entity manifest: workbench_entities.csv, workbench_manifest.md

Entity physics updates:
- convexDecomposition for all collision shapes
- Circuit board components (proc_dev_circuit_*) stripped of RigidBodyAPI
- Bench seat, bonsai, thumb tacks stripped of RigidBodyAPI
- Furniture_workbench01: collision on all 29 shelf boards + 4 curved shelves
- Furniture entities are static colliders (no RigidBodyAPI)

Settle approach:
- SemiImplicit solver, ke=50000, kd=5000
- 5cm Y lift + XZ spring attractor (k=500, d=200)
- Direct entity references (not through assembly)
- Validated: 234 bodies stable under gravity (max_v=42 cm/s)

Known issues:
- 106 entities fell (workbench shelf objects need individual shelf collision)
- Newton CoACD crashes after ~4 consecutive model builds (memory corruption)
- Assembly reference composition doesn't propagate CollisionAPI to Newton
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant