public void InitializeImagesLibrary()
    {
        Debug.Log(arTrackingImageManager + ":" + arTrackingImageManager.descriptor);
        if (arTrackingImageManager)
        {
            goToImage.Clear();
            MutableRuntimeReferenceImageLibrary runtimeImageLibrary = arTrackingImageManager.CreateRuntimeLibrary() as MutableRuntimeReferenceImageLibrary;

            if (runtimeImageLibrary == null)
            {
                Debug.LogError(gameObject.name + ":Library is nullable");
                return;
            }

            foreach (ObjectToImage item in images)
            {
                Debug.Log(item.image.name);
                goToImage.Add(item.image.name, item.@object);
                runtimeImageLibrary.ScheduleAddImageJob(item.image, item.image.name, item.image.width / 1000f);// Первая ошибка, размеры текстуры я делил на цельный int от чего оно округлялось до ближайшего цельного числа, к примеру "201f/1000 = 0" а вот "201f/1000f = 0.201" не забывайте про логику хранения чисел в памяти компьютера
            }

            arTrackingImageManager.referenceLibrary        = runtimeImageLibrary;
            arTrackingImageManager.maxNumberOfMovingImages = 2;
            arTrackingImageManager.trackedImagesChanged   += ArTrackingImageManager_trackedImagesChanged;
            arTrackingImageManager.enabled = true;
        }
        else
        {
            Debug.LogError("Not Supports Mutable Library");
        }
    }
Beispiel #2
0
 public void ResetRuntimeImageLibrary()
 {
     if (IsSupportsMutableLibrary())
     {
         myRuntimeReferenceImageLibrary =
             mARTrackedImageManager.CreateRuntimeLibrary() as MutableRuntimeReferenceImageLibrary;
         mARTrackedImageManager.referenceLibrary = myRuntimeReferenceImageLibrary;
     }
 }
Beispiel #3
0
    void Start()
    {
        debugLog.text += "Creating Runtime Mutable Image Library\n";

        trackImageManager = gameObject.AddComponent <ARTrackedImageManager>();
        trackImageManager.referenceLibrary        = trackImageManager.CreateRuntimeLibrary(xrReferenceImageLibrary);
        trackImageManager.maxNumberOfMovingImages = 3;
        trackImageManager.trackedImagePrefab      = prefabOnTrack;

        trackImageManager.enabled = true;

        trackImageManager.trackedImagesChanged += OnTrackedImagesChanged;

        ShowTrackerInfo();
    }
    void Start()
    {
        debugLog.text    += "Creating Runtime Mutable Image Library\n";
        trackImageManager = gameObject.AddComponent <ARTrackedImageManager>();
        trackImageManager.referenceLibrary        = trackImageManager.CreateRuntimeLibrary(runtimeImageLibrary);
        trackImageManager.maxNumberOfMovingImages = 3;
        trackImageManager.trackedImagePrefab      = placedObject;

        trackImageManager.enabled = true;

        trackImageManager.trackedImagesChanged += OnTrackedImagesChanged;

        ShowTrackerInfo();

        captureImageButton.onClick.AddListener(() => StartCoroutine(CaptureImage()));
    }
Beispiel #5
0
    private void Awake()
    {
        _arSession             = FindObjectOfType <ARSession>();
        _database              = GameObject.FindObjectOfType <Database>();
        _arTrackedImageManager = GameObject.FindObjectOfType <ARTrackedImageManager>();

        _sceneInfo = FindObjectOfType <SceneInfo>();
        _introUI   = FindObjectOfType <IntroUIManager>();

        runtimeLibrary = _arTrackedImageManager.CreateRuntimeLibrary();
        mutableLibrary = runtimeLibrary as MutableRuntimeReferenceImageLibrary;
        _arTrackedImageManager.referenceLibrary = mutableLibrary;
        _arTrackedImageManager.enabled          = true;

        GetMarkerData();
    }
