ǰÑÔ ×¢Ò⣺±¾ÎÄÒѸüе½5.5.1f1°æ±¾ ±¾Æª¼¯ÖÐѧϰÓïÒô¹¦ÄÜ£¬Íê³ÉÒÔÏÂÄ¿±ê£º
- ÓïÒôÃüÁĿǰ½öÖ§³ÖÓ¢ÎÄ£©
- ²Ù×÷Âó¿Ë·ç ×¢Ò⣺ÒòΪÕⲿ·ÖÖ»Ö§³ÖÓ¢ÎÄ£¬ËùÒÔÎÒÖ»±£ÁôÁËÓïÒôÃüÁîºÍÂó¿Ë·ç²Ù×÷µÄ²¿·Ö£¬È¥µôÁËÓïÒôʶ±ðºÍÓïÒåʶ±ð¡£ÎÄÕ½ṹ¸ú¹Ù·½»á²»Ò»Ö£¬µ«²¢²»Ó°ÏìÎÒÃǵÄѧϰ£¡ Unity SetupÇë°´ÕÕµÚһƪµÄ½Ì³Ì£¬Íê³ÉÏîÄ¿µÄ´´½¨¡£
н¨Îļþ¼Ð£º¡±Assets/_Scenes/Holograms 212/¡±
н¨³¡¾°£º¡±Assets/_Scenes/Holograms 212/Holograms 212.unity¡±
´ò¿ª³¡¾°£¬É¾³ýĬÈϵÄMain Camera
½«¡±Assets/HoloToolkit/Input/Prefabs/HoloLensCamera.prefab¡±Ìí¼Óµ½Hierarchy¸ù¼¶
Ìí¼ÓÒ»¸öCube£¬°´ÈçÏÂÊôÐÔ½øÐÐÉèÖ㺠±¾½ÚÍê³É£¬²âÊÔÔËÐУ¡ Chapter 1 - Ìí¼ÓÓïÒôÃüÁîÄ¿±êʹÓÃKeywordRecognizerÌí¼ÓÓïÒôÃüÁî ʵ¼ùÌí¼ÓÈ«¾ÖÓïÒôÃüÁî¶ÔÂó¿Ë·ç˵³ö¡±Follow Me¡±Ê±£¬Cube¸úËæÎÒÃÇÒÆ¶¯£¬µ±Ëµ³ö¡±Leave Along¡±Ê±£¬CubeÍ£Ö¹¸úËæ¡£ ±¾½ÚµÚÒ»²¿·ÖÍê³É£¡ µ±·¢³öÓïÒô¡±Follow Me¡±Ê±£¬Cube»á¸úËæÎÒÃÇÒÆ¶¯£¬µ±·¢³öÓïÒô¡±Leave Along¡±Ê±£¬Cube½«Í£Ö¹¸úËæ¡£ Ìí¼ÓÌØ¶¨ÓïÒôÃüÁîµ±ÄýÊÓCube£¬²¢Ëµ³ö¡±Start Rotate¡±Ê±£¬Cube¿ªÊ¼Ðýת¡£µ±ÄýÊÓCube£¬²¢Ëµ³ö¡±Stop Rotate¡±Ê±£¬CubeÍ£Ö¹Ðýת¡£ - using HoloToolkit.Unity;
- using HoloToolkit.Unity.InputModule;
- using UnityEngine;
- public class Cube212 : MonoBehaviour, IFocusable {
- // Cube״̬ö¾ÙÖµ
- private enum CubeStatus
- {
- Normal = 1, // Õý³£×´Ì¬
- Rotating // Ðýת״̬
- }
- // µ±Ç°Cube״̬
- private CubeStatus cubeStatus;
- // CubeµÄÓïÒôÃüÁî×é¼þ
- private KeywordManager keywordManager;
- // Cube¸úËæ×é¼þ
- private Tagalong tagalong;
- void Start () {
- // ÉèÖÃCubeĬÈÏ״̬
- cubeStatus = CubeStatus.Normal;
- // »ñÈ¡CubeÉϵÄKeywordManager×é¼þ
- keywordManager = GetComponent<KeywordManager>();
- // »ñÈ¡CubeÉÏTagalong×é¼þ
- tagalong = GetComponent<Tagalong>();
- }
- void Update () {
- // ¸ù¾Ý״̬ÐýתCube
- if (cubeStatus == CubeStatus.Rotating)
- {
- transform.Rotate(Vector3.up);
- }
- }
- // ¿ªÊ¼Ðýת
- public void OnRotate()
- {
- cubeStatus = CubeStatus.Rotating;
- }
- // Í£Ö¹Ðýת
- public void OnStopRotate()
- {
- cubeStatus = CubeStatus.Normal;
- }
- // Cube±»ÄýÊÓʱ£¬¿ªÆôÓïÒôÃüÁî
- public void OnFocusEnter()
- {
- keywordManager.StartKeywordRecognizer();
- }
- // Cube²»±»ÄýÊÓʱ£¬¹Ø±ÕÓïÒôÃüÁî
- public void OnFocusExit()
- {
- keywordManager.StopKeywordRecognizer();
- }
- // ÈÃCube¸úËæ
- public void OnFollowMe()
- {
- tagalong.enabled = true;
- }
- // Í£Ö¹Cube¸úËæ
- public void OnLeaveAlong()
- {
- tagalong.enabled = false;
- }
- }
¸´ÖÆ´úÂë
±¾½ÚµÚ¶þ²¿·ÖÍê³É£¡ µ±ÄýÊÓCubeʱ£¬·¢³öStart RotateÓïÒôÃüÁCube¿ªÊ¼Ðýת¡£·¢³öStop RotateÓïÒôÃüÁCubeÍ£Ö¹Ðýת¡£ ˵Ã÷- TagAlong
HoloToolkitÌṩµÄ¸úËæ½Å±¾ - Keyword Manager
ÓïÒôÃüÁî¹ÜÀíÆ÷£¬ÄÚ²¿Êµ¼ÊÉÏʹÓÃÁË¡±KeywordRecognizer¡°Àà¶ÔÓïÒôÃüÁî½øÐд¦Àí¡£
Chapter 2 - ²Ù×÷Âó¿Ë·çÄ¿±êÂó¿Ë·ç»Ø·Å£¬²¢¿ØÖÆCube´óС ʵ¼ù
- using HoloToolkit.Unity.InputModule;
- using UnityEngine;
- public class Cube212Mic : MonoBehaviour {
- // CubeÔʼ´óС
- private Vector3 origScale;
- // µ±Ç°Âó¿Ë·ç"ÒôÁ¿"
- private float averageAmplitude = 0;
- void Start()
- {
- // ±£´æCubeÔʼ´óС
- origScale = transform.localScale;
- // ÉèÖÃÂó¿Ë·çÒôÁ¿
- MicStream.MicSetGain(10);
- // ¿ªÆôÂó¿Ë·ç
- MicStream.MicStartStream(false, false);
- }
- // ÉùÒô¹ýÂË
- private void OnAudioFilterRead(float[] buffer, int numChannels)
- {
- // ½«Âó¿Ë·çÊäÈëµ½ÉùÒô¹ýÂ˹ÜÏßÖУ¬½«Âó¿Ë·çµÄÉùÒô´Ó¶ú»ú²¥·Å³öÀ´
- MicStream.MicGetFrame(buffer, buffer.Length, numChannels);
- // ¼ÆËãÂó¿Ë·ç"ÒôÁ¿"´óС
- float sumOfValues = 0;
- for (int i = 0; i < buffer.Length; i++)
- {
- sumOfValues += Mathf.Abs(buffer[i]);
- }
- averageAmplitude = sumOfValues / buffer.Length;
- }
- void Update()
- {
- // ¸ù¾Ý"ÒôÁ¿"µ÷ÕûCube´óС
- transform.localScale = origScale * (1 + averageAmplitude * 10);
- }
- }
¸´ÖÆ´úÂë
±¾½ÚÍê³É£¡ µ±Âó¿Ë·çÓÐÉùÒôʱ£¬¶ú»úÖÐ»á»Ø·ÅÂó¿Ë·çÉùÒô£¬²¢ÇÒCube»á¸ù¾ÝÒôÁ¿¸Ä±ä´óС ˵Ã÷- MicStream
HoloToolkitÌṩµÄÂó¿Ë·ç²Ù×÷À࣬ÏêϸµÄÓ÷¨¿É²Î¿¼¹¤¾ß°üÖеÄMicStreamDemoÀà - OnAudioFilterRead
UnityÒýÇæÌṩµÄÉùÒôÂ˲¨º¯Êý£¬¾ßÌåÔÀí¿É²Î¿¼¹Ù·½Îĵµ¡¶OnAudioFilterRead¡· - MicStream.MicGetFrame(¡)
Õâ¸ö·½·¨¿ÉÒÔ»ñÈ¡µ½Âó¿Ë·çµÄÖ¡Êý¾Ý(float[])£¬¿ÉÒÔÔÚÀàËÆOnAudioFilterRead»òÕßUpdateµÈ¸ßƵʼþÖе÷Óò¢»ñÈ¡¡£ÒòΪ»ñÈ¡µ½µÄÊÇÂó¿Ë·ç×îСÊý¾Ýµ¥Ôª£¬Ê¹ÓÃÆðÀ´·Ç³£Áé»î¡£ÎÒÃÇ¿ÉÒÔÔÚOnAudioFilterReadÖв¥·Å£¬Ò²¿ÉÒÔʹÓÃSocket½øÐÐÔ¶³Ìͨ»°¡£ºóÃæÎÒ»áÏêϸ˵Ã÷£¬ÈçºÎÓÃHololensʵÏÖÔ¶³Ìͨ»°¡£
С½áÔÚHololensδÕýʽ֧³ÖÖÐÎÄÓïÒôǰ£¬ÎÒÃÇÖ»ÄÜÔÝʱʹÓÃÓ¢ÎÄÓïÒôÃüÁîÀ²¡£
ÁíÍ⣬Èç¹ûС»ï°éÃÇÒª×öͨ»°£¬ÄÇô±¾ÈËÇ¿ÁÒ½¨ÒéÉîÈëÁ˽âMicStreamµÄʹÓᣵ±È»£¬Ò²ÉÙ²»ÁËÐèÒªÑо¿Ò»ÏÂUnityÖйØÓÚMicrophoneµÄ²¿·Ö¡£
¹ØÓÚOnAudioFilterRead(¡)£¬ÔÚÉùÒô´¦ÀíºÍ»Ø·ÅÖÐÆðµ½Á˺ÜÖØÒªµÄ×÷Óá£Í¨¹ýSocketÔ¶³Ìͨ»°£¬¾Í»áÓõ½Õâ¸ö·½·¨¡£
|