These settings control the scanning/detection stage of volume creation; the period when piloting or droning around the area as we collect data.
These settings impact how and what data is stored, this data is only captured during this detection phase and is frozen once scanning is complete.
Later, in the 'Generation' stage, we process that data and it has it's own separate group of settings, explained further down.
For the most part, these settings don't need to be tweaked much once you're familiar with how they work and you've configured them to suit your project and the geometry. Of course the defaults are designed to work well with a typical Unreal project.
Detection affects testing and building, piloting and drones.
Do you want to use Simple of Complex collision when detecting?
Usually we want volumes that are simplified representations of the space, so simple is often preferable. Complex can result in unnecessarily complicated or jagged volumes as the detection will pick up more detail.
However your game content may benefit from Complex depending on how it's set up and if there are gaps or inaccuracies in the simple collision.
There is a slight CPU cost when detecting (i.e. piloting/scanning) but it's fairly negligible. The bigger question is around the nature of your content and what you want to detect.
In this scene, we can see a dark corridor with metal beams along the walls
Here we see simple collision, the beams have gone, making the walls considerably simpler and more representative of what we'd want to detect. Disabling complex detection will ultimately create a simpler and more appropriate volume
Here was can see complex collision, and each of those beams along the wall is going to be detected, which could make the volume really 'jagged' and unnecessarily complicated. Simple would be a better choice.
While simple collision is often better, it's effectiveness is reliant on the author of the art assets to have made good collision without gaps or holes. It's often not critical for art to have air-tight collision which means Volumator could 'see through' the geometry or walls, as in the below example
In this example we have a corridor with solid walls that we want to detect
But switching to simple collision, we see gaps in the collision. In this case, Volumator's detection traces will go through those gaps, detect the geometry behind and making a bad shaped volume
Switching to complex collision, we can see the wall is totally solid. In this case, complex would be preferable to create an appropriate volume
In other cases, some art doesn't even have simple collision, forcing you to have to use complex if you want to detect it. Of course, in some cases this could be a good thing and you might not want to detect it. This is where it will depend on your art assets.
Here is a ring of foliage, and to it's right a ring of rocks. Neither have simple collision, but to look at it, you wouldn't know.
Switching to Player Collision view gives us an insight into the lack of simple collision on both the foliage and rocks. Neither would be detected by Volumator if Detect Complex is disabled.
Switching to Visibility Collision, we can now see the complex collision. Both the foliage and rocks are clearly visible and would be detected if Complex was enabled.
However, you can see the 'jaggedness' of the foliage, which could be problematic.
We can further filter the type of geometry we detect with this setting. There are three choices:
Visibility
Camera
Objects (world static + word dynamic)
Visibility is straight forward in that what you can see is usually what is detected, although this means transparent objects like glass will NOT be detected as you can see through them
Camera is similar to Visibility, but is what the camera uses to not go through objects, so detects more objects. Transparent objects like glass will be detected, although other cosmetic objects may also be undesirably detected, such as foliage and cabling
Objects instead will only detect world static and world dynamic objects, which is likely to filter out other cosmetic objects but it'll depend on how your assets are set up. It has greater CPU cost during detection as we run multiple scans, returning the first that actually has blocking collision enabled. Objects can work well in edge cases, such as when there are invisible blocking volumes that you don't want to detect. If you're getting detection where you wouldn't expect to and you've already tried switching between simple and complex, try using Object detection too.
Even with Detect Complex enabled, if there are actual physical gaps in your geometry then detection can sneak into undesirable areas.
In these cases, you can widen the detection scan, so rather than a tiny line trace, we instead fire a sort of horizontal 'bar' instead. This can stop detection from sneaking past small gaps in the geometry and ensuring that detection does a better job of staying within the expected area.
The Detection Width determines if we use this 'bar' approach, and how wide it should be in Unreal units. With a value of 0, we don't use a bar and just do simpler line traces. If a non-zero value is used the bar-based system is used.
The downside of a non-zero Detection Width is that corner detection will not be as good. Volumator does additional passes in an attempt to find the corners of areas, but this is much harder to do when using this bar shape as the bar tends to hit more stuff while trying to find the corners. Usually if you find you need to use Detection Width to stop your volumes reaching to other areas, the less accurate corner detection is absolutely a reasonable compromise, but it's worth being aware of.
Typically if your geometry is good, ideally watertight, then you wont need to use non-zero Detection Widths, but when you're dealing with problematic geometry, it can be the difference between usable results and garbage.
Above, in an unlit view of a corridor, we can see a gap between two wall pieces. Volumator's scans can sneak through this, detecting things in the next room and creating bad volumes. To fix this, we increase Detection Width
A drone detecting with 5 rays and ZERO Detection Width
As you can see, the default detection is infinitely thin line traces that have the potential to sneak through gaps like the one on the left image
With the Detection Width set to 50, the detection is now a wide 'bar' of 50 units. Anything the bar hits will block detection so it cannot squeeze through gaps smaller than the Detection Width amount
To elaborate on the corner detection and what to look out for when using Detection Width, when a newly detected location is found, we try to wriggle our way to the corner.
This is done by carrying out traces along the dot product of the hit object's normal, then we do a 2nd trace along the dot product of the result of that line trace. The goal is to get as far into the corner as possible and it does a good job. You don't really need to understand how it works, but this 'wriggling' is the reason Volumator is particularly adept at finding holes in geometry 😅
Anyway, when Detection Width is non-zero, it makes it considerably harder for the detection to find a corner as it inevitably hits something before reaching the corner, thanks to the wider scan. The end result is that some exact corners may not be detected with Detection Width increased and the corner may be cut off diagonally, as shown below. This is most evident on right angle corners like the example shown. You may need to expand the volume to compensate for the lost corners.
Detection Width 0 - the default, this is using the line traces and so the corner detection works perfectly, wriggling it's way right into the corners and resulting in perfect sharp corners
Detection Width 50 - As you can see, three of the corners have been 'cut off' slightly. As a small amount of 'expand' was used to enlarge the volume, it's not a huge problem, but we can see one warning location on the right, showing that it might be a problem
One of the key detection variables. This defines the density of the scanning data. Each time something new is detected, we check to see if it's further away than existing data. This is the threshold it must breach, in Unreal units. E.g. 75 means a newly detected point must be at least 75 Unreal units from the next closest point.
By reducing this value, we will get more scanning data for more accuracy. It increases CPU cost when generating after scanning and increases the memory footprint of the Data stored.
If you area scanning really large areas, especially if they don't need to be hyper accurate, it can be helpful to increase this value to keep processing reasonable. In extreme cases, Unreal can believe there is an infinite loop due to the amount of data being processed. You will see error information if this happens to inform you.
If you area scanning very detailed areas, especially with drastic changes along the perimeter that much be accurately reflected, reducing the Min Point Distance will allow Volumator to do a better job of capturing the area.
It's worth noting that Min Point Distance and Resolution (in Generation Settings) work in tandem. If you want hyper accurate volumes, try reducing both this and Resolution. If you want hyper coarse volumes for some reason, increase both.
That said, the default Min Point Distance should work in most cases and it's usually only worth changing Min Point Distance in extreme cases. Also, as a reminder, the scanning data as defined by this setting is frozen or locked after detection. Resolution on the other hand is good to tweak after the fact as it's a Generation setting that works with the frozen scanned data.
Min Point Distance 75 - This very fiddly space is not scanning well because it's so pokey. No amount of adjustment to Resolution is helping as the problematic areas are so tiny
Min Point Distance 20 - By making incredibly fine scanning data, we can now lower Resolution to levels that better define the area without issue. This has resulted in a more complex volume, but at least it is representint the area well
Min Point Distance 200 - This is an absolutely massive area, about 1 kilometer long and Unreal is detecting an infinite loop while chewing on the data. By increasing to 200, we massively reduce the amount of data, successfully creating a volume and the result is still acceptable due to the simplicity of the space
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.
Scanning is carried out with sphere traces, this value is the distance we scan outwards. Increasing may result in less scans being required as greater areas can be covered quickly, although CPU use increases rapidly with this value.
If using Piloting to scan exterior areas without geometry, thus using the pilot location as part of the scan data, it can sometimes be beneficial to reduce this value, so scanning doesn't inadvertently pick up distant areas you don't care about.
Scanning Distance 1000 - Good reach but not so good that it's going to kill performance
Scanning Distance 200 - A tiny scanning reach, this can be helpful when piloting carefully around specific areas, e.g. where you only want areas that you fly close to be detected
Scanning Distance 5000 - This giant scanning distance means all rays are detecting something. This can result in a faster scan, but at a much greater CPU cost. It's very useful with very large open areas that aren't triggering scan results at short distances
The number of traces that fire out each scan. These fire in a ring around you and are equally spaced. Reducing this can aid CPU usage while scanning. Increasing may aid scanning accuracy in extreme cases, but is usually not necessary, especially if using a drone.
Often flying around for longer (either piloting or drone) results in better data as it's more important to get good coverage through position rather than angle.
It's possible to set number of rays to zero. This is more useful for piloting than drone, as piloting with zero rays will allow you to create a volume representing only where you have flown the camera. With a zero ray drone, you'll likely get a jagged and compressed volume that's not terribly useful, but maybe there's a use case for this.
Number of rays = 1
Only a front facing ray, can be handy for testing and being hyper explicit with what's to be detected
Number of rays = 11
A decent amount of rays ensures good coverage without being unreasonable
Number of rays = 40
This monstrosity will result in a huge amount of data to chew through during detection which may result in a faster scan for small areas but will eat up CPU for breakfast
The frequency of scans in seconds. Tweaking can aid CPU if your computer is struggling.
Do you want to detect height while detecting or just use the current Volume Height variable amount in Generation Settings?
The height of the volume is set by the Volume height variable in Generation Settings. Howeve, you'll probably want to ensure this variable matches the actual height of the detection area right? With this detection bool enabled, while detecting the pilot or drone will contually take height readings and when finished it'll take the maximum high and low points, figure out the height that encapsulates it all and set Volumator's Volume Height variable to this amount.
Will enable opacity on any barriers in the level during detection. This is on by default as it helps reinforce what areas are blocked and what you may have missed. Once scanning is complete, opacity is returned to it's previous setting. See the Barrier section for more information on barriers and their opacity.
On lower powered machines or very heavy levels, your PC may become sluggish while detecting. With this enabled you can use a more CPU optimised detection. This only affects the detection processes, i.e. when piloting or using drones, the 'generation' of volumes after scanning is unaffected
Low CPU causes these changes:
When building, each time we detect a new point, we try to find the corners of objects we detected, in low cpu we randomly pick between left and right directions, in high CPU we do both
If the drone detects something in front of it, in high CPU mode a lot of scans can happen as we investigate the area. In low CPU mode we do this less, giving the CPU time to 'breathe' to process all the data
In low CPU mode we disable line check debug lines (red/green lines), there can be a lot of these so it helps to have them disabled, but it's less clear what the drone is doing
Debug draw times when building/testing are much shorter, requiring less visual updates. This is mostly the pink dots showing detected points
The difference in volume creation is pretty negligible (testing showed no correlation) as most of the changes are in how data is displayed. Low CPU may take slightly longer, but your computer will be more responsive and in some tests it completes faster when struggling with heavy workload.
Further CPU improvements can be made by switching your viewmode to 'unlit' or 'wireframe' views while building/testing
Normal Mode with lots of rays
Low CPU Mode