What Are Cull Distance Volumes And How Do They Work? (Unreal 4)

By Zac Jackson

Do you have a level that has too many objects in it, that seems to be loading or performing poorly? Cull distance volumes can help optimize your scene by not drawing objects (meshes) when they are small enough to be considered unimportant. Level Streaming will do close to the same thing, however, for the purpose of this tutorial, we will be sticking to cull distance volumes.

 

What is a Cull Distance Volume?

Cull Distance Volumes are optimization tools provided by the Unreal Engine that allow for meshes to be culled (not drawn to the screen) based on that meshes distance from the camera and its size. The mesh size is calculated using the longest dimension of the bounding box, and the cull distance chosen is the one closest to that size.

 

How to Use Cull Distance Volumes

Step 1:

Start a blank project or open up a blank level in your current project.

 

Step 2:

Add 3 cubes to your level: one big, one medium, and one small. This is to show you how the different properties in a cull distance volume work. You can find the cubes in the “Modes” section, under the “Basic” tab.

 

 

Scale them so that all 3 cubes are different sizes, ranging from small to large. Arrange them to be a little apart from each other.

 

 

Step 3:

Under the “Volumes” section under the “Modes” menu, select a Cull Distance volume and drag it into your level. Next, scale it so that the 3 cubes and the level are inside the volume.

NOTE: You can have more than one cull distance volume in a level depending on the size of the level, and the overall feel you are going for. This also is helpful with performance in towns for example. Adding a cull distance volume to the interior of a house so that when the player camera is outside of it, the meshes within it are not drawn is a good use of this.  

 

 

 

Step 4:

Click on your cull distance volume and navigate to the “Details” panel. This is typically found in the bottom right corner. Once there scroll down to the “cull distance volume” tab.

 

 

NOTE: The culling distance volume details allow you to change the shape of the volume itself, along with many other items of customization including size. Experiment with these, to get the most use out of a cull distance volume for your level.

 

Step 5:

Under the “cull distance volume” tab, you can see that we can add “elements”. These elements give you the option of size and cull distance. The size option is the “bounding box” size of the object (in this case, our 3 boxes), and the “cull distance” is the distance at which that size of object should cull (not be drawn). Make sure there are 3 elements set up under this tab. Each element should represent the size of a box.

I’ve set my size and culling distance elements to the following sizes, as they are the approximate sizes of the small, medium, and large boxes.

 

 

From the above image, element 1 tells the engine to cull anything below 200 in size ( remember, this is bounding box size) from a distance of 800 units, element 2 tells the engine to cull anything that’s 300 or less in size from a distance of 1600 units, and the final element tells the engine to cull anything 450 or less in size from a distance of 2600 units.

 

Step 6:

Hit play and test out your cull distance volume. If you start from far away, you’ll notice that the large box draws first, followed by the medium box, and then the small box.

 

 

Culling Foliage

If you have a bunch of foliage instances in a bigger level and would like the same desired effect as a cull distance volume, you can modify some of the settings for each foliage type that you have in your scene.

 

Step 1:

Navigate to the Foliage editor.

 

 

Step 2:

Click on the foliage mesh that you would like to cull.

 

 

Step 3:

Under the “Instance settings” for the foliage there is a “Cull distance” option. This option allows the foliage to cull in between a minimum cull distance and a maximum. This makes it so that each instance of foliage your scene tries to load slightly more random (within the minimum /maximum distance that you set) so that all foliage instances do not load all at once (if you want this effect, make the minimum and maximum values the same).

 

 

FINAL NOTE: Cull distance volumes do not work with movable objects. To see if an object has been set as movable, navigate to the “Details” panel look for the “Mobility” option. Meshes can be set to either be static or movable here.

Do you have any level optimization techniques that you’d like to share? Let us know in the comments!

Origin Story Dev Blog 002: Oh the Foliage

Ferns, oaks, sticks, grass, logs, bushes, you name it! This last week the continent of Adagio started getting plant life.

For reference, the first continent in the game is named “Adagio”.

Now what you’re not seeing is that I also added 2 new zones to the map, why? BECAUSE MOAR IS BETTER…or something. I want to bring a full and diverse world to you the players, and to do that I needed to add a little extra land.

Back to plant life. I was able to get the first two zones (newb island, and the next zone to it) populated with all sorts of plant life, but what really brought the world to life so far was animating it, having the plant life flow in the wind has really helped bring the world a bit of life. I also added in random rocks and debris.  8 flowing, majestic waterfalls were also introduced to the world and I fixed the lakes/streams feeding them to flow appropriately as well.

Waterfall implementation before foliage!

This week I will be populating the rest of the world with foliage (only 13 more zones to go!). It may take me longer than a week to get it all in (currently working 5-6 hours a day on this AFTER my day job), but even so I’ll still write an update / post screenshots of the progress next week.

I have 14 different kinds of trees, 12 different kinds of grass, 10 different kinds of flowers, 8 different kinds of mushrooms and 12 different kinds of bushes to create a bunch of unique environments.  I think the man made items  are what will really set this world apart from the rest. I have to hand create all of those things in Blender still which will take some time, but most of it is buildings, they are just squares right? Whats so hard about them *rolls eyes*. Until the next update! I may end up doing a GB live Dev stream this week as well.

I’ll keep you posted!

Want to read more about Origin Story?