本教程基于Unity2017.2及Visual Studio 2017
本教程编写时间:2017年12月11日
立体音效给Holograms注入了生命,并将它们融入现实世界。Holograms由光影和声音组成,你看不到Holograms的时候,空间声音可以帮助你找到它们。空间声音不像你会在收音机上听到的声音,它是在3D空间中的声音。借助空间声音,可以使Holograms听起来像是在你身后,在你旁边,甚至在你的头上!在这门课程中,你将:
- 配置开发环境用以使用Microsoft Spatial Sound
- 使用立体音效来增强交互
- 将立体音效与空间映射结合
- 学会音效设计和混合的最佳实践
- 使用音效来增强特殊效果,将用户带入混合现实的世界
本文使用了官方教程的资源
原地址
如果下载有困难,百度云地址
在Hierarchy面板中,选中HolographicCollection下的POLY,在Inspector面板中查看AudioSource组件,我们可以看到没有Spatialize复选框
默认情况下,Unity没有加载spatializer插件,我们需要按下列步骤手动加载:
打开菜单File > Build Settings,选择Universal Windows Platform,点击Switch Platform按钮
App
文件夹并选择该文件夹下面的指引可以给一个hologram加上立体音效
- 在Hierarchy面板中,选中HolographicCollection下的POLY
- 在Inspector面板的AudioSource组件中,点击AudioClip边上的小圆圈,在弹出的对话框中选择 PolyHover
- 点击Output边上的小圆圈,在弹出的对话框中选择 SoundEffects
Decibel 工程使用Unity AudioMixer组件来为各组声音调整声音级别。通过这种方式对声音进行分组,可以调整总体音量,同时保持每个声音的相对音量。
- 在AudioSource中,展开3D Sound Settings。
- Doppler level设置为0。
将Doppler level设置为零可禁止由运动(Hologram或用户)引起的音高变化。多普勒的一个典型例子是快速移动的汽车。当汽车靠近静止的听众时,发动机的音高升高。当它通过听众时,音高随距离降低。
以下说明使POLY可以隐藏在身后,以便您可以使用声音来定位全息图。
- 在Hierarchy面板中,选择Managers。
- 在Inspector面板中,enable Keyword Manager。
- 在Keyword Manager中,展开Keywords and Responses,然后点击Go Hide。
- 将No Function更改为PolyActions.OnSelect。
GestureSoundManager执行以下任务:
- 创建并配置一个AudioSource。
- 将 AudioSource 放置在适当的位置
- 播放与该手势关联的音频
手势与音频剪辑的关联由GestureSoundHandler.cs确定
build测试一下!
部署应用程序之后:
- 当你在POLY附近移动时,观察声音如何变化。
- 说“Go hide”让POLY移动到你身后的位置。通过声音找到它。
- 凝视Energy Hub的底部。点击并向左或向右拖动旋转全息图,并注意声音如何变化。
注意:有一个显示语音命令面板会一直跟随你,让你了解语音命令是什么。
Audio Emitter类提供了以下功能:
- 还原AudioSource的volume的任何更改
- 从用户的位置到AudioEmitter脚本附着的物体执行 Physics.RaycastNonAlloc
RaycastNonAlloc可以优化性能,因为它限制了射线的数量以及结果的返回数量
- 对遇到的任何 IAudioInfluencer,调用 ApplyEffect 方法
- 对于不再碰到的 IAudioInfluencer ,调用 RemoveEffect 方法
注意:AudioEmitter 基于真实时间更新,而不是每帧更新。这是因为人的移动速度没那么快,一般只需要每1/4或1/2秒更新即可。但是 Holograms 快速从一点移动到另一点会打破这种现象。
Audio Occluder 实现了 IAudioInfluencer 接口:
- 使用 AudioLowPassFilter 实现一种遮挡效果,AudioLowPassFilter 挂在 AudioSource上面并由 AudioEmitter 管理
- 给AudioSource加上音量衰减效果
- 通过设置中性截止频率和禁用滤波器来禁用该效果(用作中性线的频率是22 kHz(22000 Hz)。选择这个频率是因为它高于人耳可以听到的标称最大频率,这对声音没有明显的影响)
部署完成后:
- 说 “Go Charge” 让 POLY 进入 Energy Hub
注意声音的变化。应该听起来很闷,有点安静。如果您可以将自己的位置放置在墙壁或其他物体与能源中心之间,则由于现实世界的遮挡,您应该注意到声音的进一步消声。
- 说 Come Here” 让 POLY 离开 Energy Hub 并来到你面前
请注意,一旦POLY离开Energy Hub,声音遮挡将被删除。如果您仍然感到遮挡,POLY可能被现实世界遮挡。尝试移动以确保您对POLY有清晰的视线。
如果要创建虚拟现实场景,请选择最适合虚拟环境的房间模型。
本节讨论关键声音和体验设计注意事项和准则。
这样可以避免使用特殊的代码来调整每个声音的音量级别,这可能很费时并且很麻烦。
HoloLens是一个不受限制的全息电脑,用户可以在移动中使用。一定要通过走动测试音频的混合情况。
在现实世界中,狗不会从尾巴上吠叫,人的声音也不会从他/她的脚上出来。避免让声音从Hologram的意想不到的地方发出。
对于小型Hologram,从几何中心发出声音是合理的。
人声和音乐很容易定位。如果有人叫你的名字,你可以非常准确地确定声音来自哪个方向以及距离多远。短而陌生的声音难以定位。
生活经验在我们定位声音中很重要,这就是为什么人声特别容易定位的原因之一。放置声音时,注意用户已知的经验是很重要的。
例如,当有人听到鸟儿歌曲时,他们一般会抬头看,因为鸟儿往往在视线之上(飞行或在树上)。用户转向正确的声音方向并不少见,但是往错误的方向上看找不到holograms时会感到困惑或沮丧。
在现实世界中,如果我们听到声音,我们通常可以识别发出声音的对象。这也应该适用于你的经验。用户听到声音,从声音的起源处看不到物体,这可能是非常令人不安的。
但是有一些例外。例如,场地中的蟋蟀等环境声音不需要可见。生活经验让我们熟悉这些声音的来源,因而不需要看到它。
混合现实体验允许在现实世界中看到全息图。真实世界的声音也应该被听到。70%的音量使用户能够听到他们周围的世界。
100的音量类似于虚拟现实体验。在视觉上,用户被传送到了到不同的世界,同时声音应该掩盖现实的声音。
在设计混音时,创建合适的分类并能修改音量是很有用的。这保留了每种声音的相对级别,同时能够对整体混音进行快速简单的更改。常见的类别包括:音效,环境音,配音和背景音乐。
根据用户正在(或不在)寻找的目标来改变混音通常是有用的。这种技术的一个常见用途是降低视野之外的hologram的音量,使用户更容易关注其前面的信息。另一个用途是增加音量,吸引用户的注意力到一个重要的事件。
建立混音时,建议先从背景音开始,并根据重要性添加图层。通常情况下,这会导致每个图层比以前更响亮。
将你的混音想象成一个倒置的漏斗,底部最不重要(通常是最安静的声音),建议按照下面的图表来构建你的混音。
配音是一个有趣的情景。根据将要创建的体验,您可能希望获得立体声(非定位)或空间化的声音。两个微软的应用是优秀的例子。
HoloTour 使用立体声配音。当叙述者描述用户正在观看的位置时,声音是一致的,并且不会根据用户的位置而变化。这使得叙述者能够描述场景而不会从环境的立体声音中消失。
Fragments以侦探的形式利用立体音效。侦探的声音被用来帮助使用者注意一个重要的线索,就好像一个真实的人在房间里一样。这使我们能够更深入地融入解决这个谜团的经历中。
使用空间声音时,10 - 12个发射器将消耗大约12%的CPU。
音频数据可能很大,特别是在普通采样率(44.1和48 kHz)下。一般的规则是,音频文件长度超过5 - 10秒应该流式传输,以减少应用程序内存的使用。
在Unity中,您可以在文件的导入设置中标记用于流式传输的音频文件。
创建视图到一个隐藏的世界,在视觉上引人注目。
当全息图或用户接近隐藏的世界时,通过添加音频效果增强真实感。
上述 AudioChorusFilter 的相关参数设置增加的用户声音的丰富性
- User Voice Effect中,展开Echo Parameters,Delay 设置为 300,Decay Ratio 设置为 0.2,Original Sound Volume 设置为 0
上述 AudioEchoFilter 的相关参数设置让用户的声音有回音
User Voice Effect 脚本负责:
- 测量用户和脚本所在的GameObject之间的距离。
- 确定用户是否面向GameObject(无论距离如何,用户都必须面对GameObject才能启用效果)
- 应用和配置AudioChorusFilter和AudioEchoFilter到AudioSource。
- 通过禁用过滤器来禁用该效果。
User Voice Effect 使用了 Mic Stream Selector 组件, 该脚本来自 MixedRealityToolkit for Unity, 录制高质量的音频流并传到Unity的音效系统
部署应用程序之后:
- 面对一个平面(墙,地板,桌子),并说 Show Underworld
underworld将显示,所有其他holograms将被隐藏。如果你没有看到Underworld会,确保你正面向真实世界的表面。
- 在underworld hologram 1米内,开始讲话。
会有音频效果加到你的声音上!
- 远离 underworld hologram,效果会消失。
- 说 Hide Underworld 来隐藏underworld hologram。
underworld hologram将隐藏,以前隐藏的全息图将重新出现。
洪流学堂,最科学的Unity3d学习路线,让你快人一步掌握Unity3d开发核心技术!