向HoloLens的Unity项目添加空间音频

本教程内容:

  • 如何在Unity中的HoloLens 2上使用与头部相关的传递函数(HRTF)卸载
  • 使用HRTF卸载时如何启用混响

在微软Spatializer GitHub的仓库有本教程序列的完成的unity项目。

要了解使用基于HRTF的空间化技术对声音进行空间化的含义以及何时可以使用的建议,请参阅空间声音设计。

什么是HRTF卸载?

使用基于HRTF的算法处理音频需要大量的专门计算。HoloLens 2包括专用硬件,可用于避免给应用程序处理器增加负担,从而“减轻”基于HRTF的算法的负担。Microsoft spatializer插件为您的应用程序提供了一种简便的方法,以利用专用的HRTF硬件,因此您的应用程序可以将更多的应用程序处理器用于空间音频以外的操作。

目标

在第一章中,您将:

  • 创建一个Unity项目并导入MRTK
  • 导入Microsoft spacespaceizer插件
  • 启用Microsoft Spaceizer插件
  • 在开发人员工作站上启用空间音频

向HoloLens的Unity项目添加空间音频

步骤

1. 创建一个项目并添加NuGet For Unity

从一个空的Unity项目开始,然后为Unity添加和配置NuGet:

下载最新的NuGetForUnity .unitypackage

在Unity菜单栏中,单击Assets- > Import Package- > Custom Package …,然后安装NuGetForUnity软件包:

2. 添加Windows Mixed Reality程序包

Windows Mixed Reality支持Unity 2019及更高版本包含在可选软件包中。要将其添加到您的项目中,请从Unity菜单栏中打开Window-> Package Manager

然后找到并安装Windows Mixed Reality软件包:

官方教程里的版本已经升级了,我直接安装当前最新的了

3. 安装MRTK和Microsoft Spatializer

使用NuGet for Unity,安装MRTK和Microsoft Spatializer插件:

  1. 在Unity菜单栏中,单击NuGet-> Manage NuGet Packages

  2. 在“搜索”框中,输入“ Microsoft.MixedReality.Toolkit”并安装MRTK核心包:Microsoft.MixedReality.Toolkit.Foundation

    下载后界面如下图:(没有下载成功,成功的话菜单栏会有Mixed Reality Toolkit这一项)


科学上网又下载了一次,这次是把报下载下来了(速度快多了,但是还是没有成功 菜单栏没有新增内容)

完成导入包后,应显示MRTK项目配置器窗口如果没有,您可以通过以下方式手动打开它:进入Mixed Reality Toolkit >实用程序>配置Unity项目

我尝试手动打开,但是没有找到

所以我弃用这种导入MRTK包的方式了。我手动导入之前下载好的2.4.0版本的包

完成后弹出配置窗口:
当前界面如下:

点击搜索按钮后报错

注意到: 这边搜索出来的版本是2.3.0 (我通常使用的是2.4.0欸)

  1. 在“搜索”框中,输入“ Microsoft.SpatialAudio”并安装Microsoft Spatializer软件包:Microsoft.SpatialAudio.Spatializer.Unity

4. 在您的项目中设置MRTK

  1. 在Unity菜单栏中点击File -> Build Settings,打开 Build Settings 窗口。

  2. 选择通用Windows平台,然后单击切换平台。

  3. 点击Player SettingsBuild 窗口打开Player Settings在属性检查器窗格。

    • XR Settings下,选中Virtual Reality Supported复选框

    • XR Settings下,将Stereo Rendering Mode模式更改为Single Pass Instanced

    • Publishing Settings下,选中Capabilities部分中的** Spatial Perception **复选框

  4. 在菜单栏上,单击Mixed Reality Toolkit -> Add to Scene and Configure… 以将MRTK添加到场景。

有关如何构建您的应用程序以及如何将其部署到HoloLens 2的信息,请参阅部署一个MRTK自带案例到HoloLens2上

5. 启用Microsoft Spatializer插件

启用Microsoft Spatializer插件。打开Edit -> Project Settings -> Audio,然后将Spatializer Plugin更改为“ Microsoft Spatializer”。现在,Project SettingsAudio部分将如下所示:

