2015-06-11 7 views
0

В настоящее время я использую Rajawali sdk (https://github.com/Rajawali/RajawaliVuforia) для разработки приложения для приложения дополненной реальности. Здесь я могу изменить цели, такие как маркер кадра, цели изображения и его работу отлично. Но я хотел бы реализовать пользовательскую цель в своем приложении. Есть ли какие-либо варианты или функции, доступные в rajawali для реализации пользовательских целей. Спасибо за помощьКак достичь заданной пользователем цели в андроиде Rajawali-Vufoira?

ответ

1

Использования класса Image

  • Регистра для требуемого формата изображения с помощью CameraDevice.SetFrameFormat метода: CameraDevice.Instance.SetFrameFormat(Image.PIXEL_FORMAT.RGB888, true);

  • вызова этого метода после того, как QCARBehaviour имеет шанс запустить его Start способ.

  • Используйте функцию заказа сценария Unity или выполните это один раз в обратном вызове Update.

  • Извлечь изображение, используя метод CameraDevice.GetCameraImage.

  • Выполните это действие с обратного вызова ITrackerEventHandler.OnTrackablesUpdated. Таким образом, вы можете обеспечить получение последнего изображения камеры, соответствующего текущему кадру.

Всегда убедитесь, что изображение с камеры не равно нулю, так как это может занять несколько кадров для изображения становятся доступны после регистрации для формата изображения.

Вот полный скрипт:

using UnityEngine; 
using System.Collections; 
public class CameraImageAccess : MonoBehaviour 
{ 
    private Image.PIXEL_FORMAT m_PixelFormat = Image.PIXEL_FORMAT.RGB888; 
    private bool m_RegisteredFormat = false; 
    private bool m_LogInfo = true; 
    void Start() 
    { 
     QCARBehaviour qcarBehaviour = (QCARBehaviour) FindObjectOfType(typeof(QCARBehaviour)); 
     if (qcarBehaviour) 
     { 
      qcarBehaviour.RegisterTrackablesUpdatedCallback(OnTrackablesUpdated); 
     } 
    } 
    public void OnTrackablesUpdated() 
    { 
     if (!m_RegisteredFormat) 
     { 
      CameraDevice.Instance.SetFrameFormat(m_PixelFormat, true); 
      m_RegisteredFormat = true; 
     } 
     if (m_LogInfo) 
     { 
      CameraDevice cam = CameraDevice.Instance; 
      Image image = cam.GetCameraImage(m_PixelFormat); 
      if (image == null) 
      { 
       Debug.Log(m_PixelFormat + " image is not available yet"); 
      } 
      else 
      { 
       string s = m_PixelFormat + " image: \n"; 
       s += " size: " + image.Width + "x" + image.Height + "\n"; 
       s += " bufferSize: " + image.BufferWidth + "x" + image.BufferHeight + "\n"; 
       s += " stride: " + image.Stride; 
       Debug.Log(s); 
       m_LogInfo = false; 
      } 
     } 
    } 
} 
+0

Привет, Спасибо за ваш ответ. Я не смог найти класс изображения, где он находится ?. Не могли бы вы рассказать мне –

+0

Это в 'UnityEngine.UI' –

+0

Это UnityEngine.UI доступно в коде rajawali? –