MeshFlux
Build, update and render runtime-generated meshes with LODs, sections, materials and collision, from Blueprints or C++, with fast in-place updates and async building.
Highlights
All 12 features βMeshFlux adds a mesh component for geometry that is created or changed while the game runs. You describe a mesh as streams of data (positions, normals, tangents, colors, UVs, triangles and poly groups), hand it to the component, and MeshFlux uploads it to the GPU, splits it into sections and material slots, and builds collision for it.
Two mesh types cover the common workflows. MeshFlux Simple gives full control over vertex formats, LODs and sections, and can update vertex data in place on the GPU when only values change. MeshFlux Procedural mirrors the familiar procedural-mesh API (Create Mesh Section, Update Mesh Section, parallel arrays), so existing graphs and code move over with little more than a find-and-replace.
Use it for procedural terrain and buildings, runtime level editors, mesh deformation, voxel and chunk systems, debug and data visualisation, or importing geometry at runtime. Meshes can be generated on worker threads, converted from or baked into Static Mesh assets, and given simple or per-triangle collision.
MeshFlux is part of the Alpha XP utilities collection for Unreal Engine 5.8. Every feature is exposed to Blueprints and C++, it ships with styled HTML documentation, and it is compiled and verified warning-free against a clean UE 5.8 project.
Key features
- Runtime mesh component and actor (MeshFluxComponent, MeshFluxActor) with Blueprint and
- Simple mesh type: stream sets, mesh builder, flexible vertex formats, up to 8 UV
- Procedural mesh type with Create/Update/Clear Mesh Section and helper nodes for boxes,
- Multiple LODs with per-LOD screen size, multiple sections and material slots,
- In-place GPU updates for dynamic buffer sets (only changed streams are uploaded) and
- Asynchronous building helpers for generating geometry off the game thread
- Simple collision (box, sphere, capsule, tapered capsule, convex hull) and per-triangle
- Static Mesh conversion: copy Static Meshes into MeshFlux at runtime, bake MeshFlux
- Ray tracing support, motion vectors for deforming geometry, distance-field and Lumen
- Details panel with live mesh statistics and a Create Static Mesh button
- Debug console variables for normals, tangents, binormals and vertex colors
- 16 C++ example actors and 10 example Blueprints
Blueprint & C++ API
The API is organised into these entry points:
| Class | Type | Nodes | Use it for |
|---|---|---|---|
| MeshFluxSimpleGeometryFunctionLibrary | Function library | 30 | Static nodes β callable from anywhere, no object needed. |
| MeshFluxStream | Object | 26 | Create with Construct Object or from C++. |
| MeshFluxManaged | Mesh Flux | 23 | UObject-layer base for managed MeshFlux subclasses (Simple, Procedural). |
| MeshFluxLocalBuilder | Mesh Flux Stream Set | 17 | |
| MeshFlux | Object | 16 | Create with Construct Object or from C++. |
| MeshFluxBlueprintFunctionLibrary | Function library | 16 | Static nodes β callable from anywhere, no object needed. |
| MeshFluxProcedural | Mesh Flux Managed | 15 | PMC-parity UObject leaf for MeshFlux. Mirrors UProceduralMeshComponent's Blueprint surface so PMC users can migrate by find-and-replace. |
| MeshFluxStreamUtils | Function library | 11 | Static nodes β callable from anywhere, no object needed. |
| MeshFluxSimple | Mesh Flux Managed | 9 | |
| MeshFluxStreamPool | Object | 8 | An object pool for reusing MeshFlux Streams, StreamSets, and MeshBuilders |
| + 7 more classes | Function libraries & objects | 28 | Grouped by feature in the node tables below. |
Callable runs when executed Β· Pure no exec pin, returns a value
MeshFlux 61
| Node | Type | Available on |
|---|---|---|
| Calc Tex Coord At Location(Body Space Location: Vector, Element Index: Integer, Face Index: Integer, UV Channel: Integer) β Boolean, UV | Callable | Object |
| Reset | Callable | Object |
| Get Local Bounds() β Box Sphere Bounds | Callable | Object |
| Add LOD(Config: Mesh Flux LOD Config) β Mesh Flux LOD Key | Callable | Object |
| Update LOD Config(LOD Key: Mesh Flux LOD Key, Config: Mesh Flux LOD Config) | Callable | Object |
| Remove Trailing LOD | Callable | Object |
| Setup Material Slot(Material Slot: Integer, Slot Name: Name, In Material: Material Interface) | Callable | Object |
| Set Num Material Slots(New Num Slots: Integer) | Callable | Object |
| Get Material Index(Material Slot Name: Name) β Integer | Callable | Object |
| Get Material Slot Name(Index: Integer) β Name | Callable | Object |
| Is Material Slot Name Valid(Material Slot Name: Name) β Boolean | Callable | Object |
| Get Material Slot(Slot Index: Integer) β Mesh Flux Material Slot | Callable | Object |
| Get Num Materials() β Integer | Callable | Object |
| Get Material Slot Names() β Array of Name | Callable | Object |
| Get Material Slots() β Array of Mesh Flux Material Slot | Callable | Object |
| Get Material(Slot Index: Integer) β Material Interface | Callable | Object |
| Make Stream(Stream Key: Mesh Flux Stream Key, Stream Type: Mesh Flux Simple Stream Type, Num Elements: Integer) β Mesh Flux Stream | Callable | Actor |
| Make Stream Set() β Mesh Flux Stream Set | Callable | Actor |
| Make Mesh Builder(Wanted Tangents: Mesh Flux Simple Stream Config, Wanted Tex Coords: Mesh Flux Simple Stream Config, Wants 32 Bit Indices: Boolean, Wanted Poly Group Type: Mesh Flux Simple Stream Config, Wants Colors: Boolean, β¦) β Mesh Flux Local Builder | Callable | Actor |
| Should Serialize Mesh Data() β Boolean | Callable | Mesh Flux |
| Set Should Serialize Mesh Data(New Should Serialize Mesh Data: Boolean) | Callable | Mesh Flux |
| Get Buffer Sets(LOD Key: Mesh Flux LOD Key) β Array of Mesh Flux Buffer Set Key | Callable | Mesh Flux |
| Get Section Groups(LOD Key: Mesh Flux LOD Key) β Array of Mesh Flux Buffer Set Key | Callable | Mesh Flux |
| CreateSection(Section Key: Mesh Flux Section Key, Config: Mesh Flux Section Config, Stream Range: Mesh Flux Stream Range, Should Create Collision: Boolean, On Complete: Mesh Flux Managed Completion Callback) | Callable | Mesh Flux |
| UpdateSectionConfig(Section Key: Mesh Flux Section Key, Config: Mesh Flux Section Config, Should Create Collision: Boolean, On Complete: Mesh Flux Managed Completion Callback) | Callable | Mesh Flux |
| Get Sections In Buffer Set(Buffer Set Key: Mesh Flux Buffer Set Key) β Array of Mesh Flux Section Key | Callable | Mesh Flux |
| Get Sections In Group(Section Group Key: Mesh Flux Buffer Set Key) β Array of Mesh Flux Section Key | Callable | Mesh Flux |
| RemoveSection(Section Key: Mesh Flux Section Key, On Complete: Mesh Flux Managed Completion Callback) | Callable | Mesh Flux |
| RemoveBufferSet(Buffer Set Key: Mesh Flux Buffer Set Key, On Complete: Mesh Flux Managed Completion Callback) | Callable | Mesh Flux |
+ 32 more MeshFlux nodes β full node reference
MeshFluxActor 1
| Node | Type | Available on |
|---|---|---|
| Get Mesh Flux Component() β Mesh Flux Component | Callable | Actor |
Collision 3
| Node | Type | Available on |
|---|---|---|
| Find Collision UV Mesh Flux(Hit: Hit Result, UV Channel: Integer) β Boolean, UV | Callable | Static |
| Cook Convex Hull() β Convex Hull | Callable | Static |
| Cook Complex Mesh() β Collision Mesh | Callable | Static |
Spheres 6
| Node | Type | Available on |
|---|---|---|
| Add Sphere(Simple Geometry: PARAM(ref) F Mesh Flux Simple Geometry, In Sphere: Mesh Flux Collision Sphere) β Mesh Flux Simple Geometry, Out Index | Callable | Static |
| Insert Sphere(Simple Geometry: PARAM(ref) F Mesh Flux Simple Geometry, Index: Integer, In Sphere: Mesh Flux Collision Sphere) β Mesh Flux Simple Geometry, Success | Callable | Static |
| Get Sphere By Name(Simple Geometry: PARAM(ref) F Mesh Flux Simple Geometry, Sphere Name: Name) β Mesh Flux Simple Geometry, Success, Out Sphere | Callable | Static |
+ 3 more Spheres nodes β full node reference
Boxes 6
| Node | Type | Available on |
|---|---|---|
| Add Box(Simple Geometry: PARAM(ref) F Mesh Flux Simple Geometry, In Box: Mesh Flux Collision Box) β Mesh Flux Simple Geometry, Out Index | Callable | Static |
| Insert Box(Simple Geometry: PARAM(ref) F Mesh Flux Simple Geometry, Index: Integer, In Box: Mesh Flux Collision Box) β Mesh Flux Simple Geometry, Success | Callable | Static |
| Get Box By Name(Simple Geometry: PARAM(ref) F Mesh Flux Simple Geometry, Box Name: Name) β Mesh Flux Simple Geometry, Success, Out Box | Callable | Static |
+ 3 more Boxes nodes β full node reference
Capsules 6
| Node | Type | Available on |
|---|---|---|
| Add Capsule(Simple Geometry: PARAM(ref) F Mesh Flux Simple Geometry, In Capsule: Mesh Flux Collision Capsule) β Mesh Flux Simple Geometry, Out Index | Callable | Static |
| Insert Capsule(Simple Geometry: PARAM(ref) F Mesh Flux Simple Geometry, Index: Integer, In Capsule: Mesh Flux Collision Capsule) β Mesh Flux Simple Geometry, Success | Callable | Static |
| Get Capsule By Name(Simple Geometry: PARAM(ref) F Mesh Flux Simple Geometry, Capsule Name: Name) β Mesh Flux Simple Geometry, Success, Out Capsule | Callable | Static |
+ 3 more Capsules nodes β full node reference
Tapered Capsules 6
| Node | Type | Available on |
|---|---|---|
| Add Tapered Capsule(Simple Geometry: PARAM(ref) F Mesh Flux Simple Geometry, In Tapered Capsule: Mesh Flux Collision Tapered Capsule) β Mesh Flux Simple Geometry, Out Index | Callable | Static |
| Insert Tapered Capsule(Simple Geometry: PARAM(ref) F Mesh Flux Simple Geometry, Index: Integer, In Tapered Capsule: Mesh Flux Collision Tapered Capsule) β Mesh Flux Simple Geometry, Success | Callable | Static |
| Get Tapered Capsule By Name(Simple Geometry: PARAM(ref) F Mesh Flux Simple Geometry, Tapered Capsule Name: Name) β Mesh Flux Simple Geometry, Success, Out Tapered Capsule | Callable | Static |
+ 3 more Tapered Capsules nodes β full node reference
Convex Hulls 6
| Node | Type | Available on |
|---|---|---|
| Add Convex(Simple Geometry: PARAM(ref) F Mesh Flux Simple Geometry, In Convex Hull: Mesh Flux Collision Convex) β Mesh Flux Simple Geometry, Out Index | Callable | Static |
| Insert Convex(Simple Geometry: PARAM(ref) F Mesh Flux Simple Geometry, Index: Integer, In Convex Hull: Mesh Flux Collision Convex) β Mesh Flux Simple Geometry, Success | Callable | Static |
| Get Convex By Name(Simple Geometry: PARAM(ref) F Mesh Flux Simple Geometry, Convex Hull Name: Name) β Mesh Flux Simple Geometry, Success, Out Convex Hull | Callable | Static |
+ 3 more Convex Hulls nodes β full node reference
MeshFluxComponent 5
| Node | Type | Available on |
|---|---|---|
| Should Replicate Mesh Data() β Boolean | Callable | Mesh Component |
| Set Replicate Mesh Data(New Replicate Mesh Data: Boolean) | Callable | Mesh Component |
| Set Mesh Flux(New Mesh: Mesh Flux) | Callable | Mesh Component |
+ 2 more MeshFluxComponent nodes β full node reference
Key 14
| Node | Type | Available on |
|---|---|---|
| LODIndex to LODKey(LOD Index: Integer) β Mesh Flux LOD Key | Pure | Static |
| Make LOD Key(LOD Index: Integer) β Mesh Flux LOD Key | Pure | Static |
| Make Buffer Set Key Unique(LOD Key: Mesh Flux LOD Key) β Mesh Flux Buffer Set Key | Pure | Static |
| Make Buffer Set Key Indexed(LOD Key: Mesh Flux LOD Key, Buffer Set Index: Integer) β Mesh Flux Buffer Set Key | Pure | Static |
| Make Buffer Set Key Named(LOD Key: Mesh Flux LOD Key, Group Name: Name) β Mesh Flux Buffer Set Key | Pure | Static |
| Make Section Group Key Unique(LOD Key: Mesh Flux LOD Key) β Mesh Flux Buffer Set Key | Pure | Static |
| Make Section Group Key Indexed(LOD Key: Mesh Flux LOD Key, Section Group Index: Integer) β Mesh Flux Buffer Set Key | Pure | Static |
+ 7 more Key nodes β full node reference
Stream 2
| Node | Type | Available on |
|---|---|---|
| Make Section Key For Polygon Group(Section Group Key: Mesh Flux Buffer Set Key, Polygon Group: Integer) β Mesh Flux Section Key | Pure | Static |
| Make Stream Range(Vertices Lower Inclusive: Integer, Vertices Upper Exclusive: Integer, Indices Lower Inclusive: Integer, Indices Upper Exclusive: Integer) β Mesh Flux Stream Range | Pure | Static |
MeshFlux βΊ Procedural 22
| Node | Type | Available on |
|---|---|---|
| Initialize Mesh Flux Procedural(Owner: Mesh Flux Component) β Mesh Flux Procedural | Callable | Mesh Flux Managed |
| Create Mesh Section(Section Index: Integer, Vertices: Array of Vector, Triangles: Array of Integer, Normals: Array of Vector, UV 0: Array of Vector 2D, β¦) | Callable | Mesh Flux Managed |
| Create Mesh Section (LinearColor)(Section Index: Integer, Vertices: Array of Vector, Triangles: Array of Integer, Normals: Array of Vector, UV 0: Array of Vector 2D, β¦) | Callable | Mesh Flux Managed |
| Update Mesh Section(Section Index: Integer, Vertices: Array of Vector, Normals: Array of Vector, UV 0: Array of Vector 2D, Vertex Colors: Array of Color, β¦) | Callable | Mesh Flux Managed |
| Update Mesh Section (LinearColor)(Section Index: Integer, Vertices: Array of Vector, Normals: Array of Vector, UV 0: Array of Vector 2D, UV 1: Array of Vector 2D, β¦) | Callable | Mesh Flux Managed |
| Get Mesh Section(Section Index: Integer) β Boolean, Vertices, Triangles, Normals | Callable | Mesh Flux Managed |
| Clear Mesh Section(Section Index: Integer) | Callable | Mesh Flux Managed |
| Clear All Mesh Sections | Callable | Mesh Flux Managed |
| Set Mesh Section Visible(Section Index: Integer, New Visibility: Boolean) | Callable | Mesh Flux Managed |
| Is Mesh Section Visible(Section Index: Integer) β Boolean | Callable | Mesh Flux Managed |
| Get Num Sections() β Integer | Callable | Mesh Flux Managed |
+ 11 more MeshFlux βΊ Procedural nodes β full node reference
Conversion 1
| Node | Type | Available on |
|---|---|---|
| UPARAM(Display Name) | Callable | Static |
MeshData 56
| Node | Type | Available on |
|---|---|---|
| Append Box Mesh(Stream Set: Mesh Flux Stream Set, Box Radius: Vector, Box Transform: Transform, New Material Group: Integer, Color: Linear Color) β Mesh Flux Stream Set | Callable | Static |
| Get Num() β Integer, Builder | Callable | Object |
| Is Index Valid(Index: Integer) β Boolean, Builder | Callable | Object |
| Is Empty() β Boolean, Builder | Callable | Object |
| Reserve(Expected Size: Integer) β Builder | Callable | Object |
| Shrink() β Builder | Callable | Object |
| Empty(Expected Size: Integer) β Builder | Callable | Object |
| Set Num Uninitialized(New Num: Integer) β Builder | Callable | Object |
| Set Num Zeroed(New Num: Integer) β Builder | Callable | Object |
| Add Uninitialized(Num To Add: Integer) β Integer, Builder, Row | Callable | Object |
| Add Zeroed(Num To Add: Integer) β Integer, Builder, Row | Callable | Object |
| Edit Row(Index: Integer) β Mesh Flux Stream Row Ptr, Builder | Callable | Object |
| Add Int(New Value: Integer) β Integer, Builder, Row | Callable | Object |
| Add Float(New Value: Float) β Integer, Builder, Row | Callable | Object |
| Add Vector 2(New Value: Vector 2D) β Integer, Builder, Row | Callable | Object |
| Add Vector 3(New Value: Vector) β Integer, Builder, Row | Callable | Object |
| Add Vector 4(New Value: Vector 4) β Integer, Builder, Row | Callable | Object |
| Set Int(Index: Integer, New Value: Integer) β Builder, Row | Callable | Object |
| Set Float(Index: Integer, New Value: Float) β Builder, Row | Callable | Object |
| Set Vector 2(Index: Integer, New Value: Vector 2D) β Builder, Row | Callable | Object |
| Set Vector 3(Index: Integer, New Value: Vector) β Builder, Row | Callable | Object |
| Set Vector 4(Index: Integer, New Value: Vector 4) β Builder, Row | Callable | Object |
| Get Int(Index: Integer) β Integer, Builder, Row | Callable | Object |
| Get Float(Index: Integer) β Float, Builder, Row | Callable | Object |
| Get Vector 2(Index: Integer) β Vector 2D, Builder, Row | Callable | Object |
| Get Vector 3(Index: Integer) β Vector, Builder, Row | Callable | Object |
+ 30 more MeshData nodes β full node reference
Options & enums
| Enum | Values |
|---|---|
| Section Draw Type | Static Dynamic |
| Collision Update Result | Unknown Updated Ignored Error |
| Proxy Update Status | No Proxy No Update Updated |
| Outcome Pins | Failure Success |
| Stream Type | Unknown Vertex Index |
| Simple Stream Type | Unknown Int 16 U Int 16 Int 32 U Int 32 Float Vector 2 Vector 3 Half Vector 2 Packed Normal Packed RGBA 16 N Triangle 16 Triangle 32 |
| Simple Stream Config | None Normal High Precision |
| Example Collision Mode | Simple Complex |
| Fast Update Mode | Full Grid Fast In Place Middle Band Ranged |
Compatibility
One ready-made build per engine version is included in the download β copy the one that matches your project.
| Platform | Supported in |
|---|---|
| Windows | Editor & packaged |
| Module | Type | Loading phase |
|---|---|---|
| MeshFlux | Runtime | PostConfigInit |
| MeshFluxEditor | Editor | Default |
| MeshFluxExamples | Runtime | Default |
Technical details
| Code modules | MeshFlux (Runtime), MeshFluxEditor (Editor), MeshFluxExamples (Runtime) |
|---|---|
| Blueprints | 10 Β· C++ classes: 35 |
| Network replicated | Yes |
| Development platforms | Windows: Yes, Mac: Not verified |
| Target build platforms | Win64 |
| Third-party software | No |
| Engine versions | Unreal Engine 5.8 β a build for each is included |
| C++ classes | 35 + 30 structs |
| Blueprint nodes | 195 |
| Documentation | Documentation.html (in the download) |
| Download | MeshFlux.zip Β· 681 KB |
| Version | v1.0.0 |
What's in the download
| File | What it is |
|---|---|
| MeshFlux 5.8.zip | Plugin build for Unreal Engine 5.8 |
| Documentation.html | Documentation (open in a browser) |
Quick start
- Unzip the download and pick the build that matches your engine (5.8).
- Copy the MeshFlux folder into your project's Plugins/ folder (create it if needed).
- Open the project, enable MeshFlux under Edit βΊ Plugins and restart the editor.
- Right-click in any Blueprint graph and search MeshFlux β or include the public headers from C++.
- Package for your target platform (Windows).
Good to know
Built and verified warning-free for Unreal Engine 5.8. The component replicates its mesh-object reference, but mesh geometry is not sent over the network: build the mesh on every machine (the examples do this in the construction script). The runtime modules have no platform restrictions; platforms other than Win64 are supported by the code but not verified by Alpha XP. Developed and maintained by Alpha XP.
Everything included
- Runtime mesh component and actor (MeshFluxComponent, MeshFluxActor) with Blueprint andβ¦
- Simple mesh type: stream sets, mesh builder, flexible vertex formats, up to 8 UVβ¦
- Procedural mesh type with Create/Update/Clear Mesh Section and helper nodes for boxes,β¦
- Multiple LODs with per-LOD screen size, multiple sections and material slots,β¦
- In-place GPU updates for dynamic buffer sets (only changed streams are uploaded) andβ¦
- Asynchronous building helpers for generating geometry off the game thread
- Simple collision (box, sphere, capsule, tapered capsule, convex hull) and per-triangleβ¦
- Static Mesh conversion: copy Static Meshes into MeshFlux at runtime, bake MeshFluxβ¦
- Ray tracing support, motion vectors for deforming geometry, distance-field and Lumenβ¦
- Details panel with live mesh statistics and a Create Static Mesh button
- Debug console variables for normals, tangents, binormals and vertex colors
- 16 C++ example actors and 10 example Blueprints
Platforms
Requirements
- Unreal Engine 5.8
- Develop on Windows (Win64)
- Blueprints and C++
In the download
Personal
One non-commercial project
- 1 activation seat
- 1 year of updates
- One end product
- Non-commercial use
- Community support
- 14-day refund window
Commercial
Ship paid products
- 5 activation seats
- 1 year of updates
- One paid end product
- Unlimited end users
- Priority support
- Source files
- 14-day refund window
Extended
Resell & white-label
- Unlimited activation seats
- Lifetime updates
- Unlimited end products
- White-label & resell
- 1-hour SLA
- Seat-free team use
- 14-day refund window
One purchase per product, no subscription. Each licence comes with a signed key β 1 seat on Personal, 5 seats on Commercial, unlimited seats on Extended. Paid licences can be refunded within 14 days from your order page.
- v1.0.0Latest
- Unreal Engine 5.8
- Blueprint and C++ API, HTML documentation
Be the first to review MeshFlux β reviews come from customers who bought it, so every one is a verified purchase.
Frequently asked
How do I get the files after paying?
Straight after checkout you land on your order page with the download button and your licence key. A receipt is emailed to you, and every order stays in My library.
Which licence do I need?
Personal β One non-commercial project. Commercial β Ship paid products. Extended β Resell & white-label. The Licences tab compares them side by side.
On how many devices can I activate it?
1 seat on Personal, 5 seats on Commercial, unlimited seats on Extended.
How long do I get updates?
Personal: 1 year of updates, Commercial: 1 year of updates, Extended: lifetime updates, counted from your purchase.
Can I get a refund?
Yes β paid licences can be refunded within 14 days, straight from your order page.
Is the download safe?
The file was scanned with ClamAV when it was published. Its SHA-256 checksum is listed under Features β In the download, so you can verify the file you receive.
Do I need an account?
No. Checkout only needs your email. Signing in keeps all your purchases, keys and downloads together in My library.
More like this
AudioLens
Real-time audio analysis: FFT spectrum, onset and beat detection, and a full set of time- and frequency-domain descriptors..
β β β β β No reviews yetTTechHarbour$14.00BlueprintTCP
BlueprintTCP lets you connect to any TCP server and exchange data entirely from Blueprints β no C++ and no networking boilerplate.
β β β β β No reviews yetTTechHarbour$12.99BluetoothLink
Bluetooth Low Energy for Unreal - scan, connect, read, write and subscribe to BLE devices on Android and iOS.
β β β β β No reviews yetTTechHarbour$11.99ClusterLink
SocketCluster realtime client for Unreal - pub/sub channels, auth engine and JSON codec, usable from Blueprints.
β β β β β No reviews yetTTechHarbour$11.99