Creating a Dynamic Foley System in Atom Craft
Due to the continuous and interactive nature of VR experiences, audio systems often require a bit more complexity. In a traditional 3D game, reaching out to grab something might be tied to a single linear animation. For this, we could assign a few performed Foley variations, and pick one to playback each time. In a VR experience, a player can move around in any number of unpredictable ways, from quick swipes to slow and steady reaches. Because of this, we need to think about implementation a bit differently.
In this blog, we will create an interactive Foley system to ground the player in the VR world by sonifying their movements.
This project was created using CRI Atom Craft Ver.3.43.09 and UE4.24.3
First, we will need to create some Foley layers. We can design several layers of increasing intensity, ensuring that they all loop seamlessly. Some rough examples are provided in the project files above.
With the Foley loops ready, we can jump into Atom Craft and set everything up. We will need to:
- Rename AisacControl_00 to “Aisac_Foley”
- Create a Polyphonic Cue named “Cue_Foley”
- Drag each Foley waveform Material onto a separate Track
- On each, right-click and create new AISAC as follows:
- AISAC Name: “LightFoley,” “MediumFoley,” and “HeavyFoley” as relevant
- AISAC Control: Aisac_Foley
- AISAC Graph: Volume
- For each, create curves that fade in and out based on the intensity
We can also add some Bandpass – Cutoff High and Pitch curves on the whole Cue to create some additional modulation, which helps to bind the layers together.
Depending on the nature of our game, we could also create several textural components to playback as separate Cues. Perhaps the character is wearing some buckles or plate armor. We could use the same AISAC to control the intensity of these layers too.
Another crucial part of the VR experience is 3D audio spatialization. To enable this setting, we can select the Waveform Region and set Pan Type to 3D Positioning [3D] in the Inspector for each Region. This feature can be enabled on the game-engine programming side as well. We don’t need to worry about the other 3D settings (such as attenuation) since this Foley won’t get far enough away from the player to matter.
Since our Foley system will be dynamic and interactive, it will require a great deal of iteration and finessing to get just right. The Session View is an essential tool for getting our sounds production-ready. The XY pad is especially helpful in this regard since we can do some rough performances to mimic moving around. We can use this tool while setting different AISAC curves to ensure that both fast and slow movements sound natural.