6. 在工作站上启用空间音频

在Windows的桌面版本上,默认情况下禁用空间音频。通过右键单击任务栏中的音量图标来启用它。要最好地表示您将在HoloLens 2上听到的声音,请选择 Spatial sound -> Windows Sonic for Headphones

(我打算在真机上测试就跳过了这一步)

空间化按钮交互声音

目标

您将:

  • 添加一个按钮
  • 空间化按钮的点击声音

步骤

1. 添加一个按钮

Project窗口中,选择Assets,然后在搜索栏中键入“ PressableButtonHoloLens2”:

预制按钮是由蓝色图标而不是白色图标表示的条目。将名为PressableButtonHoloLens2的预制体拖到 Hierarchy 窗格中。在新按钮的Inspector窗格中,将Position属性设置为(0,-0.4,2),以便在应用程序启动时它出现在用户的前面。按钮的Transform组件将如下所示:

托入窗口后会弹出这个:都点import就可以

2. 空间化按钮反馈

在此步骤中,您将空间化按钮的音频反馈。有关相关设计建议,请参见空间声音设计。

Audio Mixer窗格中,您可以定义目标,称为Mixer Groups,以从Audio Source组件中播放音频。

  • Window -> Audio -> Audio Mixer,打开Audio Mixer窗格
  • 点击Mixers旁边的“ +”来创建Mixer。新的混音器将包括一个称为Master的默认组。

你的调音台窗格现在看起来像这样:(我给它取名为myMixer)

Hierarchy 窗格中点击PressableButtonHoloLens2。在**Inspector **窗格中:

  • 找到Audio Source组件

    • 对于Output属性,单击选择器并选择您创建的混音器
    • 选中Spatialize复选框
    • Spatial Blend滑块移动到3D(1)。

3. 调整音量曲线

默认情况下,Unity将在距听众更远的地方衰减空间声音。当将此衰减应用于交互反馈声音时,界面将变得更加难以使用。

要禁用此衰减,请调整Volume曲线。在Inspector窗格中“PressableButtonHoloLens2Audio Source组件中,有一个名为3D Sound Settings的部分。在该部分中:

  1. Volume Rolloff属性设置为线性
  2. Volume曲线(红色曲线)上的端点从y轴上的“ 0”拖动到“ 1”
  3. 要将Volume曲线的形状调整为平坦,请拖动白色曲线形状控件使其平行于X轴
    完成这些更改后,PressableButtonHoloLens2的“音频源”属性的“ 3D声音设置”部分将如下所示:

4. 测试空间音频

随意测试新的空间按钮交互声音:

  • 在Unity编辑器中进入游戏模式,最好在场景中使用循环的音频样本
  • 将带有音频源的对象从左向右移动,并在启用和未启用空间音频的情况下进行比较。您可以通过以下方法更改音频源设置以进行测试:
    • 在0-1(2D非空间和3D空间声音)之间移动Spatial Blend属性
    • 选中和取消选中Spatialize属性

体验效果吧!

however,我没有感受到… 那就继续下一个尝试

