Ok so if I go into FMOD Designer, load up the examples.fdp project, open drumloop, go to Event editor, play it, bring up the Audition 3D tool I note the following behavior:
Place the listener position at a position left of centre (listener), ensuring the z co-ordinate is precisely 0. Now try to move the listener position to the right of the listener, still keeping the z co-ordinate at zero. Notice the volume goes from dominant left channel, to stereo 2D (same volume left and right speaker), then to dominant right channel. However it’s a very sharp transition, and even if I bring the zoom level right down, the sound can move a matter of millimetres with the same result (so there’s no form of lerping). If I move the z co-ordinate to a non-zero value and try again, the issue goes away.
In theory this is correct, as the listener and emitter represent a point in space with no volume (size) – this being an approximation of reality. I’ve been using set3DPanLevel to try and overcome this transition, as it’s very noticeable in certain parts of our game, but using the FMOD EventSystem makes it difficult to continue with this approach (you can’t modify the 3D pan level of any given SoundEvent). The effect is most obvious when I’m emulating a sound volume. There is a sphere that is marked to emit a sound, and the sound emitter is placed on nearest point from listener to the sphere volume. As the listener moves into the sphere volume the listener and sound source become co-incident. It’s at this moment the user hears the sharp transition as the sound effectively becomes stereo 2D (when listener pos == sound source pos).
So my question is what’s the best way to overcome this issue? I would like to be able to give the listener a radius or something, to customise the transition falloff. In the past, once the distance between listener and sound went below 0.5 metres, I would lerp the 3D pan level to 0 as the distance closed to eliminate the transition.
Would any configuration of set3DSpread, set3DConeSettings help the issue (I can’t get my head around exactly what these do)?
As reference (though a bit unrelated), I get a similar sharp transition when messing with set3DPanLevel, as this level goes from 0 to nonzero, covered in thread http://184.108.40.206/forum/viewtopic.php … n+listener.
- Jade_Lee asked 10 years ago
Have you tried adding a 3D Pan Level effect to the event in Designer, and linking it to a 3D distance parameter? I just tested this out, and it gave pretty good results for me. The advantage with this approach is that FMOD does everything for you.
[list:2ytnpodj][:2ytnpodj]The "Simulating Distance" example on page 120 of the Designer manual talks about 3D distance parameters.[/:m:2ytnpodj]
[:2ytnpodj]You may need to use the fmod_eventplayer utility to hear the results, as currently there appears to be a bug in the Audition 3D tool wherein 3D distance parameters are not updated correctly. I have added this bug to our tracker, and it should be fixed soon.[/:m:2ytnpodj][/list:u:2ytnpodj]
How in your game do you have sounds going exactly through 0,0,0? (relative to listener), do you not have collision on these objects and they go straight through you? 0,0,0 is a special case, and all you have to do is move very slightly off that exact axis point and it will sound ok.
[list:axbjxs6u][:axbjxs6u]You may need to use the fmod_eventplayer utility to hear the results, as currently there appears to be a bug in the Audition 3D tool wherein 3D distance parameters are not updated correctly. I have added this bug to our tracker, and it should be fixed soon.[/:m:axbjxs6u][/list:u:axbjxs6u]
This bug is now fixed. The fix will be in the next version of Designer.
Ben the solution with FMOD Designer will suit perfectly for all the cases where this is an issue (as there are only a small subset of sounds that could exhibit this behavior). I was aiming for a general purpose (programmatic) solution so problem cases wouldn’t have to be identified and resolved, but in practice these issues are rare (generally limited to footsteps and special sound emitter volumes) and it’ll be fine to customise the sound events as detailed.
[quote="brett":1vao42wd]How in your game do you have sounds going exactly through 0,0,0? (relative to listener), do you not have collision on these objects and they go straight through you? 0,0,0 is a special case, and all you have to do is move very slightly off that exact axis point and it will sound ok.[/quote:1vao42wd]
Not that it makes much of a difference, but I believe the same issue occurs with (0,0, z) where z can be any (height) value. So footsteps playing beneath the listener arbitrarily switch between left and right speaker as x co-ordinate alternates between slight positive and negative (presumably due to rounding error). However the more common case was emulation of sound emitter volumes. If I have a sphere, and select closest point between listener and sphere to be the sound source position, when the listener moves inside the sphere the listener and sound position become co-incident creating the (0,0,0) case. If we were just using stereo I’d offset the position slightly in front of user. But if we’re using a 5.1 setup and I slightly offset forward (or backward) I expect it will cause anomolies with front and rear volumes (in same way left and right pan). For example if I always offset in front, but the player walks backwards into sound emitter, the offset will switch from behind to in front when come into contact. I could implement some tracking mechanism to make more intelligent decisions about which side to offset the sound on, but I’d rather use some form of set3DPanLevel solution.
- Jade_Lee answered 10 years ago
Please login first to submit.