Beispiel #6
0
    private void Start()
    {
        StartCoroutine(WaitForUIActivation());

        //Get the imagelist to be used later. This list contains data about the images and audio.
        imageList = ResourceManager.GetImageTrackingObjects();

        //Create and enable a runtimeImageLibrary so images can be added during runtime.
        var lib = runtimeImageLibrary;

        trackedImageManager.referenceLibrary = trackedImageManager.CreateRuntimeLibrary(lib);

        mutableRuntimeReferenceImageLibrary = trackedImageManager.referenceLibrary as MutableRuntimeReferenceImageLibrary;

        trackedImageManager.referenceLibrary = mutableRuntimeReferenceImageLibrary;
        trackedImageManager.enabled          = true;
    }
Beispiel #7
0
    void Start()
    {
        debugLog.text += "Creating Runtime Mutable Image Library\n";

        trackImageManager = gameObject.AddComponent <ARTrackedImageManager>();
        trackImageManager.referenceLibrary        = trackImageManager.CreateRuntimeLibrary(runtimeImageLibrary);
        trackImageManager.maxNumberOfMovingImages = 3;
        trackImageManager.trackedImagePrefab      = prefabOnTrack;

        trackImageManager.enabled = true;

        trackImageManager.trackedImagesChanged += OnTrackedImagesChanged;

        // ShowTrackerInfo();

        firstTextureButton.onClick.AddListener(() => StartCoroutine(AddImageJob(firstTexture)));

        secondTextureButton.onClick.AddListener(() => StartCoroutine(AddImageJob(downloadableTexture)));
    }
Beispiel #8
0
    void Start()
    {
        debugLog.text += "Creating Runtime Mutable Image Library\n";

        trackImageManager = gameObject.AddComponent <ARTrackedImageManager>();
        trackImageManager.referenceLibrary        = trackImageManager.CreateRuntimeLibrary(xrReferenceImageLibrary[0]);
        trackImageManager.maxNumberOfMovingImages = 3;
        trackImageManager.trackedImagePrefab      = prefabOnTrack;

        trackImageManager.enabled = true;

        trackImageManager.trackedImagesChanged += OnTrackedImagesChanged;

        firstButton.onClick.AddListener(() => SetReferenceImageLibrary(0));

        secondButton.onClick.AddListener(() => SetReferenceImageLibrary(1));

        ShowTrackerInfo();
    }
        private void AfterInitialization(ARSessionStateChangedEventArgs stateArgument)
        {
            if (stateArgument.state == ARSessionState.SessionInitializing)
            {
                // Ready to set Runtime Library
                mARTrackedImageManager = gameObject.AddComponent <ARTrackedImageManager>();
                if (mARTrackedImageManager.descriptor.supportsMutableLibrary)
                {
                    var myRuntimeReferenceImageLibrary =
                        mARTrackedImageManager.CreateRuntimeLibrary() as MutableRuntimeReferenceImageLibrary;

                    var allTexturesHere = new List <DynamicImageLibraryEntry>(5);
                    OnRequestImageAdd?.Invoke(allTexturesHere);
                    var jobs = new List <Unity.Jobs.JobHandle>(allTexturesHere.Count);

                    foreach (var item in allTexturesHere)
                    {
                        jobs.Add(myRuntimeReferenceImageLibrary
                                 .ScheduleAddImageJob(item.texture, item.id, item.widthInMeters));
                    }

                    foreach (var item in jobs)
                    {
                        item.Complete();
                    }

                    if (myRuntimeReferenceImageLibrary != null)
                    {
                        Debug.Log("myRuntimeReferenceImageLibrary: " + myRuntimeReferenceImageLibrary.count);
                        Debug.Log("supportedTextureFormatCount: " + myRuntimeReferenceImageLibrary.supportedTextureFormatCount);

                        mARTrackedImageManager.referenceLibrary = myRuntimeReferenceImageLibrary;
                    }
                    mARTrackedImageManager.enabled = true;
                }
            }
        }
    protected virtual void Awake()
    {
        Logger.Log("Creating Runtime Mutable Image Library\n");
        if (GetComponent <ARTrackedImageManager>() == null)
        {
            trackImageManager = gameObject.AddComponent <ARTrackedImageManager>();
        }
        else
        {
            trackImageManager = GetComponent <ARTrackedImageManager>();
        }
        trackImageManager.maxNumberOfMovingImages = 1;
        //todo not addding prefab via artrackedimagemanager
        //trackImageManager.trackedImagePrefab = prefabOnTrack;



        trackImageManager.trackedImagesChanged += OnTrackedImagesChanged;

        // ShowTrackerInfo();
        trackImageManager.enabled          = false;
        trackImageManager.referenceLibrary = trackImageManager.CreateRuntimeLibrary(runtimeImageLibrary);
        trackImageManager.enabled          = true;
    }
