Skip to content

Commit 1dc4c20

Browse files
authored
Merge pull request #3208 from annietllnd/data-capture-ue
New LP on Data capture with Unreal Engine
2 parents d6cb4cd + 6d565ed commit 1dc4c20

16 files changed

Lines changed: 416 additions & 0 deletions
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
title: Benefits of Neural Graphics Data Capture for game developers
3+
weight: 2
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
## Overview
10+
11+
The Neural Graphics Data Capture plugin helps you create structured datasets directly from Unreal Engine gameplay. This is useful when you want to train or evaluate neural graphics workloads, such as [Neural Super Sampling (NSS)](/learning-paths/mobile-graphics-and-gaming/nss-unreal/) and other temporal upscalers, with real scene motion, geometry, and camera behavior from your own content.
12+
13+
## Benefits of capturing data from your game content
14+
15+
Capturing from your own gameplay is useful when you want to:
16+
17+
- Fine-tune NSS on your specific game content to improve image quality.
18+
- Evaluate NSS output quality on your own scenes, motion, materials, and camera behavior.
19+
- Train NSS variants, or your own model architecture from scratch, using representative project data.
20+
21+
With this setup, you can create capture data inside Unreal Engine 5.5 without extra graphics API environment configuration. For teams iterating on model experiments, this lowers setup friction and shortens time-to-first-dataset.
22+
23+
## Common workflow for neural graphics data capture
24+
25+
A common workflow is:
26+
27+
- Capture representative gameplay clips from your project.
28+
- Export frames and metadata to a dataset folder.
29+
- Use those datasets as input to Model Gym's [NSS data generation step](https://github.com/arm/neural-graphics-model-gym/blob/main/docs/nss/nss_data_generation.md), which converts captured data into `safetensors` for training.
30+
- Tune rendering/capture settings (for example supersampling, upscaling ratio, fixed frame rate) and capture again.
31+
32+
## Learning Path objectives
33+
34+
You will:
35+
36+
- Install the plugin into a UE 5.5 C++ project.
37+
- Enable and compile the module in Visual Studio.
38+
- Add Level Blueprint nodes to start capture (`C`) and stop capture (`V`).
39+
- Run in Standalone Game mode and verify output in `Saved/NeuralGraphicsDataset`.
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
---
2+
title: Install and enable the plugin
3+
weight: 3
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
## Before you begin
10+
11+
This plugin currently supports **Unreal Engine 5.5**.
12+
13+
Use a **C++ Unreal project** so the plugin module can compile through Visual Studio.
14+
15+
## Clone the repository
16+
17+
The plugin lives in a GitHub repository. Start by cloning it:
18+
19+
```
20+
git clone https://github.com/arm/neural-graphics-data-capture-for-unreal
21+
```
22+
23+
## Add plugin files to your project
24+
25+
- Open your Unreal project folder in File Explorer.
26+
- Create a `Plugins` folder at the root of the project if it doesn't already exist.
27+
- Copy the `NeuralGraphicsDataCapture` plugin folder from the `Source` directory into your new `Plugins/` directory.
28+
29+
![Screenshot of Windows File Explorer showing the project root directory with a Plugins folder containing the NeuralGraphicsDataCapture folder. This confirms the plugin is in the correct location.#center](./images/project-plugins-folder.png "Project root with Plugins directory")
30+
31+
## Reopen project and build module
32+
33+
- Reopen the `.uproject` file.
34+
- If prompted about missing modules, select **Yes** to rebuild.
35+
36+
![Dialog box showing that the NeuralGraphicsDataCapture module is missing and asking whether to rebuild it. Select Yes to continue.#center](./images/missing-modules-rebuild-prompt.png "Missing module rebuild prompt")
37+
38+
- Build the project in Visual Studio.
39+
40+
{{% notice %}}If Unreal doesn't detect the plugin after copying files, regenerate project files and rebuild from Visual Studio.{{% /notice %}}
41+
42+
## Verify plugin is enabled
43+
44+
In Unreal Editor:
45+
46+
- Go to **Edit > Plugins**.
47+
- Search for `data cap`.
48+
- Confirm **Neural Graphics Data Capture Plugin for Unreal Engine** is enabled.
49+
50+
![Screenshot of the Unreal Engine Plugins window with the search results showing Neural Graphics Data Capture Plugin for Unreal Engine with the enabled checkbox selected. This confirms the plugin is active.#center](./images/plugin-enabled-in-editor.png "Plugin enabled in Unreal Editor")
51+
52+
Next, add the capture graph to your Level Blueprint.
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
---
2+
title: Configure Level Blueprint capture controls
3+
weight: 4
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
## Open the Level Blueprint
10+
11+
In your level:
12+
13+
- Open the **Blueprints** drop-down.
14+
- Select **Open Level Blueprint**.
15+
16+
![Screenshot of the Unreal Engine toolbar showing the Blueprints menu expanded with Open Level Blueprint option highlighted. Select this option to open the blueprint editor.#center](./images/open-level-blueprint-menu.png "Open Level Blueprint menu")
17+
18+
## Fast path: download and paste the ready-made blueprint snippet
19+
20+
On Windows, use PowerShell to download the prepared Level Blueprint snippet from this Learning Path repository:
21+
22+
```powershell
23+
wget "https://raw.githubusercontent.com/ArmDeveloperEcosystem/arm-learning-paths/main/content/learning-paths/mobile-graphics-and-gaming/neural-graphics-data-capture-unreal/assets/level_blueprint.txt" -OutFile ".\level_blueprint.txt"
24+
```
25+
26+
Then in Unreal Editor:
27+
28+
- Open `level_blueprint.txt` in a text editor and copy all text.
29+
- Select empty space in the Level Blueprint Event Graph.
30+
- Paste to create the full node graph.
31+
- Select **Compile** and **Save**.
32+
33+
{{% notice %}}
34+
If you use Git Bash with GNU `wget`, use `wget -O level_blueprint.txt "https://raw.githubusercontent.com/ArmDeveloperEcosystem/arm-learning-paths/main/content/learning-paths/mobile-graphics-and-gaming/neural-graphics-data-capture-unreal/assets/level_blueprint.txt"` instead.
35+
{{% /notice %}}
36+
37+
## Blueprint capture flow configuration
38+
39+
The snippet wires the following capture flow:
40+
41+
- Gets the **Neural Graphics Data Capture Subsystem**.
42+
- Builds `NGDCCaptureSettings` from:
43+
- `NGDCRenderingSettings`
44+
- `NGDCExportSettings`
45+
- Calls **Begin Capture** on key `C`.
46+
- Calls **End Capture** on key `V`.
47+
48+
It also sets these export defaults to match this tutorial:
49+
50+
- `Dataset Dir`: `NeuralGraphicsDataset`
51+
- `Capture Name`: `0000`
52+
53+
![Close-up screenshot of the Level Blueprint showing the capture settings nodes and the Neural Graphics Data Capture Subsystem being wired to Begin Capture and End Capture nodes. This shows how the settings are configured.#center](./images/blueprint-capture-subsystem-closeup.png "Capture settings and subsystem wiring")
54+
55+
The full event graph should look similar to this:
56+
57+
![Screenshot of the complete Level Blueprint event graph showing keyboard input C connected to Begin Capture and keyboard input V connected to End Capture, with all necessary settings nodes connected. This is the expected final blueprint configuration.#center](./images/level-blueprint-full-graph.png "Complete blueprint graph")
58+
59+
Continue to run the level in Standalone mode and test capture.
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
---
2+
title: Run capture and verify outputs
3+
weight: 5
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
## Run in Standalone Game mode
10+
11+
Use **Standalone Game** for capture:
12+
13+
- Open the play mode menu next to the **Play** button.
14+
- Select **Standalone Game**.
15+
16+
![Screenshot of the Unreal Engine Play mode dropdown menu with Standalone Game option highlighted. Select this option instead of Play in Editor to ensure correct frame dimensions.#center](./images/play-standalone-mode.png "Standalone Game mode selection")
17+
18+
{{% notice %}}
19+
If you use **New Editor Window (PIE)**, captured frame dimensions can differ from expected output sizes.
20+
{{% /notice %}}
21+
22+
## Start and stop capture
23+
24+
- Press **Play**.
25+
- Press `C` to begin capture.
26+
- Move through the level to capture frames.
27+
- Press `V` to stop capture.
28+
29+
![Screenshot of the Standalone Game window during active capture showing the game viewport with the character visible. This shows what you'll see while frames are being captured.#center](./images/standalone-capture-running.png "Capture running in Standalone mode")
30+
31+
After stopping, you should see a completion notification in the bottom right corner.
32+
33+
## Locate the dataset
34+
35+
Captured output is written under:
36+
37+
```
38+
<YourProject>/Saved/NeuralGraphicsDataset/
39+
```
40+
41+
With the defaults from this tutorial, see:
42+
43+
```
44+
<YourProject>/Saved/NeuralGraphicsDataset/0000
45+
```
46+
47+
Proceed to the next section to tune settings and troubleshoot common issues.
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
---
2+
title: Capture settings and troubleshooting
3+
weight: 6
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
## Available capture settings
10+
11+
You can tune these in `NGDCRenderingSettings` and `NGDCExportSettings`:
12+
13+
- `UpscalingRatio`: Sets the ratio between jittered input and ground-truth output. Fractional values are supported.
14+
- `SupersamplingRatio`: Controls quality/performance tradeoff while capturing.
15+
- `FixedFrameRate`: Locks capture frame rate when greater than `0`.
16+
- `CameraCutTranslationThreshold` and `CameraCutRotationThresholdDegrees`: Heuristics for marking camera cuts when needed.
17+
- `DatasetDir` and `CaptureName`: Control output folder location and capture name.
18+
19+
## Recommended system specification
20+
21+
For smooth out-of-box capture, a representative spec is:
22+
23+
- RAM: 64 GB
24+
- GPU: NVIDIA GeForce RTX 4080 (driver 572.96 or newer)
25+
- OS: 64-bit Windows or Linux
26+
27+
## Common issues and solutions
28+
29+
**Plugin not detected:**
30+
- Confirm plugin is under your project `Plugins/` directory.
31+
- Regenerate project files and rebuild.
32+
33+
**Hotkeys don't work:**
34+
- Verify Level Blueprint has `C` wired to **Begin Capture** and `V` wired to **End Capture**.
35+
36+
**Dataset folder is empty:**
37+
- Confirm capture started and that export path is writable.
38+
39+
**Stutter or instability:**
40+
- Lower `SupersamplingRatio` and test again.
41+
42+
**Unexpected output size:**
43+
- Use **Standalone Game** mode instead of **New Editor Window (PIE)**.
44+
45+
## What you've learned
46+
47+
You've successfully set up a workflow to capture neural graphics datasets directly from Unreal Engine 5.5 gameplay. You can now:
48+
49+
- Generate training data from your own game content without graphics API configuration
50+
- Capture representative gameplay sequences with real motion and camera behavior
51+
- Export frame datasets ready for use with Model Gym's NSS data generation pipeline
52+
- Tune capture settings to match your specific quality and performance requirements
53+
54+
Use this repeatable workflow for model experimentation and evaluation in your neural graphics pipeline.
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
---
2+
title: Generate neural graphics datasets with Neural Graphics Data Capture in Unreal Engine
3+
description: Learn how to capture high-quality frame datasets from Unreal Engine 5.5 gameplay for training and evaluating neural graphics models like Neural Super Sampling.
4+
5+
minutes_to_complete: 30
6+
7+
who_is_this_for: This Learning Path is for Unreal Engine developers who want to generate high-quality frame datasets for training and evaluating neural graphics models.
8+
9+
learning_objectives:
10+
- Understand why Neural Graphics Data Capture is useful in a neural graphics workflow.
11+
- Install and enable the Neural Graphics Data Capture plugin in Unreal Engine 5.5.
12+
- Configure a Level Blueprint to start and stop capture with hotkeys.
13+
- Run Standalone capture and verify exported dataset outputs.
14+
15+
prerequisites:
16+
- Windows 11
17+
- Unreal Engine 5.5 installed
18+
- Visual Studio with C++ game development tools
19+
- A C++ Unreal project (such as the Third Person template)
20+
21+
author:
22+
- Annie Tallund
23+
- Richard Burton
24+
25+
### Tags
26+
skilllevels: Introductory
27+
subjects: Graphics
28+
armips:
29+
- Mali
30+
- Immortalis
31+
tools_software_languages:
32+
- Unreal Engine
33+
- Visual Studio
34+
operatingsystems:
35+
- Windows
36+
37+
38+
39+
further_reading:
40+
- resource:
41+
title: Neural Graphics Data Capture Plugin for Unreal Engine
42+
link: https://github.com/arm/neural-graphics-data-capture-for-unreal
43+
type: website
44+
- resource:
45+
title: Neural Graphics Development Kit
46+
link: https://developer.arm.com/mobile-graphics-and-gaming/neural-graphics
47+
type: website
48+
- resource:
49+
title: Neural Super Sampling in Unreal Engine
50+
link: /learning-paths/mobile-graphics-and-gaming/nss-unreal/
51+
type: documentation
52+
- resource:
53+
title: Generate Unreal Engine project files for your IDE
54+
link: https://dev.epicgames.com/documentation/en-us/unreal-engine/how-to-generate-unreal-engine-project-files-for-your-ide
55+
type: documentation
56+
- resource:
57+
title: Neural Graphics Model Gym - NSS Data Generation
58+
link: https://github.com/arm/neural-graphics-model-gym/blob/main/docs/nss/nss_data_generation.md
59+
type: website
60+
61+
62+
63+
### FIXED, DO NOT MODIFY
64+
# ================================================================================
65+
weight: 1 # _index.md always has weight of 1 to order correctly
66+
layout: "learningpathall" # All files under learning paths have this same wrapper
67+
learning_path_main_page: "yes" # This should be surfaced when looking for related content. Only set for _index.md of learning path content.
68+
---
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
# ================================================================================
3+
# FIXED, DO NOT MODIFY THIS FILE
4+
# ================================================================================
5+
weight: 21 # Set to always be larger than the content in this path to be at the end of the navigation.
6+
title: "Next Steps" # Always the same, html page title.
7+
layout: "learningpathall" # All files under learning paths have this same wrapper for Hugo processing.
8+
---

0 commit comments

Comments
 (0)