Product documentation · Current desktop UI

Engine and asset conversion

UI library · DCC workflows · Engine editors · Animation

Contents

Choose the conversion route

A TC asset type is not a guarantee that every foreign equivalent has a semantic converter. Use the route that matches the source:

  • Files: Assets Import…, then queue/inspect/validate the selected import.
  • Live DCC scene: connected scene/bridge workflows in Garden or Pipelines; inspect the returned hierarchy and actual geometry.
  • Exported engine data: public conversion API below. This is currently a Python workflow, not a new Convert All button.
  • TC export to another host: Export Selection… creates a target conversion plan/artifacts; inspect which outputs are directly importable and which require baking/adapters.

Imported files and scenes

Current populated Assets browser with sample skeleton, animation and pose-preset assets

Use Import Queue, import settings, source properties, References, Validate and Cook Selection to inspect the asset lifecycle. Native DCC scenes now become first-class DCC Scene assets with managed project copies, pinned hashes, provenance, references and deterministic manifests. USD stages, geometry caches and volume caches can be selected explicitly; VDB/NanoVDB are inferred as volume caches. Conversion to canonical authoring assets, cooked artifacts and correct runtime behavior remain separate milestones. Unsupported plugin components may need explicit source-editor baking rather than silent omission.

Keep original files. Reimport can update a registered source while changing its derived data. Before export to a new host, check units, axes, naming, material assignments, skeleton compatibility and animation range. Scene/DCC import capabilities are not included in the batch coverage counts below.

Exported engine asset batches

The official project-scoped Python surface is TCEditorAPI. See API reference for script setup. Instantiate it with the intended project directory and call:

from tech_connector.game_engine.assets.editor_python_api import TCEditorAPI
api = TCEditorAPI(project_directory)
coverage = api.engine_conversion_coverage("unreal")
report = api.convert_engine_asset_batch(exported_document)

exported_document must be JSON-compatible and use the versioned envelope:

{"schema":"tech_connector.engine_asset_batch.v1","provider":"unity","sections":[{"id":"animation","domain":"animation","payload":{"animation_clips":[{"name":"Walk","guid":"walk","length":1.2}]}},{"id":"intro","domain":"cinematics","payload":{"timelines":[{"name":"Intro","duration":6,"frame_rate":24}]}}]}

Supported batch domains are animation, audio, effects, data, cinematics and characters, using existing official Unreal/Unity translators. Examples of source keys are Unreal animation_sequences, submixes, data_assets, niagara_systems, level_sequences; Unity animation_clips, audio_mixers, scriptable_objects, timelines. Effects and character payloads have their own detailed contracts; do not infer a complete export from a single name field.

As of this guide update, this dispatcher has partial translators producing 14 of 80 registered TC asset types. Coverage marks all other types adapter_required for this route. The six Source-family assets preserve input ownership; the nine canonical geometry types are populated through the DCC geometry ingestion contract rather than the older exported-engine batch dispatcher. Godot and unknown providers are retained as source, not semantically converted. engine_conversion_coverage reads the installed registry, so use its result rather than treating the published counts as permanent.

Native .uasset, Unity packages/scenes and Godot resources are not arbitrary JSON. Obtain appropriate source-editor exports first. Scripts, plugin nodes, custom shaders, serialized code and cooked packages need specific adapters or baking. No general all-engine converter is promised.

Characters

The characters domain accepts tech_connector.character_export.v1 with coordinate_system: "tc". A source exporter must explicitly normalize axes, units, winding and local reference/bind transforms. The adapter does not guess those conventions.

Provide unique source IDs; named bones and parent hierarchy; explicit local reference poses; finite vertices and triangles; and exactly one named, normalized weight row per vertex. Optional normals/UV0 must match exported vertex indices. Split seam vertices need corresponding weights. Optional inverse bind matrices are retained as authoring data, with incomplete binds diagnosed.

Conversion creates linked Skeleton, Skeletal Mesh and Skin Binding assets through the official API and writes geometry. Open these in their editors to inspect hierarchy, source geometry, weight rows and dependencies. Materials, morphs, constraints, native inverse-bind consumption and deformation need further validation. Pose updates are not a replacement for rebinding a mesh.

Read results and handle gaps

Each batch import gets a unique project-contained folder with source.json and report.json. Inspect the returned source_archive path. Unknown domains and source fields survive in the archive; preservation does not make them executable TC features.

  • converted_needs_validation: assets were created; inspect and validate them.
  • needs_review: warnings or source-specific limitations need attention.
  • adapter_required: no converter exists for this provider/domain.
  • no_output: the translator created no assets; do not call this successful conversion.
  • failed: read diagnostics and any partial asset IDs. Earlier sections may already have created files.

Standalone runtime readiness stays false pending verification. Repeated imports create separate runs rather than overwriting earlier output. Foreign references across sections are not globally rewritten or verified by this dispatcher. Missing source-to-target behavior should lead to an explicit adapter task, not a silent fallback or a fabricated success.

Current high-priority gaps include material/shader graphs, physics/constraints, prefab/level references, terrain/navigation, UI and gameplay/plugin behavior. The coverage API enumerates exact missing TC type IDs. Consult the existing source/DCC import path before concluding the corresponding engine authoring capability is absent.