microsoft / ProjectAcoustics

Microsoft Project Acoustics
https://aka.ms/acoustics
Creative Commons Attribution 4.0 International
142 stars 22 forks source link

Override material properties #29

Open AndersMalmgren opened 4 years ago

AndersMalmgren commented 4 years ago

We are doing a POC with Project Acoustics on one of our scenes, a office building. Walls and ceiling uses 0.4 absorption to get correct acoustics for that kind of environment. But in the rest rooms we use same wall/ceiling material but a marble floor material. But the 0.4 absorption kills the marble echo effect. I could duplicate wall and ceiling materials and configure them separate for the rest rooms, but that will introduce more draw calls, plus its not a clean workflow.

I suggest you introduce a new component we can put on meshes so we can override material config. Either with an offset value or an absolute value. That way we can design variation.

AndersMalmgren commented 4 years ago

Actually this could be added to the existing geo-component, the one we use to tag meshes.

AndersMalmgren commented 4 years ago

Maybe this one is not terrible important, with some fine tuning the result is good for this room. Maybe there is other use cases though when it could be good to override the material

jaegrover commented 4 years ago

Hi @AndersMalmgren !

I hope you don't mind me chiming in here - I just wanted to mention that we've run into a similar issue, and how our team is currently handling it.

We are using Atlassed materials for pretty much all of the environmental meshes in our game. I'm not an art expert by a long shot, but if I understand correctly, this means that material data is shared between a bunch of different assets, even if they look different, for optimization purposes. For example, we might have a metal barrel, wooden crate, and plastic container all using an Atlas_Environment_01 visual material.

When our map is ready for acoustics geo tagging, we create a duplicate version of the map with an _Audio prefix. For the Atlas_Environment_01 example above, we would then copy and paste that material a few times, and rename the copies e.g. sfx_mat_Atlas_Environment_01_wood, _01_metal and _01_plastic. Then, we simply drag and drop those materials onto the correspond game objects. The process has taken an hour at most for some of our larger maps. We can then set custom absorption values for those assets individually.

I'm sure there's a better way to do this long term, but this is our currently workflow, and we were able to get all of our maps tagged up and ready for submission in a couple of days :) The downside is simply that it's not great for iteration; the maps in our project were close to finalized before we added in PA.

I hope that is helpful :) Have a great day!

AndersMalmgren commented 4 years ago

Hi @jaegrover

Thanks for the tip, yeah a bit of workflow nightmare doing that :P Luckily for us we got it working without the need to have muttliple settings for same material. The marble floor in this case added so much reverb so we could keep the walls the same anyway, they add enough reverb :P