继续词霸下FMOD——3D混音

介绍

在外界环境不同的位置会拥有不同的混音效果。理念上,当听者穿过虚拟环境时,声音混音效果就会改变。要改变混音的属性可以通过FMOD提供的3DReverb API。注意:这个技术需要software channel

3D混音

3d混音系统允许你在3D世界中放置多个虚拟的混音。每个混音的定义:

*它在3D世界中的位置

*区域,也即混音的影响区域(用minnum与maxnum distances)

*这个区域的混音属性

在运行的时候,FMOD会根据听者的位置、混音叠加情况等信息来改变3D混音效果的特性。这个方法允许FMOD使用一个单独的混音DSP单位区提供一个动态的混音。这个处理使用下面的图片表示下:

clip_image002

当听者位于一个或多个混音的区域中时,听者将会听到一个有利的所有混音的混合。当听者在混音影响范围的外面时,混音将恢复回它的默认混音设置。需要特别注意的是这种技术只能用于3D声音的混音。要想2D声音产生这种效果,你需要额外调用下:System::setReverbProperties(这将导致一些CUP与内存的耗费)。

另外对于环境中可能有多少个混音需要先估计下的。在一些情况下,需要更加真实的效果,我们建议使用多物理混音,可以查看章节”Usingmultiple reverbs”

设置默认的周围环境混音

这节将会看到默认的周围环境混音设置(ambient reverbsettings).这是非常重要的,只有当听者没有在任何一个混音区域中时才会调用这个默认的设置,举个例子,我们将使用混音的FMOD_RESET_OFF:

FMOD_REVERB_PROPERTIES prop1 = FMOD_RESET_OFF;

System->setReverbAmbientProperties(&prop1);

创建一个3D混音

现在将创建一个虚拟的混音,调用System::createReverb,然后使用Reverb::SetProperties来设置它的特性:

FMOD::Reverb *reverb;

Result =system->createReverb(&reverb);

FMOD_REVERB_PROPERTIES prop2 = FMOD_RESET_CONCERTHALL;

Reverg->setProperties(&prop2);

设置3D混音属性

现在必须要设置混音的3D属性了。使用reverb::set3DAttributes可以设置源位置、覆盖区域(使用minnum,maxnum).

FMOD_VECTOR pos = {-10.0f, 0.0f, 0.0f};

Float mindist = 10.0f;

Float maxdist = 20.0f;

Reverb->set3DAttributes(&pos,mindist, maxdist);

使用这个方法来设置听者的位置,System::set3dListenerAttributes

FMOD_VECTOR listenerpos = {0.0f, 0.0f, -1.0f};

System->set3DListenerAttributes(0,&listenerpos,0,0,0);

发表评论

邮箱地址不会被公开。 必填项已用*标注

* Copy This Password *

* Type Or Paste Password Here *