В настоящее время я использую Rajawali sdk (https://github.com/Rajawali/RajawaliVuforia) для разработки приложения для приложения дополненной реальности. Здесь я могу изменить цели, такие как маркер кадра, цели изображения и его работу отлично. Но я хотел бы реализовать пользовательскую цель в своем приложении. Есть ли какие-либо варианты или функции, доступные в rajawali для реализации пользовательских целей. Спасибо за помощьКак достичь заданной пользователем цели в андроиде Rajawali-Vufoira?
ответ
Использования класса 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;
}
}
}
}
Привет, Спасибо за ваш ответ. Я не смог найти класс изображения, где он находится ?. Не могли бы вы рассказать мне –
Это в 'UnityEngine.UI' –
Это UnityEngine.UI доступно в коде rajawali? –