USD COLLISION DESK — FREE DOORWAY SAMPLE
Blender 5.1.2 → Unreal Engine 5.8.2, Windows

Inspect an authored collision setup before choosing a tool.

This original sample contains a detailed doorway, a floor and four simple box
proxies. The boxes define the intended collision independently of the visible
mesh. You can inspect the Blender scene and the USD structure without buying
anything or installing Collision Desk. No exporter or Unreal refresh script is
included in this sample.

WHAT IS IN THE DOWNLOAD

doorway.blend — the source scene. Proxies use wire display so they do not cover
the visible surfaces. Open it in Blender with automatic script execution off.

usd/01-wide.usda, 02-narrow.usda, 03-middle.usda, 04-wide.usda — four frozen
exports. Only the left box's width changes: 1.4, 0.4, 0.8 and 1.4 metres.
The visible doorway and floor geometry stays the same. The first and last files
are deliberately identical. File names describe the left box, not the doorway.

SAMPLE_FACTS.json — dimensions and checksums for these files.
LICENSE.txt — reuse terms for these original example assets and this guide.

READ THE COLLISION STRUCTURE

Open a .usda in a text editor. Under /CollisionDesk, each A_<id> parent contains
one Render mesh and only its assigned UBX_<id> guides. The render purpose is
default; the box purpose is guide. Both carry PhysicsCollisionAPI and
PhysicsMeshCollisionAPI, with collisionEnabled=true and approximation=none.
Naming a mesh UBX by itself is not the complete representation.

For a first import, use a disposable Unreal project with USD Importer enabled.
Open the 01-wide.usda file through USD Stage. Use a dedicated cache for the
stage, and set Share Assets For Identical Prims=false before assessing collision.
Separate render meshes can need different boxes even when their visible
geometry is identical. Keep automatic cache cleanup off if you later use the
Collision Desk refresh companion.

Inspect the generated Static Mesh collision: the doorway should have three
simple boxes and the floor one. The centre opening should remain clear. The
guide meshes are not intended to appear as visible game geometry. These are
expectations for the tested version and this sample, not an automatic check of
your project.

THE RELOAD TRAP

A correct first import does not prove a later box edit reached Unreal's collision
body. In our controlled Unreal 5.8.2 test, changing only a guide and forcing the
loaded source layer to reload left the previous cached body in use, even though
the live USD guide had changed. Inspect the native body as well as the source.
The four files let you examine that distinction. To investigate it without
changing the supplied originals, copy 01-wide.usda to a separate working folder
as live.usda and open that copy as the stage. Keep the same loaded StageActor,
cache and live.usda path. Copy 02-narrow.usda's contents over that same live.usda,
then use your layer-reload workflow. Check both the live guide dimensions and
the generated native collision body. Repeat with frames 3 and 4 only if useful.
Opening each numbered file as a different stage changes the file identity and
does not reproduce the same-file cache test. Do not assume ordinary Reload has
applied collision changes, or rename geometry to conceal the issue.

At the source-space line x=-0.8 m, z=1 m, crossing the wall along y=-2 to+2 m,
the intended left box blocks in frames 1 and 4 and leaves clearance in 2 and 3.
The centre doorway remains open; the floor remains present in every frame.
Capsule size matters: the edited-guide probe used a radius of 2 cm and a
half-height of 2 cm. These source coordinates use metres and Z up.

THE AVAILABLE WORKFLOWS

The free USDHook4Collisions project is a useful alternative:
https://github.com/LucianGerasch/USDHook4Collisions
Its unmodified hook passed our basic doorway, wall and floor checks. In this
fixture it used the detailed render surface as complex-as-simple collision and
left separate proxies visible. Its code is not bundled here.

The separately prepared Collision Desk tools add per-render box assignment in
Blender and an explicit selected-stage refresh command in Unreal. That command
passed an initial refresh, three box edits and one saved-project reopen in our
controlled test. It creates new generated meshes; other objects referring to an
old mesh keep that old mesh and collision. It is not an automatic watcher.

SCOPE AND PROVENANCE

The first tool supports static, closed eight-corner boxes aligned to the render
mesh's local axes. Arbitrary shapes, independently rotated boxes, mirrored/sheared
transforms, animation, composed USD stages and other software versions are outside
its current scope. This sample does not establish player acceptance, performance,
large-scene capacity or the setup time for an unfamiliar buyer.

The original files and guide were made with AI assistance and checked using
Blender/OpenUSD and controlled native Unreal tests. No third-party asset or
competitor source is included. The USD metadata retains the export-time private
schema label and UNVERIFIED marker; that marker is not a live test result.

References:
https://forums.unrealengine.com/t/usd-collision-in-5-4/1790068
https://openusd.org/dev/api/usd_physics_page_front.html

Prepared 5 October 2026. Free doorway example, version 0.1.3.
