将 Unity 3D 与 ZXing 集成
Integrate Unity3D with XZing
我一直在从事一个使用 Unity3D 和 Vuforia 提供增强现实的项目。现在我想集成 XZing 以从 QR 码获取数据并在我的 Unity assets/objects.
之一中显示这些信息
包含 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);
}
}
}
}
提前致谢。
你google
"Unity3D ZXing"
?讨论量巨大,例如:
http://forum.unity3d.com/threads/zxing-library-with-unity.335017/
请注意,正如此处所述,
iOS's WebCamTexture doesn't return its proper width and height...
这是 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);
我一直在从事一个使用 Unity3D 和 Vuforia 提供增强现实的项目。现在我想集成 XZing 以从 QR 码获取数据并在我的 Unity assets/objects.
之一中显示这些信息包含 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);
}
}
}
}
提前致谢。
你google
"Unity3D ZXing"
?讨论量巨大,例如:
http://forum.unity3d.com/threads/zxing-library-with-unity.335017/
请注意,正如此处所述,
iOS's WebCamTexture doesn't return its proper width and height...
这是 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);