MAURICIO PORRAS
← Technical Work
Pipeline Development

Destructible Asset Production Pipeline

An end-to-end pipeline and custom engine node plugin that turns ordinary modular building blueprints into fully simulated, physics-driven destructible assets.

Unreal EngineC++Python
01

Overview

This pipeline standardizes the conversion of a modular building blueprint into a fully destructible, physics-simulated asset — spanning a quick context-menu tool for one-off conversions, a custom set of engine node-graph operations built to fill gaps in the stock destruction toolset, a documented step-by-step production workflow, and a Python automation layer that batches the most repetitive and error-prone parts of that workflow.

02

Challenge

Turning a normal building kit piece into a destructible object meant a long chain of manual steps: merging visual sub-meshes, exporting, fragmenting the geometry externally, reimporting, regenerating collision, reassigning materials piece by piece, and configuring physics state — repeated by hand across a large modular kit library. On top of that, the engine's stock destruction toolset was missing capabilities the production actually needed: no reliable way to reassociate custom collision shapes after a mesh was split, no clean way to manage constraints between fractured pieces without floating-piece artifacts, and no way to select or group fractured pieces by volume without already knowing the fracture result in advance.

03

Design Goals

  • Standardize the blueprint-to-destructible conversion into one repeatable, documented pipeline instead of tribal knowledge.
  • Extend the engine's native destruction node graph with the specific operations this production needed that it didn't ship with.
  • Automate the most repetitive and error-prone steps — batch export, material reassignment — without removing artist control over the creative fracture step itself.
  • Every piece must default to a safe, static physics state so scripted destruction behaves predictably rather than free-falling on load.
04

System Design

Step 01Blueprint (Visual Layers)
Step 02Merge to Static Mesh
Step 03External Fracture
Step 04Reimport & Reassign
Step 05Geometry Collection

The pipeline deliberately keeps the creative fracture step (in an external DCC) as a manual, artist-driven stage, while automating everything upstream and downstream of it — batching preparation and export on one side, reassignment and physics setup on the other.

05

Implementation

A context-menu tool handles quick one-off conversions directly from the content browser, supporting three destructible types: an indestructible-but-pushable preset, a one-shot-kill preset, and full fragmentation through a generic, reusable Voronoi fracture graph shared across many assets rather than a bespoke graph per object.

For production-scale destruction, a custom node plugin extends the engine's node-based destruction editor with eight operations the stock toolset didn't provide: connecting or removing bone-to-bone constraints between selections (with color-coded debug visualization), branching by piece count or by connectivity, matching custom collision primitives back to individual pieces by centroid proximity after a split, stripping all constraints from a bone selection, selecting pieces inside a bounding volume, and an efficient planar-slice alternative to full Voronoi fracture for cases that only need partial cuts.

The full production workflow chains these together: merge a blueprint's visual layers into one static mesh, export to FBX at the world origin, fracture externally by material, reimport and split by connected component (each shell becomes one physics "bone"), reassign materials by matching preserved slot names, generate the geometry collection, set every piece to a static-and-anchored initial state, and reassign the finished collection back into the original blueprint.

A Python automation layer wraps the most repetitive parts of that chain: batch baking blueprints to static meshes, batch exporting to disk, and batch reassigning materials by the slot names preserved through the external fracture step — turning what had been tedious one-by-one work into a single scripted pass. A bonus utility built alongside it audits an entire materials folder for missing or misplaced physical-material assignments, since those drive impact and footstep audio and are easy to overlook at scale.

Custom destruction node graph with constraint and volume-selection nodes
Batch material reassignment tool running across a folder of imported assets
06

Results

The pipeline eliminated per-asset manual blueprint setup for the common conversion cases, and replaced one-by-one material reassignment across batches of assets with a single scripted step. Just as importantly, it gave the technical art team a documented, referenceable process for a task that had previously lived as tribal knowledge — repeatable by anyone on the team, not just whoever built it.

07

Lessons Learned

Layering the system — generic low-level node operations, a specific documented workflow on top of them, and automation scripts wrapping the repetitive parts of that workflow — meant each layer could evolve independently without the others breaking. Deliberately leaving the creative fracture step manual, rather than trying to automate away Houdini authoring entirely, was the right split of labor: automation earns its keep on repetitive mechanical work, not on the parts that need an artist's judgment.