**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.
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
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.
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
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
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 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.
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.
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.