Sound(声音)
紧挨着图形组件,声音对象在实时技术中占据着十分重要的位置。在虚拟世界中创建适当的沉浸感时,此对象为实现这种效果的关键所在。用户通过此对象可以听见周围环境的声音并且使用此对象可以使声音在不同的位置之间发生变化。虽然可以使用简单的2D环境声来创建整个环境氛围,但仅传达出环境的动态变化是不够地。随着3D声效开始起效,听着可潜意识地估算到声源的距离并对声源地进行定位,这样就能在包围抓取内体验整个场景。此外,Unigine还支持近乎无限数量的声源。可以使整个声波海洋为美工称作的现实发声。
声音应用具有极大的潜力。声音可用来印证某种特定结构特征。例如波动的回声会暗示我们此刻处在一个圆顶场景中。用脚轻轻地踢石头发出的声响或急速飞驰的车产生的声音 -- 所有这些声音都可以从听觉上进行模仿。通过Unigine可分配一种声音,通过与用来对声音级物理性能进行模仿的物体对象发生接触从而播放这种声音。对于移动源而言比如车,会使用到多普勒效应这样声源相对于听者的运动会被真正地进行模仿。这些发生在声音环境中的变化会为大脑提供更多的详细信息用于判断物体对象的移动方向及准确的移动方式。在声音的帮助下,不仅能在大脑中构建场景还能对场景产生感知。
听力材质的表现性及质量会添加到虚拟世界中,因此开发者正如电影创作者一样若是想完全控制他们在工作中使用的工具也符合逻辑。Unigine提供下列对象用于在3D环境中对声音进行定位:
- Sound Source 代表某个方向或全方位的声源。
- Sound Reverb 代表混响区。
可在一组普通的扬声器或多通道音响系统中创建3D效果。
加载音频#
在添加听力材质到工作中首先出现的问题就是如果这些声音未被合成,那么该如何进行加载。从本质上讲,在游戏中有两种方式可对声音进行加载:
- 声音可从文件中被全部导入。这是一种非常传统的方法,最终会获得所有所需声音资源并且在上传时无延迟现象。但这种方法仅适用于较短的声音资源,因为这种方法与第二种方法相比耗费的内存消耗更高。
- 声音可从某个位置处传出,例如从远程机器中传出。这种情况下,会逐块地对音频数据读取到特殊的缓存中,然后会从此缓存中将声音播放给用户。在回放期间,会以渐进的方式对缓存进行升级更新。虽然这种方法会增加磁盘的通量或普通网络的负载,但对于较长的音轨这是一种恰当的解决方案。
Unigine引擎支持下列使用文件格式:
- WAV (单声道和立体声)。
- Ogg Vorbis (或oga, Ogg 音频配置文件)。
音频 API#
Unigine与Creative Labs生产的声卡相兼容,此公司使用它们自己的环境音频扩展(EAX)提供技术。EAX代表用于音频的大量预设,这些预设可以更快更准确地模仿环境。在其帮助下,声音设计师可使用预设或创建其自己的预设对环境,资源和使用了多个参数的听者进行描述。当环境发生变化时,预设也会发生变化并发生平顺的过渡,存储在预设中的值会被篡改。
要篡改这些参数及预设并执行所有必要的计算比如距离衰减,多普勒效果等,这时需要使用下列API:OpenAL,一种跨平台开源3D音频库。其同样也支持非EAX音频技术。