2016-01-06 4 views
1

Я работаю над проектом, который обеспечивает дополненную реальность Unity3D и Vuforia. Теперь я хочу интегрировать XZing для получения данных с QR-кода и отображения этих данных в одном из моих активов/объектов Unity.Интеграция Unity3D с XZing

После включения активов XZing и установки сценария VuforiaScanner.cs на ARCamera изображение не может быть загружено с объекта устройства камеры.

Знаете ли вы, как исправить эту проблему или знаете некоторые руководства, которые реализуют XZing в Vuforia/Unity3D?

Вот фрагмент кода VuforiaScanner.cs

using UnityEngine; 
using System; 
using System.Collections; 

using Vuforia; 

using System.Threading; 

using ZXing; 
using ZXing.QrCode; 
using ZXing.Common; 


[AddComponentMenu("System/VuforiaScanner")] 
public class VuforiaScanner : MonoBehaviour 
{  
    private bool cameraInitialized; 

    private BarcodeReader barCodeReader; 

    void Start() 
    {   
     barCodeReader = new BarcodeReader(); 
     StartCoroutine(InitializeCamera()); 
    } 

    private IEnumerator InitializeCamera() 
    { 
     // Waiting a little seem to avoid the Vuforia's crashes. 
     yield return new WaitForSeconds(1.25f); 

     var isFrameFormatSet = CameraDevice.Instance.SetFrameFormat(Image.PIXEL_FORMAT.RGB888, true); 
     Debug.Log(String.Format("FormatSet : {0}", isFrameFormatSet)); 

     // Force autofocus. 
     var isAutoFocus = CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO); 
     if (!isAutoFocus) 
     { 
      CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_NORMAL); 
     } 
     Debug.Log(String.Format("AutoFocus : {0}", isAutoFocus)); 
     cameraInitialized = true; 
    } 

    private void Update() 
    { 
     if (cameraInitialized) 
     { 
      try 
      { 
       /** 
       * AT THIS POINT CAMERAFEED IS NULL 
       **/ 
       var cameraFeed = CameraDevice.Instance.GetCameraImage(Image.PIXEL_FORMAT.RGB888); 
       if (cameraFeed == null) 
       { 
        return; 
       } 
       var data = barCodeReader.Decode(cameraFeed.Pixels, cameraFeed.BufferWidth, cameraFeed.BufferHeight, RGBLuminanceSource.BitmapFormat.RGB24); 
       if (data != null) 
       { 
        // QRCode detected. 
        Debug.Log(data.Text); 
       } 
       else 
       { 
        Debug.Log("No QR code detected !"); 
       } 
      } 
      catch (Exception e) 
      { 
       Debug.LogError(e.Message); 
      } 
     } 
    }  
} 

Спасибо заранее.

+0

VuforiaScanner.cs есть ошибка в строке данных вар = barCodeReader.Decode (cameraFeed.Pixels, cameraFeed.BufferWidth, cameraFeed.BufferHeight, RGBLuminanceSource.BitmapFormat.RGB24); [введите описание изображения здесь] (https://i.stack.imgur.com/oMe7W.jpg) – alimaha

ответ

0

ли вы Google

"Unity3D ZXing"

? Есть огромное количество дискуссий, например:

http://forum.unity3d.com/threads/zxing-library-with-unity.335017/

Обратите внимание, что, как он говорит, что,

WebCamTexture Иос не возвращает его правильную ширину и высоту ...

Это значительная проблема с Unity3D, и была в течение многих лет,

http://answers.unity3d.com/answers/687987/view.html

private IEnumerator _workAroundRisibleUnityBug() 
    { 
    while (frontCam.width < 100) 
     { 
     Debug.Log("the width/height values are not yet ready."); 
     Debug.Log(frontCam.width +" " +frontCam.height); 
     yield return null; 
     } 

    Debug.Log("the width/height values are now meaningful."); 
    Debug.Log(frontCam.width +" " +frontCam.height);