【HoloLens2】添加空间音频学习笔记相关推荐

  1. 基于Solr的空间搜索学习笔记

    基于Solr的空间搜索学习笔记 在Solr中基于空间地址查询主要围绕2个概念实现: (1) Cartesian Tiers 笛卡尔层 Cartesian Tiers是通过将一个平面地图的根据设定的层次 ...

  2. 空间计量经济学学习笔记(一)

    空间计量经济学学习笔记(一) Edit by Linhao Cui 参考 James LeSage(2014) , Paul Elhost (2018), Luc Anselin (1988), Qi ...

  3. 烧录imx6需要的linux空间,IMX6Q学习笔记——开发板的Linux系统更新和烧录

    IMX6Q学习笔记--开发板的Linux系统更新和烧录 记录自己在电鱼电子开发SAIL-IMX6Q全能板后,并且对系统和模块进行简单测试的过程之后对开发板的Linux系统进行更新和烧录的记录过程,算是 ...

  4. Zabbix 添加WEB监控(学习笔记十一)

    转载:http://blog.csdn.net/reblue520/article/details/52312164 通过zabbi做web监控不仅仅可以监控到站点的响应时间,还可以根据站点返回的状态 ...

  5. 数据库空间管理-学习笔记

    来自<SQL Server 2012实施与管理实战指南> 1.数据文件的存储结构: 页:数据存储的基本单位是页,每一个页为8kb,每MB有128页.磁盘的IO操作在页级.每页开头是一个96 ...

  6. unity给头发添加物理_Unity学习笔记 Vol.64 使用Spring Bone给角色添加头发效果

    摘要 在游戏中,让我们的角色拥有一头柔顺的秀发,可以使角色显得更加生动.在UnityChan模版我们可以从中借鉴Unity酱的飘逸的头发的实现方法.下面我们来具体研究一下. 实现方法 UnityCha ...

  7. AR空间音频能力,打造沉浸式声音体验

    随着元宇宙的兴起,3D虚拟现实广泛引用,让数字化信息和现实世界融合,目前大家的目光主要聚焦于视觉交互层面,为了在虚拟环境中更好的再现真实世界的三维空间体验,引入听觉层面必不可少,空间音频孕育而生. 空 ...

  8. kvm虚拟化学习笔记(十一)之kvm虚拟机扩展磁盘空间

    kvm虚拟机磁盘空间扩展与xen虚拟机磁盘空间扩展思路一致.原因在于xen/kvm默认的虚拟机磁盘格式为raw,所以方式可以通用. raw磁盘格式扩展思路如下 (1) 新添加一块raw格式的磁盘加入到 ...

  9. Unity3D学习笔记之九为场景添加细节(二)

                 上节为场景中添加了第一块带有碰撞器的石头,本节我们来利用Prefab,将场景细节都添加进去,并且做的更完善.        这一系列教程以及素材均参考自人人素材翻译组出品的翻 ...

最新文章

  1. 他本科来自普通二本,读博后3年迎来2篇Nature,创造校史!
  2. 独家|盘点5个TensorFlow和机器学习课程,程序员福利(附资源)
  3. eclipse安装JAVA反编译插件
  4. shell脚本删除linux中的文件
  5. Web服务器控件和HTML控件的区别与联系
  6. wk一sm5时间温度控制器_Android RTC 自下而上分析
  7. 怀俄明州议员Cynthia Lummis:加密监管需要为创新留有空间
  8. Android Studio解决:Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed
  9. 破解版 中易广告联盟程序 v6.0
  10. 基于微信小程序视频点播系统 开题报告
  11. 小程序实现下拉刷新功能
  12. 牡丹-洛阳牡丹:洛阳牡丹
  13. 【Python机器学习】梯度下降法(三) 优矿(uqer.io)
  14. IE主页遭篡改解决方法
  15. Spring Mvc - 用户注册服务端生成默认头像实现
  16. C语言解决找零钱问题
  17. YOLOv4论文(中文版)
  18. 图像的基本运算——scale, rotation, translation
  19. java 十六进制负数_Java 十六进制转十进制正负数
  20. dedecms模板教程:织梦模板网站SEO优化教程

热门文章

  1. 你的 IDE 太重了,试试 Emacs吧!
  2. 电脑锁定计算机键被改了,电脑热键被修改了如何恢复,电脑的ctrl+alt+delete快捷键变成锁定计算机、关机、重启的选项界面了。郁闷...
  3. matlab 画渐近线,python – 如何绘制渐近线?
  4. simulink仿真pid控制伺服系统
  5. 传感器数据融合及姿态估计总结
  6. 融入Facebook的B2B企业营销策略,轻松触达目标受众
  7. 黎明职业大学计算机教研室主任,任务书-原画 插画 漫画
  8. 开源项目—FLutter开发录音APP
  9. DSP 55xx操作外围寄存器简便方法
  10. go-sql-driver: invalid connection 和 [mysql] 2019/xx/xx 12:xx:55 packets.go:36: unexpected EOF