Project Acoustics Unreal Baking - Probe Placement

This article describes the Probe Placement step of the Project Acoustics Unreal workflow.

Calculate and review listener probe locations

After assigning the materials, switch to the Probes tab.

Probes Tab Reference

Screenshot of Acoustics Probes tab in Unreal

  1. Use these options to control the simulation resolution. Coarse is faster, but fine is more accurate. For more details, see the FAQ.
  2. Choose the location where the acoustics data files should be placed using this field. Click the button with "..." to use a folder picker. For more information about data files, see Data Files.
  3. The data files for this scene will be named using the prefix provided here. The default is "[Level Name]_AcousticsData".
  4. Click the Calculate button to voxelize the scene and calculate the probe point locations. This is done locally on your machine, and must be done prior to doing a bake. After the probes have been calculated, the controls above will be disabled, and this button will change to say Clear. Click the Clear button to erase the calculations and enable the controls so that you can recalculate using new settings.
  5. Fine-grained control over the simulation is provided via the Advanced Parameters section. These override the default Coarse/Fine options. If you ever want to revert to the default coarse/fine options, click the "Reset Simulation Parameters" button. Each parameter has an explanation tooltip on mouse hover, details also listed in aggregate below:
  • Max Frequency (Hz): This is the top frequency in Hertz used for wave simulation. It is used to determine the voxel resolution for wave simulation. For a value of 500Hz, the voxel size is 0.255 centimeters, with linear scaling. That is, at 250Hz the voxel size is 0.51 cm and so on. The number can be changed continuously.
  • Receiver Spacing (cm): For each probe, the volumetric simulated data is sampled on a regularly-spaced 3D grid. This is the spacing of that grid, which is internally discretized to an integer number of simulation voxels. It is the spatial resolution of acoustic interpolation for sound sources at runtime.
  • Min/Max Horizontal Probe Spacing (cm): These settings inform the global adaptive probe layout algorithm. The algorithm adapts the probe spacing based on how cramped or open the surroundings are in various regions of the map. The rails on these resolution variations are provided by the min and max values respectively. Set the former based on the most cramped areas such as width of narrow corridors you wish to resolve. Set the latter based on how coarse you can go in wide open areas.
  • Vertical Probe Spacing (cm) and Min Probe Height Above Ground (cm): Vertically, the probe layout algorithm will create a single layer of probes that are within the height range (Min Probe Height Above Ground, Min Probe Height Above Ground + Vertical Spacing) above the nav mesh.
  • Simulation Region Min/Max: Each probe performs a simulation on a limited volume of space. Thus runtime sources' acoustics are accurately modeled only up to some distance. Beyond this distance, the runtime extrapolates assuming that everything is air. The "Min" and "Max" values specify the corners of this simulation box, relative to the probe location.

Probes must be placed through the automated process provided in the Probes tab. You may optionally augment the automatically placed probes with additional, Pinned Probes. In a simple example, let's say we want a single probe higher in the corner of the room, without wanting to add a fake navigation mesh there. We can add an Acoustics Pinned Probe actor and place it where we want, then re-do the probe calculation.

Pinned Probe Example

What the Calculate button calculates

The Calculate button takes all the data you have provided so far (geometry, navigation, materials, and the coarse/fine setting) and goes through several steps:

  1. It takes the geometry from the scene meshes and calculates a voxel volume. The voxel volume is a 3-dimensional volume that encloses your entire scene, and is made up of small cubic voxels. The size of the voxels is determined by the simulation frequency, which is set by the Simulation Resolution setting. Each voxel is marked as being either open air or containing scene geometry. If a voxel contains geometry then the voxel is tagged with the absorption coefficient of the material assigned to that geometry.
  2. It then uses the navigation data to calculate acoustically interesting locations where the player might go. It tries to find a reasonably small set of these locations that includes smaller areas such as doorways and hallways, and then to rooms, to open spaces. For small scenes this typically is fewer than 100 locations, while large scenes may have up to one thousand.
  3. For each of the final listener locations it computes, it determines a number of parameters such as how open is the space, the size of the room it is in, etc.
  4. The results of these calculations are stored in files at the location you specify (See Data Files)

Depending on the size of your scene and the speed of your machine, these calculations can take several minutes.

Once these calculations are complete, you can preview both the voxel data and the probe point locations to help ensure that the bake will give you good results. Things like a bad navigation mesh or missing/extra geometry will typically be quickly visible in the preview so you can correct it.

Debug display

After probe calculation is completed, a new actor will appear in the World Outliner called AcousticsDebugRenderer. Checking the Render Probes and Render Voxels checkboxes will enable the debug display inside the editor viewport.

Screenshot showing Acoustics Debug Renderer actor in Unreal Editor

If you don't see any voxels or probes overlaid on your level, make sure real-time rendering is enabled in the viewport.

Screenshot of real-time rendering option in Unreal

Voxels

Voxels are shown in the scene window as green cubes around participating geometry. Voxels that contain only air are not shown. There is a large green box around your entire scene that denotes the complete voxel volume that will be used in the simulation. Move around your scene and verify that the acoustically-occluding geometry has voxels. Also, check that non-acoustics objects such as collision meshes haven't been voxelized. The scene camera has to be within about 5 meters of the object for the voxels to show.

If you compare the voxels created with coarse resolution vs fine resolution, you will see that the coarse voxels are twice as large.

Screenshot of Acoustics voxels preview in Unreal editor

Probe points

Probe points are synonymous with possible player (listener) locations. When baking, the simulation calculates the acoustics connecting all possible source locations to each probe point. At runtime, the listener location is interpolated among nearby probe points.

It's important to check that probe points exist anywhere the player is expected to travel in the scene. Probe points are placed on the navigation mesh by the Project Acoustics engine and can't be moved or edited, so ensure the navigation mesh covers all possible player locations by inspecting the probe points.

Screenshot of Acoustics probes preview in Unreal