如何为另一个现实发出声音

我们继续有关Windows Mixed Reality的系列文章,并从头开始开发实验室工作格式的Unity混合现实应用程序。 您自己可以与文章的发布同时创建这样的应用程序。 今天,我们将讨论空间声音以及如何在不同的现实环境中营造一种感觉。



整个指南将包括5个部分。 它将每周补充一次。 您可以在下面转到所需的部分。

第1部分: 从Unity导出Windows Mixed Reality的UWP应用程序
第2部分: 设置环境(VR)
第3部分: 控制器
第4部分: 空间声音
第5部分: HoloLens和图形

空间声音


扬声器已准备就绪,现在尝试开始和停止空间声音的播放。 在本节中,我们将添加声源和音频播放控件。

由于我们面临的某些任务与之前完成的任务相似,因此我们将以列表的形式给出说明,以加快该过程。

使用每个大阶段结束时的屏幕快照检查您的操作,并查看说明中的附加链接。

添加声音源


要播放扬声器的声音,您需要向其中添加Unity AudioSource组件。

  1. 在场景中选择Speaker对象,然后单击Add Component-> Audio-> Audio Source。
  2. 单击“音频源”组件的“音频剪辑”属性右侧的小十字线图标,然后选择“冷蓝色泻湖”。
  3. 取消选中“唤醒时播放”复选框,因为我们将使用按钮控制播放。 稍后我们将更改支持空间声音的设置。



将播放控件添加到扬声器


要将播放按钮添加到扬声器,请按照下列步骤操作:

1.在“项目”面板中,在“资产”-> HoloToolkit-> UX-> Prefabs-> Buttons文件夹(资源-> HoloToolkit-> UX-> Prefabs->按钮)中找到CircleButton预制并将其拖到“层次结构”面板中通过将此预制件作为Speaker对象的子代添加到场景中。

2.为添加的按钮命名为PlayButton。



3.通过将“播放按钮”的“变换比例”属性设置为(90,90,90)来增加其尺寸。

4.选择PlayButton对象后,单击添加组件->事件->事件触发器(添加组件->事件->事件触发器)。

5.单击添加新事件类型->指针单击。

6.单击空事件列表底部的+按钮。

7.将Speaker对象从Hierarchy面板拖到该字段上,以丢弃标记为None(对象)的事件。

8.在No Function下拉列表中,选择AudioSource-> Play()。



要将暂停按钮添加到扬声器,请按照下列步骤操作:

1.通过按Ctrl + D或在“层次结构”面板中右键单击资源并选择“复制”来复制播放按钮,然后将其重命名为PauseButton。

2.对于PauseButton对象的事件触发功能,将其值设置为AudioSource-> Pause()。



现在这些按钮应该可以使用了,但是由于它们相互重叠,因此很难使用。 另一个问题-将扬声器转向侧面时,用户看不到它们。 要解决此问题,请执行以下操作:

1.将“播放按钮”的“变换位置”属性设置为(-6、18、0)。

2.对于PauseButton的“变换位置”属性,设置值(6、18、0)。

3.在“层次结构”面板中,右键单击“扬声器”对象,然后选择“创建空白”以创建一个空的子对象。 将添加的GameObject重命名为ButtonBillboard。 要重命名对象,请右键单击它,然后选择“重命名”。

4.将两个按钮拖到ButtonBillboard对象上,使其成为该对象的子对象。

5.在检查器中选择ButtonBillboard对象后,单击“添加组件->广告牌”。 可以使用搜索栏找到“公告牌”组件。 Mixed Reality Toolkit中的Billboard脚本使对象始终面对相机,通常用于用户界面元素。

6.您需要为广告牌获取以下结构:



为了使“播放”按钮和“暂停”按钮更容易区分,您可以将它们的标准图标替换为其他图标。 可以通过多种方式完成此操作,但是鉴于项目的规模,我们将使用最简单的方法。

1.在选择“播放按钮”的情况下,将检查器向下滚动到“复合按钮图标”组件。

2.选中“替代图标”复选框。

3.将Start Sprite从Assets-> Textures文件夹拖到Compound Button Icon组件的Icon Override属性上。

4.使用Pause Sprite对PauseButton对象重复这些步骤。



添加环绕声


现在我们有了一个可以在虚拟客厅中打开,关闭和移动的扬声器。 但是,在我们的应用程序中,我们没有增强声音效果的空间声音。

在Unity中,使用Spatializer插件实现空间声音。 插件文件是Unity的一部分,因此可以轻松实现空间声音。

1.转到编辑->项目设置->音频部分(编辑->项目设置->声音)。

2.对于Spatializer插件参数,将其值从None更改为MS HRTF Spatializer。

由于Microsoft的环绕声系统当前仅支持48,000 Hz的采样率,因此系统采样率也应设置为48,000(如果尚未完成),以防止HRTF失败。



现在,您需要设置声音片段本身的设置。

1.在“层次结构”面板中,选择“扬声器”对象。

2.滚动到“检查器”面板的“音频源”组件,然后选择“空间化”复选框。

3.对于“空间融合”参数,选择“ 3D”(数值为1)。

4.展开3D声音设置菜单。

5.要为我们的应用程序设置最佳3D声音设置,请为“音量衰减”参数设置“对数衰减”值,并将“最小距离”参数设置为3。

6.在选定扬声器的情况下,单击添加组件->音频发射器。 这是Mixed Reality Toolkit中的类,该类使用连接的AudioSource组件和Unity声音过滤器子集来应用和控制声音效果,例如吸收。



保存并运行


现在我们的演讲者已经准备就绪。 让我们把它变成一个预制件。

1.将Speaker对象拖动到Assets-> Prefabs文件夹,将其变成预制件。

将扬声器变成一个预制件,我们将用它制成一个可以重复使用的物体。 之后,我们将能够为我们的场景或该项目的其他场景创建任意数量的发言人实例。

现在,我们保存场景(按Ctrl + S)并运行它以查看工作结果。

现在我们可以做很多有趣的事情:

  • 播放并停止声音;
  • 将扬声器移近自己,注意声音越来越响亮和清晰;
  • 将扬声器移到离您更远的地方,注意音量会降低。

不要忘记,您可以通过按跳杆上的“前进”按钮并选择要转到地板上的点来将自己传送到房间中的各个点。 这样,您可以将扬声器移开。

原来的
作者:埃里克·阿尔斯特罗姆(Eric Ahlstrom),巴克莱姆斯(Cbarkerms),麦迪逊·海特

Source: https://habr.com/ru/post/zh-CN418663/


All Articles