Skip to content

Authoring

Your game will need to support raytracing to access the most powerful and efficient part of the plugin but it does fall back to CPU and scale to less powerful platforms. This is automatically enabled when using High / Epic / Cinematic scalability settings. If scalability settings are medium or below you will need to enable one of the following r.Lumen.DiffuseIndirect.Allow = 0, r.Lumen.Reflections.Allow = 0.

Begin by opening the Obstruction Inspector to select some debug options: Window → SweejTech → Propagation → Obstruction Inspector. A good start is to use the settings / gear icon to enable the options to display the Sound Spheres, Ray Sound Positions and Rays. For more details on the Obstruction Inspector see the Quick Reference page Quick Reference

Open the Debug Settings of the Obstruction Inspector
Open the Debug Settings of the Obstruction Inspector

In the Viewport you will see these debug illustrations for your sound when you are within the sound's attenuation extents.

Debug illustrations only appear within the sounds extents
Debug illustrations only appear within the sounds extents

As discussed in the Concepts section Concepts the amount of filtering or attenuation applied to a sound source when it is obstructed by level geometry is a product of the sound source and listener radii, the distribution of positions on the spheres, and the scaling that is applied to the resulting Raw Obstruction value.

Debug Illustration & Obstruction Inspector
Debug Illustration & Obstruction Inspector

The Listener Radius is set by default to 100 units in the Project Settings menu. This can be adjusted in Project Settings → SweejTech → Propagation → Listener. The bigger the listener, the more geometry needed between the listener and sound source for it to be fully obstructed. The Source Radius and other sound specific settings are applied via the SweejTech Propagation Toolbar. (The Propagation Toolbar will be available in all sound assets once the plugin is installed -- see Quick Start for details).

SweejTech Propagation Settings for Sound Assets

SweejTech Propagation is enabled, and settings are defined, on a sound asset level within Sound Waves, Sound Cues, or Metasounds via the SweejTech Propagation Toolbar.

SweejTech Propagation Toolbar
SweejTech Propagation Toolbar

The default settings (based on the default Propagation Sound Definition asset) are a useful starting point and generally work well for the majority of sound sources. These will be overridden if an alternative Propagation Sound Definition asset is assigned (see below) or the override boxes are checked. (For a quick reference information on what these values are see the Quick Reference page.)

To understand the Propagation settings and their effects pick a sound within your game level and check the Propagation Enabled option within the SweejTech Propagation Toolbar.

Now when obstructed by a mesh or other geometry within your scene you can see and hear the effects of the obstruction system on the sound. The Inner Ray Sound Positions are shown in Green when unobstructed and Red when Obstructed. The Outer Ray Sound Positions are shown in Teal when unobstructed and Purple when Obstructed. (For further details see the Concepts page.)

Inner & Outer Rays -- Obstructed and Unobstructed
Inner & Outer Rays -- Obstructed and Unobstructed

Experiment first by overriding the Source Radius of your sound in the SweejTech Propagation Toolbar by checking the box to locally override the default Propagation Sound Definition.

Override Source Radius
Override Source Radius

Obstruction effects: Frequency, Attenuation & Scaling:

The Frequency at Max Obstruction is the filter frequency applied when the sound is fully obstructed, and Attenuation at Max Obstruction is the attenuation applied to the sound when it is fully obstructed. Try overriding the default settings and adjusting the frequency and attenuation settings to hear the effect while watching the values change in the Obstruction Inspector.

Frequency & Attenuation at Max Obstruction settings
Frequency & Attenuation at Max Obstruction settings

By default the relationship between the Raw Obstruction values derived from the Ray Trace System and the Resulting Obstruction values that are used to determine the frequency and attenuation responses is linear.

Default Relationship between Raw and Resulting Obstruction Values
Default Relationship between Raw and Resulting Obstruction Values

However, if you have sounds that you know are frequently going to be slightly obstructed, but you don't want them to always to be slightly filtered, you can map the 0.0 -- 1.0 Raw Obstruction values across a different range using the Obstruction Range Values. For example Obstruction Range values of 0.3 -- 1.0 would result in the attenuation and filter only being applied when the Raw Obstruction value > 0.3.

Obstruction Range Values 0.3 -- 1.0
Obstruction Range Values 0.3 -- 1.0

