-
Post-mortem & references
Post Mortem This post-mortem will provide a breakdown of the project’s milestones, highlighting its successes and areas where improvements can be made. This breakdown will serve as a valuable learning opportunity to identify shortcomings to be avoided in future projects. In short, I feel that this project was a success, aided significantly by the amount…
-
Obstruction optimizations & bug fixing
Obstruction Optimization While many of the optimizations created for occlusion are shared with the obstruction system, there are some obstruction-specific optimizations that had to be made to reduce unnecessary overhead. Like occlusion, a movement check is performed before obstruction is calculated to determine whether the player or emitter has moved a greater amount than the…
-
Occlusion / obstruction data interpretation
After gathering all the relevant data from both the occlusion and obstruction systems, the next step is to interpret this data for use with FMOD parameters. The values used to modify occlusion and obstruction processing effects are calculated using various metrics obtained from the previously discussed ‘update’ functions. To calculate the occlusion value, a ratio…
-
Obstruction core functionality
When an important audio source is completely occluded from a listener, it is often due to the emitter being located in a different room or being obstructed in some way. However, occlusion alone does not always produce convincing results when this is not the case. To remedy this, an obstruction value must be calculated to…
-
Optimizing occlusion
When designing the occlusion subsystem, optimization was a constant consideration, integral to every feature. A primary goal was to reduce the number of unnecessary line-cast calls as much as possible. This was achieved through the use of multiple pre-occlusion checks, determining the state of the ‘Dynamic Occlusion State‘. The second and fourth images below depict…
-
Occlusion core functionality
One of the challenges of creating immersive audio propagation is handling occlusion – when the path from an emitter to a listener is blocked. Occlusion can add realism and depth to soundscapes, but it can also be computationally expensive at scale. This scalable audio propagation system aims to be a flexible solution for occlusion, allowing…
-
Core component development
At the core of the audio propagation system, there are two essential components: the emitter and the director. The emitter is responsible for defining user parameters and calculating instance-specific values needed for occlusion and obstruction. The director is responsible for controlling how the sound sources are processed by the audio engine and contains the majority…
-
Test environment creation
When developing any type of system or feature, creating a good testing environment is essential to allow for rapid iteration (West, 2021) and debugging. I needed a controlled space for experimenting with different parameters, scenarios, and inputs. Although not comprehensive, this test environment covers the most common geometric layouts, allowing me to quickly test and…
-
Scalable Audio Propagation for UE5 | Introduction
Demonstration Video Spoilers! Overview This series of blog posts will document the development process of my GAM230 specialist practice project, “Scalable Audio Propagation.” I will break down the steps involved and explain my rationale for key development decisions. Additionally, I will discuss any issues encountered, how I overcame them, or how I plan to address…