ÉèΪÊ×Ò³Êղر¾Õ¾

΢ÈíHololensȫϢÏÖÊµÍø

 ÕÒ»ØÃÜÂë
 Á¢¼´×¢²á

QQ怬

Ö»ÐèÒ»²½£¬¿ìËÙ¿ªÊ¼

ɨһɨ£¬·ÃÎÊ΢ÉçÇø

Ò»¼üµÇ¼:

²é¿´: 1057|»Ø¸´: 1

Hololens¹Ù·½½Ì³Ì¾«¼ò°æ - 05. Voice£¨ÓïÒô£©

[¸´ÖÆÁ´½Ó]
·¢±íÓÚ 2017-12-5 22:09:30 | ÏÔʾȫ²¿Â¥²ã |ÔĶÁģʽ

ǰÑÔ×¢Ò⣺±¾ÎÄÒѸüе½5.5.1f1°æ±¾¸öÈ˽¨Ò飬ѧϰHolograms 212֮ǰ£¬Ò»¶¨Íê³É¡¶Hololens¹Ù·½½Ì³Ì¾«¼ò°æ - 02. Introduction with Device¡·µÄѧϰ¡£±¾Æª¼¯ÖÐѧϰÓïÒô¹¦ÄÜ£¬Íê³ÉÒÔÏÂÄ¿±ê£º - ÓïÒôÃüÁĿǰ½öÖ§³ÖÓ¢ÎÄ£© - ²Ù×÷Âó¿Ë·ç×¢Ò⣺ÒòΪÕⲿ·ÖÖ»Ö§³ÖÓ¢ÎÄ£¬ËùÒÔÎÒÖ»±£ÁôÁËÓïÒôÃüÁîºÍÂó¿Ë·ç²...

ǰÑÔ
×¢Ò⣺±¾ÎÄÒѸüе½5.5.1f1°æ±¾
¸öÈ˽¨Ò飬ѧϰHolograms 212֮ǰ£¬Ò»¶¨Íê³É¡¶Hololens¹Ù·½½Ì³Ì¾«¼ò°æ - 02. Introduction with Device¡·µÄѧϰ¡£
±¾Æª¼¯ÖÐѧϰÓïÒô¹¦ÄÜ£¬Íê³ÉÒÔÏÂÄ¿±ê£º
- ÓïÒôÃüÁĿǰ½öÖ§³ÖÓ¢ÎÄ£©
- ²Ù×÷Âó¿Ë·ç
×¢Ò⣺ÒòΪÕⲿ·ÖÖ»Ö§³ÖÓ¢ÎÄ£¬ËùÒÔÎÒÖ»±£ÁôÁËÓïÒôÃüÁîºÍÂó¿Ë·ç²Ù×÷µÄ²¿·Ö£¬È¥µôÁËÓïÒôʶ±ðºÍÓïÒåʶ±ð¡£ÎÄÕ½ṹ¸ú¹Ù·½»á²»Ò»Ö£¬µ«²¢²»Ó°ÏìÎÒÃǵÄѧϰ£¡
Unity Setup
Çë°´ÕÕµÚһƪµÄ½Ì³Ì£¬Íê³ÉÏîÄ¿µÄ´´½¨¡£
н¨Îļþ¼Ð£º¡±Assets/_Scenes/Holograms 212/¡±
н¨³¡¾°£º¡±Assets/_Scenes/Holograms 212/Holograms 212.unity¡±
´ò¿ª³¡¾°£¬É¾³ýĬÈϵÄMain Camera
½«¡±Assets/HoloToolkit/Input/Prefabs/HoloLensCamera.prefab¡±Ìí¼Óµ½Hierarchy¸ù¼¶
Ìí¼ÓÒ»¸öCube£¬°´ÈçÏÂÊôÐÔ½øÐÐÉèÖãº
37.png
±¾½ÚÍê³É£¬²âÊÔÔËÐУ¡
Chapter 1 - Ìí¼ÓÓïÒôÃüÁîÄ¿±ê
ʹÓÃKeywordRecognizerÌí¼ÓÓïÒôÃüÁî
ʵ¼ùÌí¼ÓÈ«¾ÖÓïÒôÃüÁî
¶ÔÂó¿Ë·ç˵³ö¡±Follow Me¡±Ê±£¬Cube¸úËæÎÒÃÇÒÆ¶¯£¬µ±Ëµ³ö¡±Leave Along¡±Ê±£¬CubeÍ£Ö¹¸úËæ¡£
  • ¸øCubeÌí¼ÓTagalong×é¼þ£¬²¢È¥µôĬÈϵĹ´Ñ¡
  • ÐÂÔöÎļþ£º¡±Assets/_Scenes/Holograms 212/Scripts/Cube212.cs¡±£¬ÄÚÈÝÈçÏ£º
    1. using HoloToolkit.Unity;
    2. using HoloToolkit.Unity.InputModule;
    3. using UnityEngine;

    4. public class Cube212 : MonoBehaviour{
    5.     // Cube¸úËæ×é¼þ
    6.     private Tagalong tagalong;
    7.     void Start () {
    8.         // »ñÈ¡CubeÉÏTagalong×é¼þ
    9.         tagalong = GetComponent<Tagalong>();
    10.     }

    11.     // ÈÃCube¸úËæ
    12.     public void OnFollowMe()
    13.     {
    14.         tagalong.enabled = true;
    15.     }

    16.     // Í£Ö¹Cube¸úËæ
    17.     public void OnLeaveAlong()
    18.     {
    19.         tagalong.enabled = false;
    20.     }
    21. }
    ¸´ÖÆ´úÂë

  • ÔÚHierarchyÃæ°å£¬ÐÂÔö¿Õ¶ÔÏó£¬ÖØÃüÃûΪ£ºController
  • ΪControllerÌí¼ÓKeyword Manager×é¼þ
  • ½«Keyword ManagerµÄRecognizer StartÉèÖÃΪ£ºAuto Start
  • °´ÏÂͼÔö¼ÓÁ½¸öÓïÒôÃüÁ¡±Follow Me¡°¼°¡±Leave Along¡°£¬²¢Ö¸ÏòCube212½Å±¾ÖжÔÓ¦µÄÁ½¸ö·½·¨£ºOnFollowMe()ºÍOnLeaveAlong()
    38.png

