Easy Voxels: Marching Cubes

**EasyVoxels: Marching Cubes **provides a fast, multi-threaded and reliable way to generate Voxel Geometry using Dual Marching Cubes algorithm.

About the algorithm:

The marching cubes (MC) algorithm is a widely used technique for computing triangular mesh Iso Surfaces from discretely sampled volume data over rectilinear lattices. Dual Marching Cubes tends to eliminate the poorly shaped triangles often present in MC surfaces.

EasyVoxels can be used to generate any type of shape, from asteroids or pure procedural editable terrain to random shapes.

Check the example projects.

Important: This is not a game. Easy Voxels: Marching Cubes is a plugin that provides you the tools to build procedural geometry using Dual Marching Cubes and additional helper functions.

Project 1 (Chunked Terrain):

Requires Noise Plugin: Here

Download: Here

Project 2 (Asteroid):

Download: Here

Get It Here:

https://www.unrealengine.com/marketp…marching-cubes

Hey I just found this on YouTube and tracked you down here. I have some questions on the MC voxels as I may be interested in it for a game. What is the performance like? We are looking to build a game compatible with Xbox. Can it be replicated over a network? And is it editable in run time? Basically can I dig it lolol

Hi,

Yes, it can be replicated, but you’re responsible for the replication implementation. Geometry can be edited at runtime, check Asteroid demo preview video, which shows a very generic implementation example of geometry editing during runtime. Both demos use 32^3 volume data size. So you can make an idea of how fast it can be.

Update 1.0.4

  • Minor code clean-up

Hey There ! very interesting plugin, but i’m also wondering about the usability of it in terms of its quality;
would you be able to achieve a resolution high enough so you don’t see any edges in the geometry ? and are you able to add textures in the shaders like displacement, normals etc, and what about tessellation ?
take this an example for instance, could you do something similar with your plugin at a similar resolution ? https://youtube.com/watch?v=R_iy5pAb3O8
Thanks a lot

Hi there,

  • The video you’re showing uses ray marching, not marching cubes. That runs on the GPU and Easy Voxels runs **Dual Marching Cubes **(duality preserves sharp features of the geometry) on the CPU.
  • Resolution can be set by either increasing volume data size or by setting the Resolution float value in Settings to lower values. Lower value means higher quality. You could tinker with both until you get the results you need.
  • Although Easy Voxels provides with complete mesh data, Vertices, Normals, UVs, Tangents and Triangle data, by default engine’s Procedural Mesh Component doesn’t support tessellation. You could either customize it to enable it (requires c++ and some medium knowledge on the engine), or use Runtime Mesh Component which can handle tessellation by default.
  • You can set materials to the mesh component of your choice and have displacement, normals textures and so on.

However you’ll need to use Tri-planar mapping in your materials to avoid stretched textures on the generated geometry (Chunked Terrain Demo uses Tri-planar mapping so you can check it out there how it can be achieved).

Hope this answers your questions and concerns.

Your are most welcomed on our discord for a more real-time discussion: Pug Life Studio

Update 1.0.5

  • Several code cleanups and optimizations
  • Latent nodes got renamed
  • New Demo projects have been provided along with Youtube demo videos, to reflect the code changes.
  • Documentation has been updated to reflect the code changes

A new demo project has been released. This demo enables LODs for Easy Voxels.

Check it out.

**Requires Procedural Mesh Simplifier Plugin: **Get It Here](Procedural Mesh Simplifier (LOD Creator) in Code Plugins - UE Marketplace)

**Download: **Asteroid Demo With LODs

Update 1.1.3 is Live!

  • Lots of code improvements that should enhance speed for both voxel data generation and conversion to mesh data.
  • Ability to use Gradient Normals or Triangle Normals with or without Flat Shading.
  • The algorithm doesn’t need additional voxel space to fit gradient data and adjacent data for forced manifold meshes. Before there was a +4 additional voxel space needed on each axis.
  • There’s a new ShapeShifter function that allows you to fast spawn some primitives.
  • New function GetRelevantSlots that allows you to grab adjacent relevant slots for a chunk slot.
  • New function GetDistanceBetweenChunkSlots that allows you to easily get the distance between two chunk slots.The returned distance is in chunk slots.
  • For C++ implementations only: DensityInterfaceObject doesn’t have to be provided if you don’t want to. Instead you have to implement BuildDensityPoint in FMarchingCubes and FVoxelDataConverter.

