Shape-True Packing (Voxels)
By default, LOP packs every item as a box. Even a STEP part with a complex machined profile is treated as the smallest rectangular box that contains it — its bounding box. That is fast, predictable, and correct for the vast majority of freight, because most freight really is boxes.
It is wrong in one specific situation: when two irregular parts could physically interlock, but their bounding boxes overlap. The optimizer sees the boxes colliding and refuses the arrangement, so the parts are placed further apart than they need to be — or one of them is left unplaced entirely.
Shape-true packing fixes that case. LOP converts a STEP part into a voxel grid — a three-dimensional grid of small filled and empty cells that follows the part's real form — and the optimizer uses that grid instead of the box when it checks whether two parts collide. Collision between shaped parts is tested on their real geometry rather than their bounding boxes, and parts nest into each other's hollows: Smart Plan and Maximum Fill place a part inside another part's empty interior where the bounding boxes would collide.
When It Matters
Shape-true packing helps when all of the following are true:
- The items are STEP/CAD parts, not cartons or pallets
- The parts are meaningfully non-rectangular — L-brackets, castings, frames, weldments, anything with a large empty region inside its bounding box
- Several such parts are going into the same container and could nest
It does nothing useful when:
- The items are boxes, cartons, or palletized cargo. A carton's bounding box is its shape, so the voxel grid describes exactly the same solid and no arrangement changes
- Only one irregular part is in the plan. Nesting is a relationship between two parts; a single part has nothing to nest with
- The container is far from full. If space is not the binding constraint, tighter nesting changes nothing about the outcome
A useful rule of thumb: look at a part in the 3D viewport and ask how much of its bounding box is actually empty. If the answer is "most of it", shape-true packing has something to work with. If the answer is "almost none", it does not.
Generating Voxel Data
Voxel data is generated per item, in the Item Library — not in the editor. The part must already have a processed STEP file.
- Open the Item Library and select a STEP item
- Choose a Voxel Resolution:
- Fast (50 mm) — coarse cells, quickest to generate, smallest grid
- Balanced (25 mm) — the general-purpose choice and the default; every processed STEP part gets this grid automatically once its mesh is ready
- Detailed (10 mm) — fine cells for parts whose useful gaps are small
- Click Generate Voxels
Generation runs in the background. You do not have to wait on the page, and you can keep working elsewhere in the app.
Status
The item shows a status chip that tracks the job:
| Chip | Meaning |
|---|---|
| No voxels | Nothing has been generated for this item yet |
| Queued | The job is accepted and waiting for a worker |
| Voxelizing… | The grid is being built |
| Grid ready | Voxel data is stored and the optimizer can use it |
| Failed | The job did not complete. A Retry action appears next to the chip |
A failed job never blocks anything — the item keeps working as a normal bounding-box item until you retry successfully.
Re-processing a STEP file clears its voxel data. If you upload a new file for an item, or reprocess the existing one, the stored grid describes geometry that no longer exists, so LOP discards it and the chip returns to No voxels. Generate voxels again after any re-process — otherwise the plan silently falls back to bounding boxes.
Which Planning Modes Use It
Shape-true collision checking happens in the optimizer's second stage — the local search that refines an initial arrangement. Only the modes that run that stage can use voxel data:
| Mode | Uses voxel data |
|---|---|
| Quick Plan | No |
| Smart Plan | Yes |
| Maximum Fill | Yes |
Quick Plan runs the constructive stage only, and that stage does no pairwise collision checking at all — it places into known-free space. There is nothing for a voxel grid to refine, so Quick Plan ignores voxel data even when it exists. This is not a limitation to work around; it is why Quick Plan is fast.
Voxelize the hollow part — what goes inside it does not need voxel data. Nesting is measured against the hollow part's cells, so a plain carton or bar drops into a voxelized frame without carrying a grid of its own. Voxelizing both is still worth doing when both parts are irregular: each one's real form is then used when the pair is checked.
In the editor, you can manually place a loose part on a voxelized part’s occupied surfaces or inside an accessible cavity, with placement tolerance set by the voxel grid (a boundary-aligned surface may settle one cell higher; 25 mm on the default grid). Parts keep independent world placements; Optimize/Solve recomputes the plan and can move a manually nested part.
What It Costs
Generating a grid is a one-time cost per item, per resolution. Once Grid ready appears, the data is stored and reused by every future solve of every plan that uses the item — you do not regenerate it per plan.
Finer resolution is not automatically better:
- Generation cost follows surface area at the chosen pitch; a 10 mm grid may be refused for very large parts — the message names the resolution that passes. Choose 10 mm when the gaps you are trying to exploit are genuinely small
- 50 mm is often enough for large weldments and frames, where the useful empty regions are measured in tens of centimetres
If voxel data cannot be loaded for any reason during a solve, the solve continues normally using bounding boxes. It is never a failure — you simply get the result you would have got without shape-true packing.
Checking It Visually
In the editor, the Voxel Grid overlay (under the viewport display toggles) draws the voxel cells for items that have them. It is the quickest way to confirm that a part's grid resolves the feature you expected — and to see, at a glance, which parts in the plan carry voxel data and which do not.
Practical Guidance
- Start with Balanced (25 mm). Move to Detailed only if you can point at a specific feature the grid is missing
- Voxelize the parts with a large empty region inside their bounding box — the frames, troughs and weldments other cargo can go into. What goes inside them does not need voxel data of its own
- If a plan already fits comfortably, shape-true packing has nothing to win. Reach for it when the container is tight and the parts are irregular
- After any STEP re-upload or re-process, check the chip before assuming the next solve is shape-true
Next Steps
- Racks in a Plan — a carrier whose own shape decides where cargo rests
- Racks and Other Custom Carriers — giving a pallet type a 3D body
- Planning Modes — which stage each mode runs