Kovati Docs

Concepts

Definitions, takes, staleness, and where generated assets land.

Documented in depthMeshForge0.3.0Open source

The three assets

MeshForge adds three asset types, all made the same way: Content Browser ▸ right-click ▸ Automation Forge ▸ MeshForge.

The Content Browser create menu cascading three levels. Automation Forge is highlighted among engine categories such as Animation, Blueprint and Material. The second column lists FaceForge, MeshForge, MontageForge, MotionForge, PerformanceForge, SpeechForge and SurfaceForge, with MeshForge highlighted. The third column, headed MESHFORGE, offers Garment Bone Profile, Mesh Definition and Mesh Workflow.
Three entries, and only one of them is the thing you make every day. A Mesh Workflow is a definition's starting shape saved for reuse; a Garment Bone Profile is a short list of bone rules.
AssetWhat it is
Mesh DefinitionThe unit of work — one thing you are making
Mesh WorkflowA definition's stages, pipelines and post chain, saved to start from. See workflows
Garment Bone ProfileWhich body bones a garment may follow. Only useful with MeshForgeGarment

Garment Bone Profile appears here even though it belongs to a different plugin. The branch is assembled from whatever is installed, so a project without the garment plugin simply sees two entries — and a project with a plugin of its own sees that plugin's assets alongside.

The asset editor

A Mesh Definition opens with five tabs:

TabWhat it is
StagesThe five stages as collapsible boxes, numbered among the stages in use, each with a status badge
SettingsThe whole asset as a details panel, in pipeline order
ImagesEvery generated picture
MeshThe viewer — A/B compare, skinned takes beside static ones
TakesThe library, read from disk

A generator's pictures sit at the top of its settings; a step's Advanced actions sit under the settings they work on.

The Images tab of a Mesh Definition for the SEC-17 rifle. A line at the top reads: the generator will be shown T_MSD_Pistol_41a52ebb, plus 3 extra views. It can read up to 3. A large white-background render of the rifle fills the tab, with previous and next arrows. Beneath it: 'Added — 1,448 × 1,086' and, in green, 'Main image — this is what the generator is shown'. A strip of four thumbnails all marked Added sits below, with the counter '1 of 4' and buttons for Is the main image, Add as view, Find and Remove.
'It can read up to 3' is the provider's own limit, stated where you choose pictures rather than discovered when a fourth is ignored. The green line marks which one the generator actually sees — the rest are extra views, and which is which is a choice, not an ordering accident.

Takes are read from disk, not from the definition

The Takes tab reads the library from the provenance vault on disk rather than from the definition's candidate list.

That distinction matters: a take removed from the list can still be re-imported. The list is a view; the vault is the record.

The originating vendor task is carried separately from "what ran last", so a post step no longer erases where a mesh came from.

The Takes tab of a Mesh Definition. A line reads: 3 takes in Forge/Library, 3 still on this disk. A cleaned take keeps its record and can be fetched again where the provider's ids are stable. The table has columns When, Made by, Size, Took, Cost and On disk, listing one Meshy meshy-7 take at 66 MB that took 2m 28s and cost 30 credits, and two Tripo v3.1 takes at 56 MB and 1 MB costing about $0.60 and $0.40. The selected take's detail pane below reports its id, provider, that it ran on the provider's hardware, and 'Cost 30 credits — this provider publishes no rate, so there is no dollar figure'. It then lists the main image and three view images by full content path, each with a blake3 hash, followed by the settings that were sent.
Every take keeps what produced it: the provider and model, the wall-clock time, the cost in that vendor's own unit, and a blake3 hash of each input picture. Two vendors appear in one definition's history — Tripo drew the references, Meshy built the mesh that shipped.

"This provider publishes no rate, so there is no dollar figure." One vendor bills in credits and one in dollars, and the record says which rather than inventing a conversion. A cost you cannot state honestly is better left in the unit you were actually charged in.

Staleness

The five stages form a hash chain. Editing an early stage marks everything after it stale — and does not discard what it made.

MeshForge.VerifyStageHashes checks the chain if you suspect it.

The viewer

An advanced preview scene with A/B compare and a normalising Align.

  • Skinned takes are shown beside static ones, with bone count and triangle/vertex counts read from the authored data.
  • A Floor checkbox, off by default, remembered per user.
  • Add-ons can put a control in its bar and draw meshes beside the subject — the garment plugin's Character is the first.

Both sides of the comparison come from one picker, and it holds everything the definition has ever imported:

The viewer's output picker open, listing six entries newest first: 'post-processed — take sculpt-6'; 'post-processed — Blender' at 4:50:34 PM; 'post-processed — Tripo' at 4:46:34 PM; 'Tripo — P2-20260801' at 4:38:42 PM, ticked and marked current; 'Meshy — meshy-7.1' at 4:31:08 PM; and another 'Tripo — P2-20260801' at 4:25:07 PM. A tooltip beneath reads: 'Which mesh to look at. Every take this definition has imported is here, not only the last one.'
Generated takes and post-processed outputs in one timestamped list — two Tripo runs, a Meshy run, a retexture, a Blender round trip and a sculpt. Each names what made it, so 'the Blender one' is a thing you can point at six weeks later.

