日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

HoloLens开发手记 - Unity之Spatial Sounds 空间声音

發布時間:2025/3/20 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HoloLens开发手记 - Unity之Spatial Sounds 空间声音 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文主要講述如何在項目中使用空間聲音特性。我們主要講述必須的插件組件和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空間大小:

?

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).aspxpublic float mingain = -96f; // The minimum gain limit applied at any distance, from -96 to + 12public float maxgain = 12f; // The maximum gain applied at any distance, from -96 to + 12public float unityGainDistance = 1; // The distance at which the gain applied is 0dB, from 0.05 to infinitypublic 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 audioaudiosource.spread = 0; // we dont want to reduce our angle of hearingaudiosource.spatialBlend = 1; // we do want to hear spatialized audioaudiosource.SetSpatializerFloat(1, (float)room); // 1 is the roomsize paramaudiosource.SetSpatializerFloat(2, mingain); // 2 is the mingain paramaudiosource.SetSpatializerFloat(3, maxgain); // 3 is the maxgain paramaudiosource.SetSpatializerFloat(4, unityGainDistance); // 4 is the unitygain paramaudiosource.SetSpatializerFloat(5, bypassCurves ); // 5 is bypassCurves, which is usually a good idea }}

?

總結

以上是生活随笔為你收集整理的HoloLens开发手记 - Unity之Spatial Sounds 空间声音的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。