Skip to content

No. 1216 CO CoreEQLabs Pro

Unreal I/O

UE 5.4–5.85/52.0.5

Module: Core · Category: I/O · Tool ID: UnrealIO

The import half of Unreal I/O. Instead of dragging an FBX into the Content Browser and hoping, this runs a profile-driven pipeline: classify the file, resolve which profile applies, preflight it, import to a staging area, validate against rules, apply safe fixes, then publish to its destination with provenance recorded.

The point is that the same file imported by two people on two machines lands identically — and that a file which shouldn’t be imported gets stopped before it pollutes the project.

The export half is Unreal I/O — Export.

Unreal I/O with a normal-map texture selected, showing the resolved profile and destination plus a Preview dry run listing each preflight rule and the validators that will run after import.
Unreal I/O with a normal-map texture selected, showing the resolved profile and destination plus a Preview dry run listing each preflight rule and the validators that will run after import.
  • Any repeatable import path from a DCC: Houdini, Maya, Blender, 3ds Max, ZBrush, Substance
  • Bulk intake: a folder or a drag-dropped batch of meshes and textures
  • Enforcing naming and material conventions at the point of entry rather than auditing later
  • When you need provenance: what file, what settings, when, by whom
  • Previewing what an import would do before it does it
  • Don’t use it for one-off throwaway imports into a scratch folder — the pipeline’s value is consistency, and it costs a little setup.
  • Don’t use it to repair already-imported assets. It governs the boundary. For assets already in the project, use the relevant repair tool (e.g. USD & Interchange Repair Kit).
  1. Open the EQLabs Hub and search for import or io (or browse to Core → I/O).
  2. Click the tool card.

The panel is laid out as a numbered flow: 1. Source file → 2. Profile & destination → 3. Or import a whole folder, with staged multi-file intake and recent reports below.

Every import runs the same loop:

classify → resolve profile → preflight → staged import
→ validate → safe fixes → publish → provenance
StageWhat it does
ClassifyDetermines DCC source and asset type from the file
Resolve profilePicks the governing profile (see below)
PreflightChecks the file before importing — this is what can block
Staged importImports to a staging area, not straight to the destination
ValidateRuns the profile’s rules against the staged asset
Safe fixesApplies fixes the profile marks as safe, recorded as Auto-Fixed
PublishMoves the validated asset to its destination path
ProvenanceRecords source file and settings on the published asset

Staging is the important part: a file that fails validation never reaches your content folder.

ControlNotes
Import fromPath to an FBX/OBJ/glTF mesh or a texture
Browse…File picker — supports multi-select, which stages files as a batch
ControlNotes
Import profileAn explicit profile. If picked, it wins outright
Material profileHow materials are mapped
Naming profileNaming convention applied on publish
Source app (DCC)Generic / Unknown, Houdini, Maya, Blender, 3ds Max, ZBrush, Substance
Asset intentThe asset type — prop, modular, Nanite hero, texture role, character, animation
Publish toContent path the validated asset lands in, overriding the profile default

This is the one piece of behaviour worth understanding before you use the tool:

  • An explicit Import profile wins outright. Everything below is ignored.
  • Otherwise the tool composes the Source-app preset with the Asset-intent preset.
  • Generic + Auto means pure detection — the classifier decides everything.

So if an import isn’t behaving as you expect, check whether an Import profile is selected and silently overriding your Source-app and Asset-intent choices.

DCC presets carry the conventions that cause the classic import bugs:

PropertyValues
Source unitCentimeter, Meter, Inch, Foot
Up axisZ-up (Unreal, 3ds Max) · Y-up (Maya, Houdini)
HandednessLeft-handed (Unreal) · Right-handed (Houdini, Maya)

A Maya export imported as Generic is the reason a mesh arrives rotated 90° and 100× the wrong size. Setting the DCC is usually enough to fix both.

Static Mesh — Prop · Static Mesh — Modular · Static Mesh — Nanite Hero · Texture — Base Color · Texture — Normal · Texture — ORM / Masks · Skeletal Mesh — Character · Animation Clip

Texture roles matter for correctness, not just naming: a normal map imported as Base Color gets the wrong colour space and compression.

ButtonEffect
PreviewDry run — shows type, profile, destination and rules without creating anything
ImportRuns the pipeline on the selected file

Preview is the habit worth forming. It reports the resolved type, the chosen profile, the destination, and — critically — whether the file would be BLOCKED at preflight, all without touching the project.

Preview (dry run) on a normal-map TGA: detected type, composed profile, the reimport action, the preflight lines with their check codes and the validators that will run after import.
Preview (dry run) on a normal-map TGA: detected type, composed profile, the reimport action, the preflight lines with their check codes and the validators that will run after import.
ControlNotes
Source folderFolder of meshes and/or textures
Include subfoldersRecurse
Preview FolderDry-run every supported file: type, destination, and would-block
Import FolderRun the import loop on every supported file, publishing to the destination above

Preview Folder before Import Folder, always. It is the difference between discovering that half a folder is blocked now versus after it has run.

Drag files from your file browser onto the panel, or multi-select in Browse. Staged files import together as a batch.

ButtonEffect
Import selectedImport all staged files as a batch to the destination above
ClearEmpty the staged list

Per-rule results, each with a status:

StatusMeaning
PassedRule satisfied
FailedRule violated
SkippedNot applicable to this asset
Auto-FixedViolated, and the pipeline applied a safe fix

And a severity:

SeverityMeaning
InfoRecorded, no action needed
WarningWorth attention; does not stop the import
BlockerStops the import
Exception RequiredBlocked unless an explicit exception is granted

Exception Required is the deliberate escape hatch: rather than tempting people to disable a rule permanently, the pipeline demands a recorded exception for this specific case.

Results offer one-click navigation to the published assets.

Import runs write reports to Saved/EQLabsIO/Reports.

ControlEffect
Recent reportsList of recent runs
RefreshRescan the report folder
Open folderOpen the report folder in your file browser

Published assets carry provenance — the source file and settings that produced them — which is what makes a later re-import reproducible rather than a guess.

  • An explicit Import profile overrides Source app and Asset intent silently. First thing to check when a profile isn’t behaving.
  • Preview costs nothing and answers the real question. “would this be blocked?” — before anything is created.
  • Wrong scale or rotation is almost always a DCC preset problem, not an import bug. Set Source app before debugging further.
  • Textures imported under the wrong role get the wrong colour space. Normal maps are the usual casualty.
  • Blocked files are not partially imported. Staging means nothing reaches the destination — that is the design.
  • Generic + Auto is pure detection. Good for exploration, less predictable for a production pipeline where an explicit profile is the point.
Report an issue with this tool

Opens our feedback form in a new tab with the tool name pre-filled.