"Every take this definition has imported is here, not only the last one." That is what makes the comparison below possible at all: nothing is replaced when a new result arrives, so any two points in a definition's history can be put side by side — including a raw generation against what post-processing later did to it.

The Mesh viewer with Compare A/B and Align both ticked. A nuclear battery prop, labelled NB-7, is split down the middle by a vertical wipe: the left half is the raw Tripo take, the right half the post-processed version, visibly darker and more weathered. Pickers above name A as 'Tripo — P2-20260801' and B as 'post-processed — Tripo', with a Swap button between them. The status bar reads A at 18,907 triangles and 26,102 vertices, B at 18,907 triangles and 26,131 vertices, both 1 material and 54 by 80 by 100 cm.
The same prop before and after a retexture, wiped down the middle. Both counts are printed because the comparison is not only visual — here the triangles are identical and the vertices differ by 29, which is a UV change, not a geometry change.

Identical triangles and different vertices is the signature of a UV edit. Splitting a UV island duplicates vertices along the seam without touching the surface, so a step that claims to have only retextured something should move the second number and not the first. If the triangle count moved too, the step did more than it said.

Anything drawn beside the mesh switches the viewer to true space — nothing centred or scaled — and Align is greyed with the reason. Comparing a garment against a body is meaningless if one of them has been normalised.

Where things land

Under the output root (default /Game/_Generated/Mesh):

The Colony project's Content Browser at Content/_Generated/Mesh/Definitions, showing 89 items. Most tiles are folders named after a definition with a _Generated suffix — MSD_AirMask_Generated, MSD_CryoSuit_Generated, MSD_Garment_Jacket_Generated and so on — alongside a Colony subfolder. The tree on the left shows _Generated split into Face, Mesh, Motion, Performance, Pipelines and Speech, with Mesh expanded into Definitions, Images, Imported, Meshes, References and Tests.
Every definition gets its own output folder beside it, named after it. That is what makes a take deletable and a definition movable — and what stops a generated mesh from ever being mistaken for an authored one at a glance.

Every generated picture becomes a UTexture2D with its original pixels kept in the texture source, so a reference image is re-usable rather than a compressed approximation of itself.

The one exception: a provider-free import of a file already on disk (MeshForge.ImportFile) writes to <root>/Meshes.

Generated content must be organised by kind. The per-definition, per-take folder layout is not tidiness — it is what makes a take deletable, a definition movable, and a generated folder distinguishable from an authored one at a glance.

Content Browser tiles

A definition's tile shows its newest mesh — skinned or static — or its main image, stored in the asset so it survives a restart.

A grid of Mesh Definition tiles in the Content Browser, each rendering its own generated result: battery packs, trousers, shirts and a wardrobe shirt, a cryo suit, two dress jackets on bodies, bodysuits, a jacket and a T-shirt, chest and leg armour, a pistol, a toolbox, backpacks, ammunition crates, canisters and retextured shirts. Four tiles named MSD_Q_Draft, MSD_Q_High, MSD_Q_Standard and MSD_Q_Ultra show the plain default asset icon instead. Every tile is labelled Mesh Definition.
Every definition renders what it actually made, so a folder of them is browsable by eye rather than by name. The four plain icons are drafts that have generated nothing yet — an empty tile means an empty definition, not a missing thumbnail.

Custom thumbnails in Unreal can save empty. If a tile goes blank on an asset you know has a mesh, rebuild rather than assuming the definition broke: MeshForge.RebuildThumbnails [folder].

MeshForge.RebuildThumbnails [folder] regenerates them.

Custom thumbnails have a trap in Unreal generally: they can save empty. If a tile goes blank, rebuild rather than assuming the asset is broken.

Settings

WhereWhat
Project Settings ▸ Plugins ▸ MeshForgeDefault provider and model, default workflow, output root, staging directory, control and finish defaults, Nanite threshold, poll interval, job timeout, auto-import of the first success. Committed
Editor Preferences ▸ Automation Forge ▸ MeshForgePer-user provider override, Blender executable, preview floor. Never committed
The Keys pageProvider keys. There is no key field in MeshForge's own preferences

Console: MeshForge.ImportFile, MeshForge.ListProviders, MeshForge.TestConnection, MeshForge.RebuildThumbnails, MeshForge.VerifyStageHashes.

Typed, declarative pipelines

A vendor's real settings are reflected properties, so the details panel and an agent's option list come from the same reflection — not two lists that can disagree.

Provider-wide extras carry their own type, allowed values, default, tooltip and which quality steps they apply to.

Requirements

Editor-only, UE 5.8. Depends on the engine's own GLTFExporter and InterchangeEditor plugins.

Generated meshes lose small print. Text, fine engraving and thin lettering rarely survive generation at any quality setting. If a prop needs legible text, plan to add it as a material rather than expecting geometry.

On this page