Easy Voxels: MC 1.1.7 is Live!

  • Easy Voxels: MC cancels all background work and executes **OnCancel **Branch in **DoGenerateVoxelData **and **DoVoxelDataToMeshData **automatically when game ends(PIE, Standalone, Packaged etc).
  • Power of Two requirements have been removed from UnitSize.
  • Minor code improvements.

Update 1.1.8 Is Live!

  • Removed **ChunkRadius **variable from **FVoxelSettings **to avoid any confusion that is required to generate geometry.
  • New Function GetVoxelCoordinatesInRadius.
  • Updated Demo Projects to reflect changes

Update 1.1.9 Is Live!

  • New Function **UpdateNavigationData **which allows you to update Navigation Data during runtime.

Can this support voxel destruction like this video? UE4 - Voxel world destruction - YouTube

Not without some hard work and knowing what you’re doing.

Update 1.2.0 is Live!

  • Easy Voxel: MC now uses the framework of MultiTask PRO 1.3.X for better stability
  • Previous **DoGenerateVoxelData **and **DoVoxelDataToMeshData **nodes are **Deprecated **and they need to be replaced with the updated nodes.They will be automatically marked in blueprints as Deprecated and they need to be replaced with the updated nodes that are using same names.
  • Demo projects have been updated with the current changes.

Update 1.2.1 is Live!

  • Fixed a bug with Gradient Normals that could occur in certain cases.

Easy Voxels: Marching Cubes 1.2.2 is Live!

  • Optimized and cleaned the algorithm.
  • Implemented the Simplifier in Do Convert Voxel Data.
  • Removed the Density data TMap from Do Generate Voxel Data. This is and should be handled within Density Data Builder
  • New function Get Editor Camera Transform which allows to use the camera coordinates in Simulate mode
  • Fixed a bug that would cause a crash when trying to Cancel a worker.
  • New data type “Voxel Data” which stores the generated voxel coordinates and triangles.
  • Updated demo projects to reflect the changes.

Easy Voxels: Marching Cubes 2.0 is Live!

Easy Voxels: MC went through some dramatic changes this year which improves performance, scalability and makes it even easier to use.
This update changes how the plugin works which means it will break your previous blueprint logic if you choose to update.

With version 2.0 everything got easier. You just configure the settings and provide a valid Density Data Builder and the plugin will render everything automatically.
Truly “Easy”.

  • Easy Voxels: MC is now an Actor Component which inherits from Procedural Mesh Component.
  • Ability to automatically render voxels in editor (See Asteroid example)
  • Auto-LOD has been implemented. You can just set a maximum LOD and the component will simplify based on the distance between Player Pawn and geometry.
  • Auto-LOD can be disabled and handled manually.
  • Ability to automatically update AI Navigation Data.
  • Ability to setup an Update Interval which is used to control how often the Component is checking for LOD changes etc.
  • Removed Density Builder interface and replaced it with a Density Builder object for better stability
  • Removed “Do” async nodes.
  • Implemented the original Marching Cubes algorithm as well which can be enabled(bUseOriginalAlgorithm) at will in FVoxelSettings
  • Implemented an additional Normal generation. There’s now: Gradient Advanced, Gradient Basic and Triangle.
  • Flat Shading now works with all Normals algorithms
  • New function VoxelCoordinatesToLinearIndex which allows 3D coordinates to be treated as 1D
  • New function LinearIndexToVoxelCoordinates which allows 1D coordinates to be treated as 3D
  • New function GetEditorCameraTransform which allows to retrieve Camera Transform in Simulation only.
  • Several improvements and optimizations with MC and Converter algorithms
  • 5 new delegates which allow to attach additional functionality: OnPreVoxelDataGenerated, OnVoxelDataGenerated, OnPreLODGenerate, OnLODGenerated, OnDensityObjectCreated
  • Documentation has been updated to reflect the changes.
  • Demo projects have been updated to reflect the changes.

Where can I get this plug-in?