±¾½ÚµÚÒ»²¿·ÖÍê³É£¡
µ±·¢³öÓïÒô¡±Follow Me¡±Ê±£¬Cube»á¸úËæÎÒÃÇÒÆ¶¯£¬µ±·¢³öÓïÒô¡±Leave Along¡±Ê±£¬Cube½«Í£Ö¹¸úËæ¡£
Ìí¼ÓÌØ¶¨ÓïÒôÃüÁî
µ±ÄýÊÓCube£¬²¢Ëµ³ö¡±Start Rotate¡±Ê±£¬Cube¿ªÊ¼Ðýת¡£µ±ÄýÊÓCube£¬²¢Ëµ³ö¡±Stop Rotate¡±Ê±£¬CubeÍ£Ö¹Ðýת¡£
  • ÔÚProjectÃæ°åÖУ¬ËÑË÷Input ManagerºÍDefault CursorÔ¤ÉèÌ壬Ìí¼Óµ½HierarchyÃæ°å¸ù¼¶¡£
  • ´ò¿ªCube212.cs½Å±¾£¬±à¼­ÈçÏ£º

  1. using HoloToolkit.Unity;
  2. using HoloToolkit.Unity.InputModule;
  3. using UnityEngine;

  4. public class Cube212 : MonoBehaviour, IFocusable {

  5.     // Cube״̬ö¾ÙÖµ
  6.     private enum CubeStatus
  7.     {
  8.         Normal = 1, // Õý³£×´Ì¬
  9.         Rotating    // Ðýת״̬
  10.     }

  11.     // µ±Ç°Cube״̬
  12.     private CubeStatus cubeStatus;

  13.     // CubeµÄÓïÒôÃüÁî×é¼þ
  14.     private KeywordManager keywordManager;

  15.     // Cube¸úËæ×é¼þ
  16.     private Tagalong tagalong;

  17.     void Start () {
  18.         // ÉèÖÃCubeĬÈÏ״̬
  19.         cubeStatus = CubeStatus.Normal;

  20.         // »ñÈ¡CubeÉϵÄKeywordManager×é¼þ
  21.         keywordManager = GetComponent<KeywordManager>();

  22.         // »ñÈ¡CubeÉÏTagalong×é¼þ
  23.         tagalong = GetComponent<Tagalong>();
  24.     }

  25.     void Update () {
  26.         // ¸ù¾Ý״̬ÐýתCube
  27.         if (cubeStatus == CubeStatus.Rotating)
  28.         {
  29.             transform.Rotate(Vector3.up);
  30.         }
  31.     }

  32.     // ¿ªÊ¼Ðýת
  33.     public void OnRotate()
  34.     {
  35.         cubeStatus = CubeStatus.Rotating;
  36.     }

  37.     // Í£Ö¹Ðýת
  38.     public void OnStopRotate()
  39.     {
  40.         cubeStatus = CubeStatus.Normal;
  41.     }

  42.     // Cube±»ÄýÊÓʱ£¬¿ªÆôÓïÒôÃüÁî
  43.     public void OnFocusEnter()
  44.     {
  45.         keywordManager.StartKeywordRecognizer();
  46.     }

  47.     // Cube²»±»ÄýÊÓʱ£¬¹Ø±ÕÓïÒôÃüÁî
  48.     public void OnFocusExit()
  49.     {
  50.         keywordManager.StopKeywordRecognizer();
  51.     }

  52.     // ÈÃCube¸úËæ
  53.     public void OnFollowMe()
  54.     {
  55.         tagalong.enabled = true;
  56.     }

  57.     // Í£Ö¹Cube¸úËæ
  58.     public void OnLeaveAlong()
  59.     {
  60.         tagalong.enabled = false;
  61.     }
  62. }