Resulting Obstruction when Range is 0.3 - 1.0
Resulting Obstruction when Range is 0.3 - 1.0

Again try this, listen to the results and observe the Resulting Obstruction values in the Obstruction Inspector.

Obstruction Inspector showing Raw Obstruction 0.25 but Resulting Obstruction 0.0 due to the Obstruction Range settings of 0.3-1.0
Obstruction Inspector showing Raw Obstruction 0.25 but Resulting Obstruction 0.0 due to the Obstruction Range settings of 0.3-1.0

If you wanted the same sound to become quickly obstructed, for example to reach maximum obstruction when the Raw Obstruction is only 0.8 then you could also set the Max of the Obstruction Range to 0.8.

Obstruction Range Values 0.3 - 0.8
Obstruction Range Values 0.3 - 0.8

Resulting Obstruction when Range is 0.3-0.8
Resulting Obstruction when Range is 0.3-0.8

Obstruction Inspector showing Raw Obstruction 0.81 but Resulting Obstruction 1.0 due to the Obstruction Range settings of 0.3-0.8
Obstruction Inspector showing Raw Obstruction 0.81 but Resulting Obstruction 1.0 due to the Obstruction Range settings of 0.3-0.8

If the Numeric Obstruction Scaling Mode is not getting the desired results you can experiment with the Obstruction Curve Exponent, but perhaps a more bespoke and readable solution is to switch the Obstruction Scaling Mode to use Curves.

Obstruction Scaling Mode - Curve
Obstruction Scaling Mode - Curve

Once you are in Curve mode you can assign a Curve Asset or double click on the curve to open the Curve Editor. In the Curve Editor you can add key points by using Shift + Click and use the right click menu on those key points to set different types of interpolation between them.

The Curve Editor
The Curve Editor

The resulting values from the curve can again be mapped across the Obstruction Range Values in the same way that the numeric ones are.

Obstruction Value Smoothing Time

Once you are satisfied with the Listener Radius for your project, and the Source Radius, Frequency and Attenuation, and scaling of obstruction values per source you will want to consider how rapidly you want the obstruction filtering and attenuation to be applied. This is set per source via the Obstruction Value Smoothing Time in the SweejTech Propagation Toolbar. This set in milliseconds (default 250ms) and the obstruction value used for filters and attenuation will move smoothly over this amount of time to its current value in order to prevent hard cuts in the frequency response or amplitude.

Obstruction Value Smoothing Time
Obstruction Value Smoothing Time

Sweej Propagation Sound Definitions

Sweej Propagation Sound Definitions provide an efficient way to share common propagation settings across multiple sound assets.

You create Sweej Propagation Sound Definitions in the Content Browser:

AddAudioSweejTechSweej PropagationSweej Propagation Sound Definition

Propagation Sound Definition
Propagation Sound Definition

These Sweej Propagation Sound Definitions can then be assigned to your sound assets in the Sweej Propagation Toolbar.

Assigning a Sweej Propagation Sound Definition
Assigning a Sweej Propagation Sound Definition

When required, values can then be overriden locally on a per asset basis using the check boxes.

Local Overrides to a Propagation Sound Definition
Local Overrides to a Propagation Sound Definition

To enable and adjust multiple assets at once you can Right Click → Asset actions → Edit Selection in Property Matrix. In the Advanced drop-down menu in the right hand 'Pinned Columns' menu use the + icon to add Asset User Data (if not already present) and select Sweej Propagation Asset User Data.

Property Matrix for Bulk Editing
Property Matrix for Bulk Editing

Then you can adjust settings on a bulk basis.

Bulk Assigning Propagation Settings in Property Matrix
Bulk Assigning Propagation Settings in Property Matrix

Ignore Static Meshes or on a per actor basis

There may be instances where you want a specific type of static mesh, or specific actors using that mesh to be ignored for obstruction purposes. In order to implement this select the Static Mesh Actor you want to be ignored and add a Sweej Propagation Mesh Component.

Adding a Sweej Propagation Mesh Component
Adding a Sweej Propagation Mesh Component

Then navigate to the Static Mesh itself to edit it and add Sweej Propagation Mesh Asset User Data.

