hololens的声音模块是头戴环上,靠近耳朵上方的一个红色的模块,三维空间声音感效果还不错,本文主要讲述如何在项目中使用空间声音特性。我们主要讲述必须的插件组件和unity声音组件和属性的设置来确保空间声音的实现。
Enabling Spatial Sound in Unity 在Unity中启用空间声音
我们需要在Unity中使用声音插件来实现空间声音。这个插件(audio spatalizer plugin)被打包到了Unity,所以只需要在设置菜单中 Edit > Audio > Spatializer 启用Microsoft HRTF拓展就好。因为微软空间声音组件目前取样频率只支持到48000,所以你应该把System Sample Rate属性设为48000来避免在系统输出设备没有设置它为48000的罕见情况下发生HRTF组件错误。
注意:当在系统版本低于Windows 10的设备上使用Windows 10 SDK编译HoloLens应用时,空间声音将不会再编辑器和设备上工作。
Using Spatial Sounds in Unity 在Unity中使用空间声音
通过调整Audio Source组件的3个属性即可在Unity中使用空间声音。步骤如下:
- 在项目面板中,选中一个附有Audio Source组件的对象
- 在检视面板中,修改Audio Source组件属性:
- 选中Spatialize属性
- 设置Spatial Blend模式为3D
- 展开3D Sound Settings,并将Volume Rolloff值为 Custom Rolloff
现在就能够在项目中存在很真实的声音。
强烈推荐开发者要熟悉下空间声音设计指南(Spatial Sound design guidelines),它会帮准你快速的集成空间声音到项目中,同时能尽可能的提高空间声音的体验。
Setting Spatial Sound Settings 设置空间声音
微软提供了一些额外的参数设置用来额外控制声音模拟。这些参数分别是最大最小增益、单位增益距离和模拟空间大小。
Minimum Gain 最小增益
任意距离上的最小增益,范围(-96,+12),默认值是-96分贝。
Maximum Gain 最大增益
任意距离上的最大增益,范围(-96,+12),默认值是+12分贝。
Unity Gain Distance 单位增益距离
增益是0分贝的距离,单位为米,范围(0.05,无穷大),默认值是1米。
Room Size 空间大小
空间声音模拟的空间大小。大致的空间大小划分为:small(从办公室到小型会议室),medium(大会议室),lARge(礼堂)。你可以将空间大小属性设为none来模拟户外空间。默认空间大小是small。
示例:
HoloToolkit项目提供了一个静态类来实现简单的空间声音设定。这个类在HoloToolkit\SpatialSound目录下,能被项目任何脚本调用。我们推荐你给每个Audio Source都设定一遍。下面代码演示了设置Audio Source空间大小:
[代码]:
1
|
AudioSource audioSource = gameObject.GetComponent<audiosource>()
|
3
|
if (audioSource != null ) {
|
4
|
SpatialSoundSettings.SetRoomSize(audioSource, SpatialMappingRoomSizes.Medium);
|
Directly Acessing Parameters from Unity 直接从Unity访问以上参数
如果你不想使用HoloToolkit提供的工具,以下则是直接修改HRTF参数的方法。你可以把以下代码复制/粘贴进SetHRTF.cs脚本中,并将此脚本附加到任何Audio Source对象上。这允许你修改HRTF插件的重要参数。
[代码]:
view source print?
02
|
using System.Collections;
|
03
|
public class SetHRTF : MonoBehaviour {
|
04
|
public enum ROOMSIZE { Small, Medium, Large, None };
|
05
|
public ROOMSIZE room = ROOMSIZE.Small; // Small is regarded as the "most average"
|
06
|
// defaults and docs from MSDN
|
07
|
// https://msdn.microsoft.com/en-us/library/windows/desktop/mt186602(v=vs.85).aspx
|
08
|
public float mingain = -96f; // The minimum gain limit applied at any distance, from -96 to + 12
|
09
|
public float maxgain = 12f; // The maximum gain applied at any distance, from -96 to + 12
|
10
|
public float unityGainDistance = 1; // The distance at which the gain applied is 0dB, from 0.05 to infinity
|
11
|
public float bypassCurves = 1; // if > 0, will bypass Unity's volume attenuation and make a more accurate volume simulation automatically in the plugin
|
12
|
AudioSource audiosource;
|
15
|
audiosource = this .gameObject.GetComponent<audiosource>();
|
16
|
if (audiosource == null )
|
18
|
print( "SetHRTFParams needs an audio source to do anything." );
|
21
|
audiosource.spatialize = 1; // we DO want spatialized audio
|
22
|
audiosource.spread = 0; // we dont want to reduce our angle of hearing
|
23
|
audiosource.spatialBlend = 1; // we do want to hear spatialized audio
|
24
|
audiosource.SetSpatializerFloat(1, ( float )room); // 1 is the roomsize param
|
25
|
audiosource.SetSpatializerFloat(2, mingain); // 2 is the mingain param
|
26
|
audiosource.SetSpatializerFloat(3, maxgain); // 3 is the maxgain param
|
27
|
audiosource.SetSpatializerFloat(4, unityGainDistance); // 4 is the unitygain param
|
28
|
audiosource.SetSpatializerFloat(5, bypassCurves ); // 5 is bypassCurves, which is usually a good idea
|
本文转自:52VR.com Hololens http://www.52vr.com/article-792-1.html
如何在Unity中添加三维空间声音Spatial Sounds相关推荐
- 如何在3dmax中添加声音轨道?
如何在3dmax中添加声音轨道? 如何在3dmax中添加声音轨道?3dsMax是一个三建模.动画和渲染软件.借助3dsMax,我们可以创造一个宏伟的游戏世界,安排精彩的场景,实现设计的可视化,创造身临 ...
- 如何在unity中制作塔防游戏
塔防游戏非常流行,毫无疑问--没有什么比看着自己的防御消灭讨厌的侵略者更让人满足!在这两部分教程中,用unity来制作一个塔防游戏! 将会学习怎样...... 创建一波敌人 让它们跟随线路点 ...
- 如何在Unity中使用WebXR开发AR/VR应用
WebXR是一种具有巨大潜力的技术,但是目前,它提供的开发工具比独立VR开发差得多,在独立VR开发中,我们使用Unity和Unreal Engine.Mozilla 为沉浸式Web做了大量工作,为Un ...
- unity 2019 点击脚本启动不了VS_如何在Unity中使用WebXR开发AR/VR应用
WebXR是一种具有巨大潜力的技术,但是目前,它提供的开发工具比独立VR开发差得多,在独立VR开发中,我们使用Unity和Unreal Engine.Mozilla 为沉浸式Web做了大量工作,为Un ...
- unity editor android 黑屏_如何在Unity中利用nReal制作AR应用
来源:新浪VR nReal眼镜是今年最有趣的增强现实小工具之一.它们已经在CES上展示过了,几个月前笔者在北京亲自试用过,在我的评测中,我强调了它们不仅非常轻.时尚,而且还能提供非常明亮的全息视图. ...
- 如何在SharePoint2010中添加Deep Zoom Image
如何在SharePoint2010中添加Deep Zoom Image 应用范围 SharePoint 2010 Foundation:SharePoint 2010 Standard:SharePo ...
- 怎样在计算机上插入机构图,Win7系统如何在excel中添加word文档结构图?
今天小编给大家分享 Ghost Win7系统 在excel中添加word文档结构图的方法,有时候在编辑excel表格时,为了数据能够更加直观展示,会在excel中添加word文档结构图,这样显示的内容 ...
- echart 实例显示位置_技术分享:如何在Unity中使用实例化渲染?
编者按 在日常开发中,通常说到优化.提高帧率时,总是会提到批量渲染.之前简单总结了静态合批(点此查看全文)以及动态合批(点此查看全文),这次作者将和大家聊聊实例化渲染. 作者:枸杞忧天 (本文内容由公 ...
- java soap 头_如何在Java中添加Soap标头
我有一个来自oracle的NO.net Web服务,要访问,我需要添加soap标头.如何在Java中添加soap标头? Authenticator.setDefault(new ProxyAuthen ...
最新文章
- Android通过Chrome Inspect调试WebView
- Aix netstat命令解析
- es6学习 -- 解构赋值
- 从玉农业蔬菜标准化-林裕豪:致力食品安全和质量管理体系
- ywy_c_asm题
- malloc/free 和 new/delete
- 华为C8825D刷机失败解决方法
- SQL SERVER2008判断文件夹是否存在并创建文件夹
- 关闭windows hello然后尝试再次运行安装程序_蜂鸟E203系列——Windows下运行hello world例程...
- 让手机重现“一律允许使用这台计算机进行调试”确认窗口
- RDMA的原理、传输与Verbs
- Kopernio插件+SCI-HUB最新可用网址
- 1461错误,nbsp;mysql_stmt_prepa…
- LeetCode Image Smoother
- 招聘 | 胡传鹏博士课题组招硕士、博士
- 马化腾微信朋友圈惋惜小黄车 网友们狂赞 并替Pony搞起情怀大接龙
- 【OpenCV入门教程之二】 一览众山小:OpenCV 2.4.8组件结构全解析
- 4D毫米波雷达算法设计2--传统算法详细设计
- 在Mac上如何快速找到及打开应用程序
- HarmonyOS JS UI
热门文章
- 解决python2.x文件读写编码问题
- ssh暴力破解解决方案
- NSOperation vs大中央派遣
- 如何使用Node.js获取当前脚本的路径?
- Oracle分析函数巧妙使用
- 如何搭建一个功能复杂的前端配置化框架(一)
- 影响系统性能的几个原因
- Mac环境下sublime实现列选择或编辑的方法
- tunctl used bridge sub interface network used with multi-network env
- 详解Pattern类和Matcher类