¸´ÖÆ´úÂë




  • °´ÕÕ֮ǰµÄ·½·¨£¬¸øCubeÌí¼ÓKeyword Manager×é¼þ£¬²¢°´Í¼½øÐÐÉèÖãº
    39.png

±¾½ÚµÚ¶þ²¿·ÖÍê³É£¡
µ±ÄýÊÓCubeʱ£¬·¢³öStart RotateÓïÒôÃüÁCube¿ªÊ¼Ðýת¡£·¢³öStop RotateÓïÒôÃüÁCubeÍ£Ö¹Ðýת¡£
Èç¹ûÓïÒôÃüÁî²»×àЧ£¬Çë¼ì²é´úÂë²¢²Î¿¼£º¡¶Hololens¹Ù·½½Ì³Ì¾«¼ò°æ - 02. Introduction with Device¡·Ëù˵µÄ½øÐмì²é¡£
˵Ã÷
  • TagAlong
    HoloToolkitÌṩµÄ¸úËæ½Å±¾
  • Keyword Manager
    ÓïÒôÃüÁî¹ÜÀíÆ÷£¬ÄÚ²¿Êµ¼ÊÉÏʹÓÃÁË¡±KeywordRecognizer¡°Àà¶ÔÓïÒôÃüÁî½øÐд¦Àí¡£
Chapter 2 - ²Ù×÷Âó¿Ë·çÄ¿±ê
Âó¿Ë·ç»Ø·Å£¬²¢¿ØÖÆCube´óС
ʵ¼ù
  • ¸øCubeÌí¼ÓAudio Source×é¼þ
  • н¨Îļþ£º¡±Assets/_Scenes/Holograms 212/Scripts/Cube212Mic.cs¡±£¬²¢ÍÏ×§µ½CubeÉÏ
  • ±àдCube212Mic.cs½Å±¾ÈçÏ£º

   
  1. using HoloToolkit.Unity.InputModule;
  2. using UnityEngine;

  3. public class Cube212Mic : MonoBehaviour {

  4.     // Cubeԭʼ´óС
  5.     private Vector3 origScale;

  6.     // µ±Ç°Âó¿Ë·ç"ÒôÁ¿"
  7.     private float averageAmplitude = 0;

  8.     void Start()
  9.     {
  10.         // ±£´æCubeԭʼ´óС
  11.         origScale = transform.localScale;
  12.         // ÉèÖÃÂó¿Ë·çÒôÁ¿
  13.         MicStream.MicSetGain(10);
  14.         // ¿ªÆôÂó¿Ë·ç
  15.         MicStream.MicStartStream(false, false);
  16.     }

  17.     // ÉùÒô¹ýÂË
  18.     private void OnAudioFilterRead(float[] buffer, int numChannels)
  19.     {
  20.         // ½«Âó¿Ë·çÊäÈëµ½ÉùÒô¹ýÂ˹ÜÏßÖУ¬½«Âó¿Ë·çµÄÉùÒô´Ó¶ú»ú²¥·Å³öÀ´
  21.         MicStream.MicGetFrame(buffer, buffer.Length, numChannels);

  22.         // ¼ÆËãÂó¿Ë·ç"ÒôÁ¿"´óС
  23.         float sumOfValues = 0;
  24.         for (int i = 0; i < buffer.Length; i++)
  25.         {
  26.             sumOfValues += Mathf.Abs(buffer[i]);
  27.         }
  28.         averageAmplitude = sumOfValues / buffer.Length;
  29.     }

  30.     void Update()
  31.     {
  32.         // ¸ù¾Ý"ÒôÁ¿"µ÷ÕûCube´óС
  33.         transform.localScale = origScale * (1 + averageAmplitude * 10);
  34.     }
  35. }
¸´ÖÆ´úÂë



