If you would use materials and meshes from any of the free content examples like the background mountains in particle demo or landscape from the mountain open terrain demo, or any inifinity blade assets - you would get 100 times the attention you get right now. And after seeing the entire playlist the performance test and multiplayer capacity i can tell this is really amazing. You just put off the “voxelfarm” out of ue4 business right there i will closesy keep an eye on this project and be more than happy to take part in stuff i can help with.
Still needs some work before it’s really usable, but still, amazing stuff.
For dynamic nav mesh stuff that I’ve seen in the playlist, I’d suggest figuring out dynamic navmesh proxies for dropping (with settings for drop limit) and jumping (with settings for how high characters can jump and how quickly they can move, to jump up terrain and across gaps).
@Candescence For now I’m using UE classic navmesh system, so you can do whatever you want with it. However I will at some point implement my own navmesh solution, as UE doesn’t support spherical meshes for navigation (see NavMesh Slope · Issue #13 · Phyronnaz/VoxelPlugin · GitHub)
@AngeIV Thanks! Sadly it’s a bit more complex than drag&drop for materials, and multiplayer is currently broken ;). That being said once everything will be (kinda) working I will definitively do a real demo of this.
How many textures can we apply to the voxel terrain (in practice) btw?
Does the same limitation apply as for landscapes?
And can we use the foliage tools with the voxel terrain? If yes, how does it work for caves? (do we need a different material for this case?)
@rYuxq For now the limit is 16 textures. The difference with landscape is that a Landscape can have more textures if they are not on a same LandscapeComponent. Haven’t tested that yet, but @Koderz had an engine source that supported textures arrays, allowing for a (nearly) infinite texture count.
As the terrain is dynamic, foliage tools don’t work. Grass is supported (small mesh without collision). I want to add a custom spawning system for trees (big mesh with collision, can’t overlap with the world). Grass is using the floor voxel material (int between 0 and 255) to choose the GrassType.
but I think the foliage tools should work for voxel terrain as well, since if I am not mistaken, it simply places trees (the locations are based on an algorithm) through ray-tracing from high to low… Correct me if I am wrong. Did you look into the algorithm that calculates the tree locations in the foliage tools?
Haven’t looked into it, but it only works in a limited box, and doesn’t support spheric worlds. Moreover, physics raycasts are extremely slow, while I can do more efficient ones based on the density field, allowing for a generation of the trees at runtime, and thus for infinite worlds.
Then I hope you get the density fields right
I like the distribution used with with the foliage system and I think implementing your own foliage system is pretty pointless, if the distribution isn’t believable
I have a suggestion for modifying the terrain. It’s about the brushes.
Can you have brushes where you control parameters like “top material”, “bottom material”, “slope material”, “material below a certain point” etc.?
I think this would be a good idea, because this way, one could terraform the landscape without having to worry about painting the right materials.
So for example, if I were to dug a cave, then every mesh triangle that is affected would be checked for whether it’s a triangle at top, at bottom, a triangle in a slope or below a certain point in worldspace and apply the material according to the parameters that have been set for the brush.
You could of course use more reasonable parameters, but this is just to give an example.
Here’s how it works for now: on each voxel, 4 values are stored:
the density value
the index of the first material
the index of the second material
an alpha to blend between those materials
The materials are set by the world generator. Then, in the UE Material, there’s a node to switch on materials. As the textures are triplanar-projected, you can have 2 set of textures per material: one for the top and bottom, and one for the sides. I don’t think using only triplanar projection you can differentiate the top and bottom textures. Of course that could be done on a lower level when generating the mesh, but I don’t want to do that to keep everything consistent for now. If this feature is interesting more people, then I’ll consider adding it
I am very interested in doing the same with the textures as you have done with the Tesselation with Kite Demo Assets… I have the assets, but not sure how to link the textures to MaterialChooser(NUM) and M_Colors_VoxelMaterial… Just bit confused… Could you share a example just to get me started… I have imported a heightmap I made back in 1997 LOL
on generating the sln I get this warning (before the tiny window disappears):
WARNING: d:\UE4\Voxelplugin\MarchingCubes\Plugins\Voxel\Source\Voxel\Voxel.Build.cs(17,51) : warning CS0618: “UnrealBuildTool.ModuleRules.BuildConfiguration” m?r elavult: “The BuildConfiguration alias is deprecated in 4.18. Set the same properties on the ReadOnlyTargetRules instance passed into the ModuleRules constructor instead.”
and compilation fails:
…
1> [17/24] Link UE4Editor-Procedural.lib
1> Creating library D:\UE4\Voxelplugin\MarchingCubes\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-Procedural.lib and object D:\UE4\Voxelplugin\MarchingCubes\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-Procedural.exp
1> Module.VoxelEditor.gen.cpp
1> Module.VoxelEditor.cpp
1> [20/24] Link UE4Editor-VoxelEditor.lib
1> Creating library D:\UE4\Voxelplugin\MarchingCubes\Plugins\Voxel\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-VoxelEditor.lib and object D:\UE4\Voxelplugin\MarchingCubes\Plugins\Voxel\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-VoxelEditor.exp
1>ERROR : UBT error : Failed to produce item: D:\UE4\Voxelplugin\MarchingCubes\Plugins\Voxel\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-Voxel.lib
1> Total build time: 110,83 seconds (Local executor: 0,00 seconds)
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.MakeFile.Targets(46,5): error MSB3073: The command ““D:\Program Files\Epic Games\UE_4.18\Engine\Build\BatchFiles\Rebuild.bat” ProceduralEditor Win64 Development “D:\UE4\Voxelplugin\MarchingCubes\Procedural.uproject” -waitmutex” exited with code -1.
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========
I’m trying to get this installed on 4.19 preview and upon generating my project files I’m receiving the following error:
ERROR: c:\Users\ULLS\Documents\Unreal Projects\VoxelTest\Plugins\Voxel\Source\Voxel\Voxel.Build.cs(17,51) :
error CS0122: 'UnrealBuildTool.BuildConfiguration' is inaccessible due to its protection level
ERROR: UnrealBuildTool Exception: Unable to compile source files.