2015-05-30 12 views
6

Muszę zintegrować Zxing z vuforią, aby utworzyć aplikację do skanowania kodów QR w Unity? Nie mam pojęcia, jak zintegrować Zxing z Vuforia w jedności. Czy ktoś może mi pomóc, mam to zrobić? Mam pliki .dll Zxing i pakiet jedności Vuforia. Dzięki za Advance.Integracja skanera kodów Unity Zxing

Odpowiedz

7

Szukałem zintegrowania Zxinga z vuforią w Jedności dzisiaj.

Pierwszą rzeczą do zrobienia jest, aby pobrać dll od: https://zxingnet.codeplex.com/ i skopiować dll jedność w folderze wtyczek (który powinien znajdować się w folderze Assets)

Potem udało mi się znaleźć kilka przykładów (niektóre tez jest nieaktualna)

Po połączeniu tezy przykładami i uprościć je, mam coś takiego (który jest umieszczony z ARCamera prefabrykatów):

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 
      { 
       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); 
      } 
     } 
    }  
} 

udaje mi się zrobić to działa w AVD (Android wirtualnej Device), tak będzie działać na prawdziwym urządzeniu.

+0

hej bro ... nic się nie dzieje, tylko czarny ekran pojawia się w urządzeniu z Androidem. Myślę, że kamera nie inicjuje. – Hussey123

+0

To Vuforia, która przyjmuje domyślną kamerę internetową dla twojego urządzenia. Czy przeciągasz i upuszczasz "AR Camera" do swojej sceny? Jeśli masz kamerę internetową, możesz przetestować wszystkie funkcje Vuforii bezpośrednio w Unity – KDelli

+0

Naprawiono problemy z czarnym ekranem. Wartość iFrameFormatSet również jest teraz prawdziwa. Ale kod QR nie jest dekodowany. Zawsze jest to wartość null.It drukuje " Nie wykryto kodu QR! " – Hussey123

1

Jeśli używasz Unity 5.x oraz 64-bitowego systemu Windows może pojawić się błąd

udało się wczytać Obrotowe/plugins/QCARWrapper.dll

rozwiązanie jest proste, jak to podano w pytanie Unity3d - Failed to load 'Assets/Plugins/QCARWrapper.dll'

  1. aby korzystać Vuforia z Unity 64 bit, po prostu przesuń QCARWrapper DLL z /Plugins do /Plugins/x86. The se są DLL:

  2. wybrać QCARWrapper.bundle w widoku Unity Projektu (znajduje się w aktywach> Plugins), tak, że jego ustawienia są pokazane w jedności Inspektora ustawienia QCARWrapper.bundle w Inspektorze Unity z dowolnej platformy do samodzielnych + Editor.

Niż działa jak urok.

Powiązane problemy