zoukankan      html  css  js  c++  java
  • 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项目提供了一个静态类来实现简单的空间声音设定。这个类在HoloToolkitSpatialSound目录下,能被项目任何脚本调用。我们推荐你给每个Audio Source都设定一遍。下面代码演示了设置Audio Source空间大小:

    AudioSource audioSource = gameObject.GetComponent<AudioSource>()
    
    if (audioSource != null) {
        SpatialSoundSettings.SetRoomSize(audioSource, SpatialMappingRoomSizes.Medium);
    }

    Directly Acessing Parameters from Unity 直接从Unity访问以上参数

    如果你不想使用HoloToolkit提供的工具,以下则是直接修改HRTF参数的方法。你可以把以下代码复制/粘贴进SetHRTF.cs脚本中,并将此脚本附加到任何Audio Source对象上。这允许你修改HRTF插件的重要参数。

    using UnityEngine;
       using System.Collections;
       public class SetHRTF : MonoBehaviour    {
           public enum ROOMSIZE { Small, Medium, Large, None };
           public ROOMSIZE room = ROOMSIZE.Small;  // Small is regarded as the "most average"
           // defaults and docs from MSDN
           // https://msdn.microsoft.com/en-us/library/windows/desktop/mt186602(v=vs.85).aspx
           public float mingain = -96f; // The minimum gain limit applied at any distance, from -96 to + 12
           public float maxgain = 12f;  // The maximum gain applied at any distance, from -96 to + 12
           public float unityGainDistance = 1; // The distance at which the gain applied is 0dB, from 0.05 to infinity
           public float bypassCurves = 1; // if > 0, will bypass Unity's volume attenuation and make a more accurate volume simulation automatically in the plugin
           AudioSource audiosource;
           void Awake()
           {
               audiosource = this.gameObject.GetComponent<AudioSource>();
               if (audiosource == null)
               {
                   print("SetHRTFParams needs an audio source to do anything.");
                   return;
               }
               audiosource.spatialize = 1; // we DO want spatialized audio
               audiosource.spread = 0; // we dont want to reduce our angle of hearing
               audiosource.spatialBlend = 1;   // we do want to hear spatialized audio
               audiosource.SetSpatializerFloat(1, (float)room);    // 1 is the roomsize param
               audiosource.SetSpatializerFloat(2, mingain); // 2 is the mingain param
               audiosource.SetSpatializerFloat(3, maxgain); // 3 is the maxgain param
               audiosource.SetSpatializerFloat(4, unityGainDistance); // 4 is the unitygain param
               audiosource.SetSpatializerFloat(5, bypassCurves );    // 5 is bypassCurves, which is usually a good idea
           }
       }
  • 相关阅读:
    Prometheus 基于文件的服务发现
    Prometheus 标签使用示例整合
    Prometheus 重新标签
    Prometheus 配置采集目标
    Prometheus 配置文件详解
    Prometheus 安装部署
    Prometheus 介绍详解
    Python urlib 模块
    ArcGIS Python编程案例-电子资料链接
    如何查看Python对象的属性
  • 原文地址:https://www.cnblogs.com/mantgh/p/5620943.html
Copyright © 2011-2022 走看看