Adding Sweej Propagation Mesh Asset User Data to a Static Mesh
Adding Sweej Propagation Mesh Asset User Data to a Static Mesh

By default the Asset user data option to Ignore Mesh will be set to True, and so any actors using this static mesh will not obstruct the sound.

Sweej Propagation Mesh Asset User Data Defaults
Sweej Propagation Mesh Asset User Data Defaults

Ignore Mesh = True
Ignore Mesh = True

If you want to apply this to meshes on specific actors, rather than all instances of that mesh, then you can add a SweejPropagation Mesh Component to the actor as before, but then select this and add the Sweej Propagation Mesh Asset User Data to this specific instance.

Adding Sweej Propagation Mesh Asset User Data to a specific Actor instance
Adding Sweej Propagation Mesh Asset User Data to a specific Actor instance

You can then set Ignore Mesh on a per actor basis.

Ignore Mesh on Specific Actor Instance = True
Ignore Mesh on Specific Actor Instance = True

Shared Mesh but specific instances with bespoke obstruction setting
Shared Mesh but specific instances with bespoke obstruction setting

Ignore specific geometry on a mesh

There will likely be instances where you want to ignore specific geometry on a mesh for obstruction purposes. For example, you may want the trunk / bark of this tree to obstruct sounds, but not the leaves.

A Tree!
A Tree!

Start by adding a SweejPropagationMesh to the Static Mesh component

Add Sweej Propagation Mesh to Static Mesh
Add Sweej Propagation Mesh to Static Mesh

Then open the Static Mesh and add Sweej Propagation Mesh Asset User Data.

Add Sweej Propagation Mesh Asset User Data
Add Sweej Propagation Mesh Asset User Data

Untick the global Ignore Mesh option and the ability to ignore specific segments becomes available.

In order to determine the index for the segment you want to ignore change the View mode to Ray Tracing Debug / Picker.

Set View Mode to Ray Tracing Debug / Picker
Set View Mode to Ray Tracing Debug / Picker

Type in the console command r.RayTracking.Visualize.PickerDomain 2, and you can hover over different segments and observe the [Hit] Segment index.

Use console command to find the segment index
Use console command to find the segment index

In this instance you can see that the Segment Index for the trunk / Bark is 1, and the Segment Index for the leaves is 0.

Using the Picker to Find the Segment Index
Using the Picker to Find the Segment Index

So if we use index 0 as the segment to be ignored in the Sweej Propagation Mesh Asset User Data of the Static Mesh then the leaves will no longer obstruct sounds.

Set the Segment Index to Ignore
Set the Segment Index to Ignore

The leaves are now ignored for Occlusion
The leaves are now ignored for Occlusion

Note: Ignoring geometry segments is a GPU feature only. CPU falls back to ignoring the whole component. Indices follow the ray-tracing LOD's segment order and may change if the mesh is re-imported or its sections change.

Override Ignore Meshes on same actor

By default all sounds with Sweej Propagation enabled will ignore meshes that are on the same actor as them. This avoids actors obstructing their own sounds. However, it may be the case where you want some of the meshes to obstruct and not others. For example, in this scene we might want the exterior of the house to obstruct the sound from the pipes in the corner of the room, but not the armchair.

House exterior meshes ignored
House exterior meshes ignored

Armchair Mesh Ignored
Armchair Mesh Ignored

In order to override the default behaviour and determine specific meshes to ignore we can add a SweejPropagationModifier component.

Adding a Sweej Propagation Modifier
Adding a Sweej Propagation Modifier

With the SweejPropagationModifier in place meshes belonging to the same actor will no longer be ignored. This means that the sound is now obstructed by the house mesh.

House Mesh now obstructs the sound
House Mesh now obstructs the sound

Although this reverses the default behaviour there will still likely be other meshes that we still want to ignore for obstruction purposes. To define these you can select the SweejPropagationModifier and add them to and index using the drop down menu for Ignored Mesh Components. For example, the armchair is StaticMeshComponent17 and adding this to an index within the Ignored Mesh Components list will result in this mesh now being ignored by the obstruction system.

Defining meshes to ignore
Defining meshes to ignore

Armchair Mesh Ignored for Obstruction
Armchair Mesh Ignored for Obstruction