Dan discusses updates to his Soundscape plugin made for the Matrix Awakens or City Sample demo including conditional spawning and the Color Point system.
Think the real lesson here is “Bees should spawn next to plants”. Save the Trees! 🐝 🌱 🌲 Thanks for sharing more about this system. Makes a lot of sense and seems like a good method of working with other art teams.
Thanks, the main idea here is that when you have a large, procedurally generated environment, you just don't have the bandwidth to change a carefully curated sound implementation around. So I basically built a system that just worked no matter what artists did or changed.
Dear Dan, thank you very much for all your work. I am trying to integrate your system into my project. So far I have been using a specific class that I created. This class generates multi-sphere line traces that count hits on specific channels I created (for example: tree). The more occurrences there are, the more "intense" the sound will be when player is near trees. With this technique, it is easy to set the channel directly on the mesh. With soundscape, which I really want to use, I have trouble understanding the concept of hashmap and where to tell my foliage tree "you are a tree".
There is a Blueprint function you can call to add a Color Point Collection and to remove a Color Point Collection to the hashmap. But it's not an ideal method since it will encode the hashmap on-the-fly, during runtime. The Color Point Collection is an array of maps mapping a Gameplay Tag Color Point to an array of Vectors, which indicate the location of each point. A spatial hashmap is a method of bisecting space into discrete cubes and collapsing 3D data like a vector into 1D data like an integer. Each cube of space gets its own integer, like enumerating the squares on a chessboard. All the color points that happen to be in one cube of space all get lumped together as a single density value. In the future, I would like to add utilities to map things like static meshes to color points, but that work hasn't been done yet. There are a few more functions available in C++ which I used on the Matrix Awakens to cache hashmap data during Editor time, which meant the encoding didn't have to be done during runtime (which is a good optimization). But you'd have to roll your own version of that until I can add more features.
@@DanReynoldsAudioThanks for your detailed answer! I am looking forward to the new version of Soundscape. We work with people suffering from different disorders (Alzheimer's, depression, anxiety) and the sound aspect is a very important topic for us.
Apologies, friends, for the upload snafu. UA-cam was unable to process some minor edits I needed to make to the video and so I had to delete and re-edit.
Soundscape is great! I have a couple questions: 1. How do you get the debug info at the location when a sound is spawned? 2. I am currently using the valley of the ancient version of this plugin. If i update it with the city sample version of the plugin in my current project, will it get rid of all my color and palette data?
1. au.3dVisualize.enabled 1 (docs.unrealengine.com/4.27/en-US/WorkingWithAudio/AudioConsoleCommands/ ) 2. You will have to replace the old plugin, but the files should still work, but you will need to manually go in and fix some of the data that changed (like clamp altitude is now an enum). I've been asked to make it an Engine plugin, so I'm working on that now, which means I'll need to follow the deprecation guidelines after I do.
@@samkaighin4009 You can add gameplay tags directly in the Project Settings, but I prefer to make a Data Table based on the GameplayTagRow and add those tables to the Project via the Project Settings instead of entering them directly in the Project Settings UI.
Hi Dan, thanks for your really great work and it really helps me with designing the fundamental pipeline of auido system for a new project. I have a question regarding the LOD Color Point Hash Width and LOD Color Point Hash Distance at about 20:00 of this video. It eludes me that what exactly the "distance" here means. As far as I understand it, the Width here refers to the width of the spatial area split by some algorithm, say KD Tree or something. However, between what and what does the "Distance" refer to? Is it between the camera (or listener) and the player? Or between the camera and the spawned audio instance? If it is the latter, how an audio instance can be spawned before we actullay know WHICH auido is supposed to be spawned, in that the system will first check the density of some object in some area? BTW, another question arises here: how does the process of examining the density of something in an area work? Does the system use a sphere centered at the player with some radius to dynamically detect the color points within this sphere?
I might make a special video on this in the future, but until then, check out the Color Point explanation I give in this presentation: ua-cam.com/video/99uP2WuU2Jo/v-deo.html
Im having trouble getting the color points working. I have a gameplay tag for "trees" attached to a few actors. I dedicated the Branches color to them. And it doesn't seem to grab them for the palette. Is there a setting for them aside from assigning gameplay tags, that factor into the color point system?
One of the things I ran into on this demo was that the tree root location was under the ground and for birds, I wanted the location of the color point up in the trees. So I ended up having to add an offset vector. The other thing to think about is density and space, increasing the sampling volume (grid size), will increase the density per sampling region. Additionally, you can increase the chances of birds spawning in the right locations by narrowing the spawning behavior to increase chances. (Altitude constraints, azimuthal constraints, etc.)
I wanted to call it pigments, but my boss pushed back, said I was going too deep into the metaphor. Basically it's a valuation system for how concentrated the metadata is in that partition of space.
@@DanReynoldsAudio It's very impressive system to control data in such big scaling projects as Matrix City Sample. Basically after showing your presentation of Metasounds implementation in this project I've started digging deeper into it. Now back to Color Points, if I get it of the right side, seems like the technique of creating a blueprint to spawning randomly a sound on location (player's location or self blueprint location) but in a much bigger scale that is impossible to control it with blueprints without overspending sources. Instead of this take the location data of the entire world to use it for each actor separately to spawning sounds.
@@DanReynoldsAudio Hi here is a video question. If you get the time to have a look at it, it would be great ua-cam.com/video/wHcMzB4zdDc/v-deo.html I go into depth about how i want the convolved reverb to transition. But i am unable to implment it using the tutorial you put up where you overide the submix with a crossfade( which is a transition that I dont think will work in my case). Thank you again :)
@@DanReynoldsAudio Would you consider uploading a version that's in a more bare bones project ala the demo you're showing off in this video? I'll have to download the vanilla UE5 engine/editor + city sample to extract this and play with it in my game project (that runs on a custom ue5 build), and suffer from only having 35 gb left on disk >D The real fix is to just get another disk naturally. Appreciate these videos though. You're not making it easy sticking with FMOD showing all of this!
@@toppefall It's not really up to me, but it's possible that sometime later on, it will be included as an Engine plugin, in which case, everyone will be able to add it to their projects pretty easily.
Think the real lesson here is “Bees should spawn next to plants”. Save the Trees! 🐝 🌱 🌲 Thanks for sharing more about this system. Makes a lot of sense and seems like a good method of working with other art teams.
Thanks, the main idea here is that when you have a large, procedurally generated environment, you just don't have the bandwidth to change a carefully curated sound implementation around. So I basically built a system that just worked no matter what artists did or changed.
Dear Dan, thank you very much for all your work. I am trying to integrate your system into my project. So far I have been using a specific class that I created. This class generates multi-sphere line traces that count hits on specific channels I created (for example: tree). The more occurrences there are, the more "intense" the sound will be when player is near trees. With this technique, it is easy to set the channel directly on the mesh. With soundscape, which I really want to use, I have trouble understanding the concept of hashmap and where to tell my foliage tree "you are a tree".
There is a Blueprint function you can call to add a Color Point Collection and to remove a Color Point Collection to the hashmap. But it's not an ideal method since it will encode the hashmap on-the-fly, during runtime.
The Color Point Collection is an array of maps mapping a Gameplay Tag Color Point to an array of Vectors, which indicate the location of each point.
A spatial hashmap is a method of bisecting space into discrete cubes and collapsing 3D data like a vector into 1D data like an integer. Each cube of space gets its own integer, like enumerating the squares on a chessboard. All the color points that happen to be in one cube of space all get lumped together as a single density value.
In the future, I would like to add utilities to map things like static meshes to color points, but that work hasn't been done yet. There are a few more functions available in C++ which I used on the Matrix Awakens to cache hashmap data during Editor time, which meant the encoding didn't have to be done during runtime (which is a good optimization). But you'd have to roll your own version of that until I can add more features.
@@DanReynoldsAudioThanks for your detailed answer! I am looking forward to the new version of Soundscape. We work with people suffering from different disorders (Alzheimer's, depression, anxiety) and the sound aspect is a very important topic for us.
Apologies, friends, for the upload snafu. UA-cam was unable to process some minor edits I needed to make to the video and so I had to delete and re-edit.
Soundscape is great! I have a couple questions:
1. How do you get the debug info at the location when a sound is spawned?
2. I am currently using the valley of the ancient version of this plugin. If i update it with the city sample version of the plugin in my current project, will it get rid of all my color and palette data?
1. au.3dVisualize.enabled 1 (docs.unrealengine.com/4.27/en-US/WorkingWithAudio/AudioConsoleCommands/ )
2. You will have to replace the old plugin, but the files should still work, but you will need to manually go in and fix some of the data that changed (like clamp altitude is now an enum).
I've been asked to make it an Engine plugin, so I'm working on that now, which means I'll need to follow the deprecation guidelines after I do.
@@DanReynoldsAudio wicked thanks for that, looking forward to using it as an engine plugin 😊
@@DanReynoldsAudio having some trouble with gameplay tags, unsure how to properly apply them
@@samkaighin4009 You can add gameplay tags directly in the Project Settings, but I prefer to make a Data Table based on the GameplayTagRow and add those tables to the Project via the Project Settings instead of entering them directly in the Project Settings UI.
@@DanReynoldsAudio sweet, then how do you add a tag to something? Say the 'flowers' in your video?
Hi Dan, thanks for your really great work and it really helps me with designing the fundamental pipeline of auido system for a new project. I have a question regarding the LOD Color Point Hash Width and LOD Color Point Hash Distance at about 20:00 of this video. It eludes me that what exactly the "distance" here means. As far as I understand it, the Width here refers to the width of the spatial area split by some algorithm, say KD Tree or something. However, between what and what does the "Distance" refer to? Is it between the camera (or listener) and the player? Or between the camera and the spawned audio instance? If it is the latter, how an audio instance can be spawned before we actullay know WHICH auido is supposed to be spawned, in that the system will first check the density of some object in some area? BTW, another question arises here: how does the process of examining the density of something in an area work? Does the system use a sphere centered at the player with some radius to dynamically detect the color points within this sphere?
I might make a special video on this in the future, but until then, check out the Color Point explanation I give in this presentation: ua-cam.com/video/99uP2WuU2Jo/v-deo.html
@@DanReynoldsAudio Wow, it's really a detailed presentation. I will go through it. Many thanks Dan! ;)
Im having trouble getting the color points working. I have a gameplay tag for "trees" attached to a few actors. I dedicated the Branches color to them. And it doesn't seem to grab them for the palette. Is there a setting for them aside from assigning gameplay tags, that factor into the color point system?
One of the things I ran into on this demo was that the tree root location was under the ground and for birds, I wanted the location of the color point up in the trees. So I ended up having to add an offset vector.
The other thing to think about is density and space, increasing the sampling volume (grid size), will increase the density per sampling region. Additionally, you can increase the chances of birds spawning in the right locations by narrowing the spawning behavior to increase chances. (Altitude constraints, azimuthal constraints, etc.)
Thanks for the very good presentation. May I ask why you name it Color Points ? Maybe i missed something through watching?
I wanted to call it pigments, but my boss pushed back, said I was going too deep into the metaphor.
Basically it's a valuation system for how concentrated the metadata is in that partition of space.
@@DanReynoldsAudio It's very impressive system to control data in such big scaling projects as Matrix City Sample. Basically after showing your presentation of Metasounds implementation in this project I've started digging deeper into it. Now back to Color Points, if I get it of the right side, seems like the technique of creating a blueprint to spawning randomly a sound on location (player's location or self blueprint location) but in a much bigger scale that is impossible to control it with blueprints without overspending sources. Instead of this take the location data of the entire world to use it for each actor separately to spawning sounds.
@@saxelectro Color Points act as a spatial filter to allow certain sounds to play when they otherwise would have not.
@@DanReynoldsAudio Thanks for the definition. I need to study further on this.
Hi Dan I’ve been using your videos to learn about Audio in UE4/5, and there so helpful.
Are you open to questions? Could I send one video in youtube?
You can just ask. Also there's the Facebook Unreal Tips and Tricks group, and the Discord Unreal Slackers as a resource.
@@DanReynoldsAudio Hi here is a video question. If you get the time to have a look at it, it would be great
ua-cam.com/video/wHcMzB4zdDc/v-deo.html
I go into depth about how i want the convolved reverb to transition.
But i am unable to implment it using the tutorial you put up where you overide the submix with a crossfade( which is a transition that I dont think will work in my case).
Thank you again :)
@@MyNamesTommy_ ua-cam.com/video/PxHsSL0ki5s/v-deo.html
Is this plugin available in the plugins area of UE5?
You can get this version of the plugin in the City Sample demo, an older version is available in the Valley of the Ancient demo.
@@DanReynoldsAudio Would you consider uploading a version that's in a more bare bones project ala the demo you're showing off in this video? I'll have to download the vanilla UE5 engine/editor + city sample to extract this and play with it in my game project (that runs on a custom ue5 build), and suffer from only having 35 gb left on disk >D The real fix is to just get another disk naturally. Appreciate these videos though. You're not making it easy sticking with FMOD showing all of this!
@@toppefall It's not really up to me, but it's possible that sometime later on, it will be included as an Engine plugin, in which case, everyone will be able to add it to their projects pretty easily.
Looks great, just the hashmap generation is a bit unclear right now.