mcpField
A
assemble-scene

assemble-scene

github.com/playcanvasDevelopment31312 installsUpdated 1w ago
Repository

About assemble-scene

assemble-scene is a development skill for structuring and placing objects in PlayCanvas scenes. It covers root and visual hierarchies, collider sizing, spacing, lifecycle cleanup, and rendered-frame placement checks.

Key features

  1. 01Organize each object around a named root
  2. 02Align colliders with measured render bounds
  3. 03Space objects using calibrated footprints
  4. 04Keep UI and scene elements outside model hierarchies
  5. 05Check supports and attachments after rendering
  6. 06Remove roots and unregister owned events

Use cases

  1. 01Assemble a scene with repeated object instances
  2. 02Set collider sizes and object spacing
  3. 03Check whether objects float or penetrate surfaces

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/playcanvas/skills --skill assemble-scene

After installing, type/assemble-scenein Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
direct-engine.md
react.md
web-components.md

Details

From the project README

Scene assembly

Each scene object has one named root. Put position, heading, rigidbody, collision, and scripts on the root, and the calibrated visual from calibrate-model below it. Apply calibration once; if the tuning record is missing, calibrate first.

  • Name roots by role, with predictable names for repeated instances.
  • Size colliders from measured bounds and keep them aligned with render bounds.
  • Space roots by the scaled footprint in the tuning record, not by pivot position. A non-90° yaw rotates the footprint, so reserve its larger horizontal extent.
  • Keep UI, effects, cameras, and lights outside model hierarchies.
  • Remove the root through its surface's lifecycle and unregister events it owns.
  • Rigid bodies need Ammo loaded first (build-app).

Check placement

After a rendered frame, measure each support or attachment at the object's actual position, using a mount point, raycast, or geometry sample read through inspect-runtime. A positive gap floats; a negative gap penetrates. Overlapping world AABBs between unrelated roots are a failure unless two different views prove the overlap is empty space.

Read only the reference matching the code: direct Engine, React, or Web Components.

Comments

Markdown supported