Как заставить текст исчезать после того, как приложение распознает цель изображения на Vuforia / Unity?

Как заставить текст исчезать после того, как приложение распознает цель изображения (через Vuforia)?

Я пытаюсь создать приложение AR, которое сообщает пользователям инструкции, прежде чем они поместят камеру своего телефона на поздравительную открытку. Как я могу заставить этот текст исчезнуть, когда пользователь проецирует камеру на поздравительную открытку и распознает одну из целей изображения, связанных с открыткой?

  • Использование Unity / Vuforia для приложения AR

person Jeannie    schedule 28.03.2018    source источник
comment
Ваша точная трудность не очень ясна - вы не спрашиваете, как скрыть текст, верно? Вы имеете в виду, что ищете место в коде, где вы знаете, какую цель распознает Vuforia?   -  person yakobom    schedule 28.03.2018
comment
library.vuforia.com/ статьи / Решение / - ›. Расширьте этот сценарий, чтобы реализовать настраиваемую обработку событий для вашего приложения.   -  person Chopi    schedule 28.03.2018
comment
@yakobom Есть текст, который сообщает пользователям: наведите камеру телефона на карту. Я хочу, чтобы этот текст исчез, как только пользователь направит камеру своего телефона на карту, и функции дополненной реальности начнут работать (цель изображения распознается с помощью камеры AR)   -  person Jeannie    schedule 31.03.2018


Ответы (4)


Похоже, что то, что вы спрашиваете, очень простое, вы должны начать с образца Vuforia и переопределить код, который обрабатывает обнаружение цели. Должно получиться примерно так:

public void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
{
    if (newStatus == TrackableBehaviour.Status.DETECTED ||
        newStatus == TrackableBehaviour.Status.TRACKED ||
        newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
    {
       // hide your text here
    }
    else
    {
        // show your text here (or do anything else you wish to do)
    }
}   
person yakobom    schedule 01.04.2018

Вам необходимо управлять видимостью объекта UIText в OnTrackableStateChanged скрипта DefaultTrackableEventHandler, предоставляемого Vuforia в sdk.

public void OnTrackableStateChanged (TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus) {if (newStatus == TrackableBehaviour.Status.DETECTED || newStatus ==TrackableBehaviour.Status.TRACKEDhaviour ==TrackableBehaviour.Status.TRACKED ==TrackableBehaviour.Status.TRACKED_EXE ==TrackableBehaviour.Status.TRACKED ==TracableBehaviour.Status.TRACKED_EXE ==TrackableBehaviour.Status.TRACKED ==TracableBehaviour.Status. ; } else {OnTrackingLost (); }}

В функции OnTrackingFound () это можно сделать. Создайте общедоступный объект UItext и на стороне Unity перетащите UItext в эту общедоступную переменную.

person user2711333    schedule 05.04.2018

Добавьте в этот сценарий все, что нужно для запуска и остановки, в списке событий в редакторе. Например, чтобы активировать GameObject или нет.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using Vuforia;

public class ImageTargetBehaviour : MonoBehaviour, ITrackableEventHandler
{
    private TrackableBehaviour mTrackableBehaviour;
    public UnityEvent myStartEvent;
    public UnityEvent myStopEvent;

    void Start()
    {
        mTrackableBehaviour = GetComponent<TrackableBehaviour>();
        if (mTrackableBehaviour)
        {
            mTrackableBehaviour.RegisterTrackableEventHandler(this);
        }
    }

    public void OnTrackableStateChanged(
                                    TrackableBehaviour.Status previousStatus,
                                    TrackableBehaviour.Status newStatus)
    {
        if (newStatus == TrackableBehaviour.Status.DETECTED ||
            newStatus == TrackableBehaviour.Status.TRACKED ||
            newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
        {
            // When target is found
            myStartEvent.Invoke();
        }
        else
        {
            // When target is lost
            myStopEvent.Invoke();
        }
    }
}
person emorling    schedule 09.02.2019

Код, в котором вы написали, чтобы создать / отобразить объект после обнаружения изображения, в том же месте просто скройте текст, например SetActive false.

person Jamshaid Alam    schedule 30.03.2018
comment
хм, не совсем понимаю, что вы здесь имеете в виду. Можете ли вы подробнее рассказать об этом? - person Jeannie; 31.03.2018