NameFrame
A dataset pipeline built around one idea: the engine already knows what is in the frame, so the labels are read out of it rather than drawn on top of it.
Four tools that all get mentioned when somebody asks how to make training data in Unreal. They are not four versions of the same thing: two of them render images, one of them is a remote control for the engine, and one of them builds a dataset and grades it. This page puts what each project documents about itself in one table, with the date it was read.
A dataset pipeline built around one idea: the engine already knows what is in the frame, so the labels are read out of it rather than drawn on top of it.
A rendering plugin that turns a Level Sequence into image sets: colour, depth, normals, optical flow and semantic segmentation.
A command protocol that lets an external program drive Unreal: move the camera, move objects, and ask for a view back.
A research framework for pulling ground truth out of a scene, configured in the editor rather than in code.
| NameFrame | EasySynth | UnrealCV | UnrealGT | |
|---|---|---|---|---|
| What it is for | Generating labelled computer-vision datasets end to end | Rendering image sets from a camera sequence | Connecting external code to a running Unreal world | Generating ground truth for computer-vision test data |
| Unreal versions | 5.8, verified on 5.8 | 5.5 to 5.7 | 5.6 recommended, UE4 and UE5 lineage | Not documented |
| Colour images | Yes | Yes | Yes, the lit viewmode | Yes |
| Depth | Metric, float32 metres per pixel | Yes | Yes, the depth viewmode | Yes |
| Semantic segmentation | Yes | Yes | By object colour, which you assign | Yes |
| Instance segmentation | Yes | Not documented | Yes, the object_mask viewmode | Not documented |
| Bounding boxes | Measured from the identity pass | Not documented | Not documented | Yes |
| Occlusion-aware labels | Visible pixel share per instance, and a gate on it | Not documented | Not documented | Not documented |
| YOLO and COCO export | YOLO and COCO, plus the raw dump | Camera poses as CSV, rig as ROS-format JSON | Not documented | Not documented |
| Built-in randomization | Spawn zones, exclusion zones, materials, animations, entity swapping | Not documented | You write it, through the commands | Not documented |
| Camera sampling | Sampled under constraints, with validation and retries | A Level Sequence you keyframe | You drive it, through the commands | Multi-camera setups, configured in the editor |
| Deterministic runs | Seeded, and a run can be replayed | Not documented | You implement it | Not documented |
| Dataset validation | Graded and gated before export, with a published report | Not documented | Not documented | Not documented |
| CLI and automation | CLI, REST and MCP | Not documented | The command protocol itself | Not documented |
| In-editor interface | Studio panel in the editor | Editor plugin | Commands rather than a panel | Configured through the editor UI |
| LiDAR and point clouds | Experimental raycast LiDAR | Not documented | Not documented | Not documented |
| Licence | Commercial preview | MIT | MIT | MIT |
| Maturity | New. Not on sale yet | Established, open source | Long established in research | Published 2019, small repository |
Read 27 August 2026 from each project’s own repository or documentation. Where a project’s documentation does not answer a question, the cell says not documented. That is deliberate and it is not politeness: a tool that has a feature nobody wrote down still has it, and a table that scores silence as absence is wrong about a competitor in a way its own author would spot immediately.
Two of these are MIT licensed and free to use. NameFrame is a commercial preview and is not on sale yet. If cost is the deciding factor, the decision is already made and none of the rest of this page changes it.
The closest comparison for anyone who wants images out of a camera path. EasySynth also produces optical flow and normals, which NameFrame does not.
An interface against a pipeline. UnrealCV is the better fit when your own code needs to drive the world in a loop.
The closest in intent. The practical question is which engine version you are on and how much plugin maintenance you want.
The rows are in the order they usually decide a choice. If you would rather work through them than read a table, the same list is written out as a decision in how to choose an Unreal Engine synthetic data tool.
| Row | What it is asking |
|---|---|
| What it is for | Some of these are dataset generators and some are remote control interfaces for the engine. Both are useful and they are not substitutes. |
| Unreal versions | An engine version is not a detail. A plugin built against 5.2 does not load in 5.8, and porting it is your afternoon rather than theirs. |
| Colour images | Everything produces these. It is the floor, not a feature. |
| Depth | Whether the depth is metric matters. A grayscale image of relative distance trains a different model from float metres per pixel. |
| Semantic segmentation | Every pixel labelled by class. Enough for segmentation, not enough to tell two people apart. |
| Instance segmentation | Every pixel labelled by object. This is what separates two overlapping people into two labels, and it is what boxes are derived from. |
| Bounding boxes | Where a detection dataset lives. Ask whether they are measured from the rendered object or projected from its bounds, because the second is wrong the moment anything is occluded. |
| Occlusion-aware labels | A person behind a fence is a hard label. If the tool cannot tell you how much of an object is visible, you cannot filter what your model is being asked to learn. |
| YOLO and COCO export | The difference between a dataset and a folder of images with a JSON beside it. |
| Built-in randomization | The hard part of synthetic data is not rendering 100,000 images, it is preventing them from being 100,000 pictures of the same scene. |
| Camera sampling | Whether the tool places the camera for you under constraints, or expects you to keyframe or script every viewpoint. |
| Deterministic runs | Whether the same seed gives the same dataset. Without it you cannot ablate anything, because you cannot hold the rest of the scene still. |
| Dataset validation | Whether anything checks the labels against the geometry that produced them before you train on them. |
| CLI and automation | Whether a run can be started without a person clicking in the editor. |
| In-editor interface | Whether the workflow is a panel or a script. Neither is better; they suit different people. |
| LiDAR and point clouds | Only relevant if you need it, and worth checking what is actually simulated rather than what it is called. |
| Licence | Open source you can read and change, against something supported that you pay for. |
| Maturity | How long it has existed and how many people have already hit the bugs. |
This is written by the people who make one of the tools on it, so read it that way. What we can do is keep it checkable: every row came from the other project’s own repository or documentation on the date at the top, the link is there, and a question their docs do not answer is written as not documented rather than as a missing feature.
We also have one end-to-end result and it is not flattering. A detector trained only on NameFrame frames, with no real images anywhere in training, improved on its synthetic test split and lost recall on real drone footage. It is published with the failure pictures on the experiment page. No comparison table on this site should be read as evidence that our output trains a better model, because we have not shown that.