Beispiel #11
0
 public void SetReferenceImageLibrary(int selectedLibrary = 0)
 {
     trackImageManager.referenceLibrary = trackImageManager.CreateRuntimeLibrary(xrReferenceImageLibrary[selectedLibrary]);
 }
    // Descarga los targets utilizando las urls de entrada y los
    // añade a la colleccion/libreria de targets para que AR Foundation
    // pueda detectarlas. El nombre de cada target es el id al que esta
    // vinculado.
    private IEnumerator DownloadAndAddTargetsFromUrl(List <string> links, List <string> ids)
    {
        // Empareja el id con su textura.
        // image.item1 es el id
        // image.item2 es la textura2D
        List <Tuple <string, Texture2D> > allImages = new List <Tuple <string, Texture2D> >();

        // Descarga de imagenes
        for (int h = 0; h < links.Count; h++)
        {
            UnityWebRequest request = UnityWebRequestTexture.GetTexture(links[h]);
            yield return(request.SendWebRequest());

            Texture2D texture2D;


            if (request.isNetworkError || request.isHttpError)
            {
                Debug.Log(request.error);
            }
            else
            {
                debugLog.text += "Descarga de Imagen exitosa.\n";
                texture2D      = ((DownloadHandlerTexture)request.downloadHandler).texture;
                allImages.Add(new Tuple <string, Texture2D>(ids[h], texture2D));
            }
        }


        // Creacion de coleccion/libreria de targets para AR foundation.
        try
        {
            trackImageManager.referenceLibrary        = trackImageManager.CreateRuntimeLibrary(runtimeImageLibrary);
            trackImageManager.maxNumberOfMovingImages = 3;
            trackImageManager.trackedImagePrefab      = prefabOnTrack;


            trackImageManager.enabled = true;

            MutableRuntimeReferenceImageLibrary mutableRuntimeReferenceImageLibrary = trackImageManager.referenceLibrary as MutableRuntimeReferenceImageLibrary;

            debugLog.text += $"TextureFormat.RGBA32 supported: {mutableRuntimeReferenceImageLibrary.IsTextureFormatSupported(TextureFormat.RGBA32)} \n";

            // Recorre la lista de pares para añadir la textura2D/Target
            // a la mutableRuntimeReferenceImageLibrary con el id como nombre.
            // image.item1 es el id
            // image.item2 es la textura2D
            foreach (var image in allImages)
            {
                Texture2D texture2D = image.Item2;
                debugLog.text += $"TextureFormat size: {texture2D.width}px width {texture2D.height}px height \n";

                var jobHandle = mutableRuntimeReferenceImageLibrary.ScheduleAddImageJob(texture2D, image.Item1, 0.1f);

                while (!jobHandle.IsCompleted)
                {
                    debugLog.text += "Job Running... \n";
                    Task.Delay(100).Wait();
                }
            }
        }
        catch (Exception e)
        {
            debugLog.text += e.ToString() + "\n";
        }
    }