基于Unity3D的调用摄像头功能的实现

AR中会用到设备的摄像头,那么又如何去在Unity3D中去调用摄像头呢?

原地址:http://blog.csdn.net/wuyt2008/article/details/50684236

如下代码:

[csharp]  view plain  copy
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. public class WebCamManager : MonoBehaviour {  
  5.   
  6.     // Use this for initialization  
  7.     void Start () {  
  8.   
  9.         WebCamTexture webcamTexture = new WebCamTexture ();  
  10.   
  11.         //如果有后置摄像头,调用后置摄像头  
  12.         for (int i = 0; i < WebCamTexture.devices.Length; i++) {  
  13.             if (!WebCamTexture.devices [i].isFrontFacing) {  
  14.                 webcamTexture.deviceName = WebCamTexture.devices [i].name;  
  15.                 break;  
  16.             }  
  17.         }  
  18.   
  19.         Renderer renderer = GetComponent();  
  20.         renderer.material.mainTexture = webcamTexture;  
  21.         webcamTexture.Play();  
  22.     }  
  23.   
  24. }  
在场景里面添加一个plane
基于Unity3D的调用摄像头功能的实现_第1张图片


调整plane的位置,并把脚本拖上去,运行就可以了。

基于Unity3D的调用摄像头功能的实现_第2张图片


如果是要在GUITexture上显示,则代码如下:

[csharp]  view plain  copy
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. public class WebCamManager : MonoBehaviour {  
  5.   
  6.     // Use this for initialization  
  7.     void Start () {  
  8.   
  9.         WebCamTexture webcamTexture = new WebCamTexture ();  
  10.   
  11.         //如果有后置摄像头,调用后置摄像头  
  12.         for (int i = 0; i < WebCamTexture.devices.Length; i++) {  
  13.             if (!WebCamTexture.devices [i].isFrontFacing) {  
  14.                 webcamTexture.deviceName = WebCamTexture.devices [i].name;  
  15.                 break;  
  16.             }  
  17.         }  
  18.   
  19.         GUITexture guiTexture = GetComponent ();  
  20.         guiTexture.texture = webcamTexture;  
  21.         webcamTexture.Play ();  
  22.     }  
  23. }  


如果在本机调试的时候出现以下错误提示

[plain]  view plain  copy
  1. Cannot use web cam, since the user has not authorized this!  

这是没有使用摄像头的权限,build一次安卓应用再试就好了,或者使用以下代码,先判断权限

[csharp]  view plain  copy
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. public class WebcamManager : MonoBehaviour {  
  5.   
  6.     // Use this for initialization  
  7.     void Start () {  
  8.         StartCoroutine ("CallWebCam");  
  9.     }  
  10.   
  11.     IEnumerator CallWebCam(){  
  12.         yield return Application.RequestUserAuthorization (UserAuthorization.WebCam);  
  13.   
  14.         if (Application.HasUserAuthorization (UserAuthorization.WebCam)) {  
  15.             WebCamTexture webcamTexture = new WebCamTexture ();    
  16.   
  17.             //如果有后置摄像头,调用后置摄像头    
  18.             for (int i = 0; i < WebCamTexture.devices.Length; i++) {    
  19.                 if (!WebCamTexture.devices [i].isFrontFacing) {    
  20.                     webcamTexture.deviceName = WebCamTexture.devices [i].name;    
  21.                     break;    
  22.                 }    
  23.             }    
  24.   
  25.             GUITexture guiTexture = GetComponent ();    
  26.             guiTexture.texture = webcamTexture;    
  27.             webcamTexture.Play ();    
  28.         } else {  
  29.             Debug.Log ("has not authorization");  
  30.         }  
  31.     }  
  32. }  

你可能感兴趣的:(Unity3D)