前言
注意:本文已更新到5.5.1f1版本
个人建议,学习Holograms 220之前,一定完成《Hololens官方教程精简版 - 02. Introduction with Device》的学习。
本篇集中学习空间声音功能,完成以下目标:
- 感受空间声音
- 感受声音被遮挡的效果
Chapter 1 - Spatial Sound
目标
感受空间声音
实践
- 请按照第一篇的教程,完成项目的创建。
- 新建文件夹:”Assets/_Scenes/Holograms 220/”
- 新建场景:”Assets/_Scenes/Holograms 220/Holograms 220.unity”
- 打开场景,删除默认的Main Camera
- 将”Assets/HoloToolkit/Input/Prefabs/HololensCamera.prefab”添加到Hierarchy根级
打开”Unity菜单 > Edit > Project Settings > Audio”,打开Audio Manager面板,将Spatializer Plugin设置为:MS HRTF Spatializer,如图:
添加一个Cube,按如下属性进行设置:
给Cube添加组件Audio Source
点击Audio Source组件Audio Clip属性右侧的圆钮,选择音频文件:”Vocals”
勾选Spatialize(增加空间感)
勾选Loop(循环播放音乐)
将Spatial Blend设置为1(产生3D感)
将Doppler Level设置为0(去掉多普勒效应)
本节完成!
点击Play,戴上设备或者耳机,在Scene中移动Cube位置,一边感觉声音发出的位置。
说明
只有在Audio Manager面板指定Spatializer Plugin插件,在Audio Source中才会出现Spatialize等选项。
Chapter 2 - Sound Occlusion
目标
物体削弱声音的效果
实践
给Cube添加Audio Emitter组件,默认参数不变,如图:
添加一个Sphere物体,按下图设置:
给Sphere添加Audio Occluder组件,按下图进行设置:
本节完成!
点击Play,戴上设备或者耳机,在Scene中移动Cube位置,当拖入到Sphere里面时,声音被削弱。
说明
- AudioOccluder
这是一个简单的声音遮挡器,实现IAudioInfluencer接口,具体实现其实是使用AudioLowPassFilter(低通滤波器)对低于指定频率的声音进行了降音,所以场景中的Sphere此时可以起到遮挡声音的作用。 - AudioEmitter
这是一个声音发射器,内部使用射线机制,寻找摄像机(耳朵)和Cube之间所有实现了IAudioInfluencer接口的组件,并依次执行这些组件中对此接口的实现。 - AudioLowPassFilter
低通滤波器,低于指定频率的声音才能通过。Unity中还有更多的过滤器,具体可以查看Unity官方文档中《Audio Filters》部分。
小结
本节没有代码,都是添加和设置组件。具体实现原理,大家可以看组件的源码。
需要注意的地方就是,记得在Audio Manager中设置Spatializer Plugin为MS HRTF Spatializer,才能打开Audio Source组件的空间选项,以便于在Hololens上形成比较好的空间声音效果。
参考文档
官方教程Holograms 220:https://developer.microsoft.com/en-us/windows/mixed-reality/holograms_220