±¾½ÚÍê³É£¡
µ±Âó¿Ë·çÓÐÉùÒôʱ£¬¶ú»úÖÐ»á»Ø·ÅÂó¿Ë·çÉùÒô£¬²¢ÇÒCube»á¸ù¾ÝÒôÁ¿¸Ä±ä´óС
˵Ã÷
  • MicStream
    HoloToolkitÌṩµÄÂó¿Ë·ç²Ù×÷À࣬ÏêϸµÄÓ÷¨¿É²Î¿¼¹¤¾ß°üÖеÄMicStreamDemoÀà
  • OnAudioFilterRead
    UnityÒýÇæÌṩµÄÉùÒôÂ˲¨º¯Êý£¬¾ßÌåÔ­Àí¿É²Î¿¼¹Ù·½Îĵµ¡¶OnAudioFilterRead¡·
  • MicStream.MicGetFrame(¡­)
    Õâ¸ö·½·¨¿ÉÒÔ»ñÈ¡µ½Âó¿Ë·çµÄÖ¡Êý¾Ý(float[])£¬¿ÉÒÔÔÚÀàËÆOnAudioFilterRead»òÕßUpdateµÈ¸ßƵʼþÖе÷Óò¢»ñÈ¡¡£ÒòΪ»ñÈ¡µ½µÄÊÇÂó¿Ë·ç×îСÊý¾Ýµ¥Ôª£¬Ê¹ÓÃÆðÀ´·Ç³£Áé»î¡£ÎÒÃÇ¿ÉÒÔÔÚOnAudioFilterReadÖв¥·Å£¬Ò²¿ÉÒÔʹÓÃSocket½øÐÐÔ¶³Ìͨ»°¡£ºóÃæÎÒ»áÏêϸ˵Ã÷£¬ÈçºÎÓÃHololensʵÏÖÔ¶³Ìͨ»°¡£
С½á
ÔÚHololensδÕýʽ֧³ÖÖÐÎÄÓïÒôǰ£¬ÎÒÃÇÖ»ÄÜÔÝʱʹÓÃÓ¢ÎÄÓïÒôÃüÁîÀ²¡£
ÁíÍ⣬Èç¹ûС»ï°éÃÇÒª×öͨ»°£¬ÄÇô±¾ÈËÇ¿ÁÒ½¨ÒéÉîÈëÁ˽âMicStreamµÄʹÓᣵ±È»£¬Ò²ÉÙ²»ÁËÐèÒªÑо¿Ò»ÏÂUnityÖйØÓÚMicrophoneµÄ²¿·Ö¡£
¹ØÓÚOnAudioFilterRead(¡­)£¬ÔÚÉùÒô´¦ÀíºÍ»Ø·ÅÖÐÆðµ½Á˺ÜÖØÒªµÄ×÷Óá£Í¨¹ýSocketÔ¶³Ìͨ»°£¬¾Í»áÓõ½Õâ¸ö·½·¨¡£






ÉÏһƪ£ºHololens¹Ù·½½Ì³Ì¾«¼ò°æ - 04. Gesture£¨ÊÖÊÆ£©
ÏÂһƪ£ºHololens¹Ù·½½Ì³Ì¾«¼ò°æ - 06. Spatial sound£¨¿Õ¼äÉùÒô£©
·¢±íÓÚ 2017-12-5 22:10:29 | ÏÔʾȫ²¿Â¥²ã
Õâôţ£¬¶¥Ò»¸ö
*滑动验证:
ÄúÐèÒªµÇ¼ºó²Å¿ÉÒÔ»ØÌû µÇ¼ | Á¢¼´×¢²á

±¾°æ»ý·Ö¹æÔò

×¢²áÑéÖ¤Óʼþ²éÊÕÌáÐÑ£º

ÓÉÓÚ¸÷´óÓÊÏäÕþ²ßÔ­Òò£¬

Èç¹ûûÊÕµ½ÓʼþÌáÐÑ£¬

ÄúµÄ×¢²áÑéÖ¤Óʼþ¿ÉÄÜ

±»Í¶Ë͵½ÄúÓÊÏäµÄÀ¬»øÏ䣬

Çë×¢Òâ²éÊÕÑé֤Ŷ


QQ|СºÚÎÝ|HololensȫϢÏÖÊµÍø ( ¾©ICP±¸15026232ºÅ   µã»÷ÕâÀï¸øÎÒ·¢ÏûÏ¢

GMT+8, 2019-2-20 08:58 , Processed in 0.573916 second(s), 32 queries .

Powered by HololensȫϢÏÖÊµÍø X3.2

© 2001-2017 HololensȫϢÏÖÊµÍø

¿ìËٻظ´ ·µ»Ø¶¥²¿ ·µ»ØÁбí