The latest update to the Oculus Audio SDK adds the long awaited dynamic audio propagation feature.
The Audio SDK spatializes audio sources in real time using head-related transfer functions (HRTF). It also allows for volumetric and ambisonic sounds. This new update improves how it handles reflections and adds modelling of occlusion.
The Old Behavior
The spatializer originally simulated audio reflections by assuming a predefined rectangle around the user. That however assumed the user was in the center of that rectangle. It also obviously doesn’t work properly when moving around a scene.
In early 2018 a feature called Dynamic Room Modeling was added. This allowed developers to define the current room as a 3D rectangle with a position. When the user changed to a new room the developer could update the rectangle for the new space.
This required a relatively large amount of effort on the developer’s part however, and only fully works in perfectly rectangular spaces. It also couldn’t model the transition between different sized spaces properly- such as going from inside to outside.
The New Update
The new update accurately models occlusion and reflections of sound in real time based on the scene geometry. The developer simply needs to tag each object with an acoustic material to let it know how it should absorb or reflect sound. Materials like carpet will absorb far more than materials like metal. There are roughly 20 material types to choose from.
The simulation performs well even on mobile VR, even with many sound sources. This will be important for the the upcoming Oculus Quest.
Valve’s competing Steam Audio has had real time occlusion and transmission modelling since late last year. But reflections have to be prebaked. Facebook’s new update models reflections in realtime- a major step forward for VR audio. This means it will work even as objects (such as vehicles) move around the scene, or if the environment itself is customizable.
UPDATE: article previously stated that Steam Audio had feature parity. Thanks to reddit user /u/Hethree for the correction.