理论教育 控制声音-VegaPrime虚拟现实开发技术

控制声音-VegaPrime虚拟现实开发技术

时间:2023-11-24 理论教育 版权反馈
【摘要】:声音类继承图如图6.16.2所示,它负责声音的播放管理,依据观察者与声源之间的相对位置和速度,它负责调节声音的音量和音调。图6.16.3OpenAL 安装界面对于声音的控制,首先需要准备好声音文件。图6.16.4建立vpAudioListener 对象和vpAudioSoundSpatial 对象建立vpAudioListener 对象和vpAudioSoundSpatial 对象完成后,需要特殊的配置才能完成声音的控制,关键代码如下:pObserver_myObserver->addAttachment;pObject_Hummer->addChild;第1句添加声音的倾听者到观察者上,第2句添加声音播放为汽车的“孩子”,这样就完成了声音播放的特殊配置。

控制声音-VegaPrime虚拟现实开发技术

控制声音需要首先引入两个头文件,依次为:

#include "vpAudioListener.h"

#include "vpAudioSoundSpatial.h"

聆听类继承图如图6.16.1所示,它使观察者可以倾听场景中正在播放的声音。声音类继承图如图6.16.2所示,它负责声音的播放管理,依据观察者与声源之间的相对位置和速度,它负责调节声音的音量和音调。

图6.16.1 聆听类继承图

图6.16.2 声音类继承图

需要特别注意,在Vega Prime应用程序中播放声音,需要对声卡进行特殊的驱动,可以到网络上找到OpenAL,其安装界面如图6.16.3所示。

图6.16.3 OpenAL 安装界面

对于声音的控制,首先需要准备好声音文件。在应用中,把"C:/Program Files/MultiGen- Paradigm/resources/data"目录下的"audio/wav"目录复制到应用程序的data 目录下,将使用其中的"chopper.wav"文件。这样,就准备好了要播放的声音文件。

在接下来的程序设计中,须先对声音模块进行初始化,其代码如下:

vpModule::initializeModule("vpAudio");

接着,利用路径搜索对象添加声音文件的路径:

CTS_pSearchPath_mySearchPath->append(CTS_RunPath+"//data//audio//wav");

然后,需要定义vpAudioListener 对象和vpAudioSoundSpatial 对象。为了便于在程序的其他地方控制声音的播放,定义了一个静态成员变量来控制声音的播放,其代码如下:(www.daowen.com)

static vpAudioSoundSpatial* pAudioSoundSpatial_mySound1;

vpAudioSoundSpatial* PublicMember::pAudioSoundSpatial_mySound1=NULL;

这样,在建立对象时,代码有一些不同,分别为:

vpAudioListener* pAudioListener_myAudioListener=new vpAudioListener();

pAudioSoundSpatial_mySound1=new vpAudioSoundSpatial();

其中pAudioListener_myAudioListener 比较简单,不需要特殊考虑。而pAudioSoundSpatial_ mySound1 相对复杂,以下关键代码需要注意:

pAudioSoundSpatial_mySound1->setFileName("chopper.wav");

pAudioSoundSpatial_mySound1->setEnable(false);

第1句代码设置具体的声音文件;第2句设置是否播放声音。建立两个对象的具体代码如图6.16.4所示。

图6.16.4 建立vpAudioListener 对象和vpAudioSoundSpatial 对象

建立vpAudioListener 对象和vpAudioSoundSpatial 对象完成后,需要特殊的配置才能完成声音的控制,关键代码如下:

pObserver_myObserver->addAttachment(pAudioListener_myAudioListener);

pObject_Hummer->addChild(pAudioSoundSpatial_mySound1);

第1句添加声音的倾听者到观察者上,第2句添加声音播放为汽车的“孩子”,这样就完成了声音播放的特殊配置。具体控制声音的播放与否完全取决于应用需要,可以自由实现。在开发中,利用键盘控制声音的播放。在汽车前进时,声音播放;而在汽车后退时,停止播放声音。作为键盘函数的部分功能,具体代码如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