These settings control the 'generation' stage of volume creation. It takes the detection data and processes it to create a volume. While the detected data is frozen at the point of scanning the area, the generation stage can be carried out multiple times and with different settings; regenerating a volume to change it's shape, size and complexity.
Any volume that is built uses the current settings. The current settings used are stored in the volume and can then be recalled later using the 'Recall Settings' button, so you can easily tweak volumes made in different ways without worrying about what their settings might have been during generation.
There are some important settings here that can drastically impact the quality of volumes you make.
What generation mode should volumator use to create the volume? Each mode uses a different method to create volumes and will have a large impact on the output volume and how Volumator interacts with it.
Perimeter
The normal, default volume mode is 'Perimeter' mode. This mode attempts to find the perimeter from the detected geometry and then attempts to order those perimeter points so they're sequential.
Perimeter mode works really well for most shapes, although it can struggle with hyper concave or 'spikey' shapes as finding the perimeter can be challenging.
The majority of the documentation assumes you're using Perimeter mode. Other modes are called out specifically and below we'll cover the main high level differences.
Two Pass
This is an evolution of Perimeter mode. It runs perimeter detection twice (amongst other tweaks) resulting in a much lower chance of broken volumes. The downside is that the volume will be slightly less accurate and more simple, it also takes slightly longer to process (although this is pretty negligible). It's a great solution if Perimeter mode is struggling to build valid shapes.
Voxel
Voxel mode uses an entirely different generation method that can be useful in cases where the Perimeter mode is struggling or if you're working with blocky spaces. Each detected location, plus the path that was taken during piloting or droning, is plotted in a grid. We then add a volume 'block' at each of these locations, creating a blocked out impression of the detected space.
The result is a volume that is made up entirely of 90 degree angles. It therefore can work incredibly well for blocky level design, such as corridors and tunnels. Obviously it works less well for curved spaces.
In this top down view of a rather unusual shaped room, we see an example of Perimeter mode failing to create a valid volume; the perimeter detection is 'jumping' to the incorrect walls, creating a real mess.
Switching to Two Pass mode the correct shape is identified. As a result, you'll find Two Pass mode is 'safer' than standard Perimeter mode.
However, if we zoom in to the bottom right corner, we can see a warning that exists in the Two Pass version that didn't exist in the Perimeter version. Obviously this is super minor, but shows how accuracy in Two Pass mode can be affected.
Perimeter and Two Pass modes do a great job of building this curved space and the complexity of the volume can be configured with Resolution
Switching to voxel mode we can clearly see the voxel blocks and how the mode isn't well suited to curved spaces.
Using a smaller voxel size (Resolution control) we can create a more detailed volume. This volume has around the same number of triangles as the perimeter mode volume on the far left but is guaranateed to have zero warnings/errors.
Perimeter mode struggles with highly concave, curved shapes like this. The perimeter can 'jump' to the wrong wall, creating the issues in the bottom left
This can be fixed with careful tweaking of settings like Resolution or switching to Two Pass mode, but finding good results can be fiddly (the Validation system helps by automating that process)
In voxel mode the same volume works perfectly as we don't have to detect the perimeter and instead just splat a block over each detected location
Here we see an example of a good use case for voxel mode
Making this spikey shape in Perimeter mode would likely fail or at best gift-wrap it, yet it's perfect for voxel mode, especially with thick walls or if adjacent areas aren't accessible
The size of the voxels (blocks) is determined by the Resolution setting.
Voxel mode has a number of advantages over perimeter mode:
zero warnings and errors - as every detected point gets a large block of volume, coverage is always guaranteed
volume is more reliable - as the angles are always 90 degrees
less chance of integrity issues - avoids the above perimeter 'jumps'
There are some downsides though:
volumes are always slightly bigger than the shape, so overlaps into other areas may be a problem depending on your context
curved shapes obviously aren't handled well
the interior section requires the detection actor to have passed through it, so it's important to be thorough with the interior during detection or holes will appear in the interior of the volume. There is a hole filling operation to patch up interior holes, see below. A 'voxel hole-filling' setting can be found in Generation-Advanced, check the documentation page for more info.
generation can be slow at lower resolutions and because ALL validation attempts are run (see below), a low resolution generation with validation can take a while. Lower validation attempts or increase Resolution to speed things up
An example of a poorly detected voxel volume with lots of holes. When piloting, not all areas in the middle were flown through, creating detection holes, resulting in holes in the middle of the volume. This can also occurr if a drone doesn't fully fly over the interior space (e.g. you Stop a drone early).
Voxel hole filling = 1 (default)
Here we have fixed all the single holes, but the really large areas remain.
Voxel hole filling = 4
All holes have been filled.
However, shapes that curve back in on themselves (like a U shape) can be filled in, which is why the default is lower.
The following features are NOT supported or make no difference in voxel mode:
Expand - because it's not necessary, the volume will already be expanded to fill the detected points
Simplify - uses angle differences, but voxel mode always uses 90 degree angles so can't be simplified further
Simplify concavities - not necessary
The validation system also works differently. As the perimeter mode validation uses the waring/error results, we can't use it for voxel mode because there will never be any. So instead, the validation system will rebuild the volume with increasing resolution settings and will pick the volume with the least amount of voxels required. As the detected points line up with the grid of voxels differently at different voxel sizes, it's possible that even though validation increases the resolution setting (voxel size) there's a chance that it fits the locations better, and this is what the validation system does in voxel mode. It works surprisingly well, trying to find the ideal voxel size.
While there are some caveats to voxel mode, it can work incredibly well for certain, more blocky scenarios, or times where the volume size being bigger than the space isn't a problem.
There is also the special Vertices-Only mode. This is used by separate the Start Building Vertices-Only button (see Build panel page). You cannot select it in the Generation Settings because a Vertices-only volume is locked to that mode and cannot switch to the others, or vice versa.
The height of the volume that is generated. We update this value when starting pilot or drone modes, by detecting the height at the start area. Effectively this is the minimum volume height when you're building a volume, as if an area is detected as having a higher height, then it'll increase this Volume Height to match what was detected.
Note the 'Regenerate changes Height' variable in the Advanced Generation settings; it will determine if this variable impacts regenerations. By default it is off, to save you accidentally changing the height of volumes during regeneration. With it enabled, regeneration of a volume WILL change the height of the regenerated volume to this value.
A key setting, this dictates the definition and complexity of the volume. It is measured in Unreal units, which means increasing the Resolution setting makes a generated volume more simple, less accurate.
In Perimeter (normal) mode, it determines the minimum spacing between vertices; e.g. 200 Unreal units is the minimum distance between volume edges.
In Voxel mode, it determines the voxel size, e.g. each voxel block is 200 Unreal units in width and length.
In Vertices-only mode is has no affect.
As it is in distance, as this value is increased the complexity is reduced. The CPU cost of the volume is reduced as complexity is reduced, but the volume becomes less accurate to the space. High Resolution (low complexity) can be problematic on curved areas where accuracy is important.
As this setting is so critical to the accuracy, the Edit tab also has a Resolution tweaker, allowing you to quickly manipulate and try out different resolution settings to see how it affects the shape.
In Perimeter mode, under certain conditions, especially with curved and concave shapes, increasing the resolution too high will cause the integrity of the shape to fail and result in poor quality volumes. See below for an example of how complex shapes are affected by resolution changes.
Resolution 200 - High complexity, but fits shape perfectly. If the CPU cost of the volume is okay, this is ideal
Resolution 600 - Low complexity and CPU cost, but imperfect. May be acceptable if the 'bleed' outside is not accessible
Resolution 800 - Shape has lost integrity and vertices are 'skipping' to the incorrect side. This volume should not be used.
Resolution is such an important setting for volume integrity, accuracy and CPU cost that there are two validation strategies that focus solely on tweaking the Resolution value to perfect it.
While building, Volumator will determine if the area it's detected is way too large for the current settings. If this happens, it'll update the Min Point Distance and Resolution settings to something more appropriate. This is to stop Volumator getting overwhelmed with data or cause your PC to become sluggish.
As mentioned in the Voxel Mode section, when making voxel volumes Resolution controls the voxel, or block, size.
We can expand, or inflate, the volume by pushing out each face. This isn't a simple 'scale' control, it expands the space of the volume by pushing each wall outwards away from itself. This is done by detecting and storing the normal (angle) of the object the scan hits during the detection phase, in cases where we haven't hit an object, we calculate the normal using adjacent points.
This means we can adjust the size of the volume even after we've reloaded the level. Expanding becomes important when you want to reduce the complexity of a volume, as you can push the volume further into the walls as it less perfectly reflects the shape of the area.
Expand 0 - The volume is at the very edge of the geometry. This has a high chance of not covering the entire space, especially on curved edges
Expand 40 - The volume pushes into each wall slightly, creating a buffer zone to ensure the volume covers the full space effectively
Expand 200 - The volume is now so expanded that it's bleeding through the walls into the adjacent area. Which ensures it definitely covers the space, but it potentially causes problems if those outside areas are accessible
Expand is designed to give you a little buffer space to ensure the volume covers the space, it is not designed to massively change the shape. It can start to misbehave at extreme settings, especially on concave or sharp edges. This is because you may be pushing points out so far that they now 'cross over' the location of their neighbours.
Expand 20 - At a reasonable expand amount the shape is well represented
Expand 110 - Just before it breaks, the shape is still well represented, even though it's very bulbous
Expand 120 - Just ten more units than the previous setting and the volume has now totally broken as points have crossed over, causing integrity to fail. This isn't usable, so obviously watch out for this sort of problem
Expand has no affect in Voxel mode as it's not necessary.
Resolution is our main method to control volume complexity. However, we also have two angle-based simplification processes that run after Resolution.
'Simplify' removes any perimeter points that are within an angle threshold of adjoining points. This means if we have three perimeter points in a line with almost no angular change between them, the middle point is likely unnecssary and can be culled.
The variable is measured in degrees, so a value of 1 means if three points are in a line with the middle line being less than 1 degree off the line, the middle point will be culled.
Increasing this will reduce complexity and remove redundant data. However, increasing it too far will start reducing points that contribute to the shape of the space and you will find the volume not representing the space well.
As this is an important control that benefits from adjustment, it's one of the easily tweakable controls in the Edit panel.
The default setting is set to remove unnecessary points in a line without impacting the shape much.
Note that the shape of the volume and the Resolution setting will also impact how the Simplify feature reacts, the values are very interdependent.
Simplify 0.01 - Simplify has no affect other than reducing unnecessary points on the straight section, which is invisible here but does contribute to lower CPU. however, the curved section is very complex and may cost too much CPU depending on use
Simplify 10 - The complexity has been reduced, with the volume cutting into the room a little, but the straight section is still perfect. This volume could be perfectly usable by expanding it to ensure it covers the space
Simplify 15 - The entire chunks are now being culled and the volume wouldn't be usable as this is clearly too much simplification
While Resolution and Simplify may appear to have similar effects, they work in very different ways and it's worth experimenting to see which suits your use case. Increasing Resolution creates a coarser scan, while increasing Simplify culls points based on their angle.
Simplify has no affect in Voxel mode as all angles are at 90 degrees.
The second simplification process will ONLY cull points that it deems as being concave; meaning it will cull small volume areas that cut inward into the volume. This can be beneficial as small concavities in an area are often just the result of a bumpy/lumpy surface and do not represent significant areas to be represented... they can often then be discarded without worrying about causing problems.
Effectively, this simplification process will never make the volume SMALLER or eat into the room, it will only ever increase the volume's size. This makes it a safer way to simplify the volume.
However, if you are dealing with highly complex shapes or very thin walls between areas (e.g. glass walls between adjacent rooms) then you may want to minimize this as it could cause the volume to bleed into the next room, but otherwise it's usually fairly safe to use and is set to a small amount by default.
It's a normalised value between 0 and 1, so tweak and see the impact. Even at full value, it is clamped to ensure it never removes a lot of concavity.
Simplify Concavities 0 - Note the accuracy on the curved wall and how closely the volume tracks to the edge.
Simplify Concavities 0.5 - Notice how the complexity on the curve has been slightly reduced and the volume now cuts into the wall a little while never eating into the area of the room
Simplify Concavities 1 - At max setting, the volume is now clearly in the wall where the volume was previous concave. The area in the bottom right could be an issue if the wall were thin and you could get to this area
Simplify Concavities has no affect in Voxel mode.
Enabling this will force the generated volume to be a convex shape. It does this by 'filling in' any concave areas, sometimes called 'gift-wrapping', by utilising a convex hull over the shape. This has the benefit of greatly simplifying and optimising the volume, reducing complexity and having generally better integrity and reliablility.
Convex shapes are those that never cut inward. Examples of convex shapes include:
square
cylinder
hexagon
Concave shapes are the oppsite; shapes that do at some point cut inward. Examples of high level shapes would be:
L shape
V shape
pacman or pizza with a slice removed - the removed slice being the concave area
In most cases concavities detected by Volumator are usually smaller and often negligible enough to be discarded
By enabling this setting, you can easily try out the convex volume if you're having issues with a concave shape, e.g. some game systems don't like concave shaped volumes.
Note that there is a 'Detect Convex' feature explained in the Advanced settings that will automatically make the volume convex if the system detects that it's a convex enough. This means you don't need to worry about setting this manually for each volume. Instead, the setting described here is a brute force option for you for comparison or override purposes.
Concave DISABLED - The L shape is retained because the 'elbow' of the L is actually a concave area
Concave ENABLED - The elbow of the L has been filled in. The volume is considerably cleaner and less complex, but the highlighted area could be problematic if it's accessible
Concave ENABLED - On this shape, the triangle (which was detected during scanning) has been filled in and the resultant shape more resembles a circle. This may be fine if the triangle area isn't accessible