コード例 #1
0
    /// <summary>
    /// Creates multiple ARImageVisualizers and adds it to a reference list.
    /// </summary>
    /// <param name="_imagesToVisualize">List of AugmentedImages to visualize</param>
    void CreateVisualizerObjects(List <AugmentedImage> _imagesToVisualize)
    {
        foreach (AugmentedImage image in _imagesToVisualize)
        {
            //Create an anchor at centre of image to ensure that transformation is relative to real world
            Anchor anchor = image.CreateAnchor(image.CenterPose);
            //Only continue if anchor is legit
            if (anchor != null)
            {
                //Get instance of visualizer from object pool
                ARImageVisualiser visualizer = ObjectPool.GetExisting <ARImageVisualiser>();
                //Set parent of visualizer to anchor
                visualizer.transform.SetParent(anchor.transform);
                //Set image of visualizer
                visualizer.m_image = image;
                //Set visualizer to active
                visualizer.gameObject.SetActive(true);

                //Add visualizer to list
                m_listOfVisualizedObjects.Add(visualizer);

                //Set anchor to self-destruct
                Destroy(anchor, 0.2f);
            }
        }
    }
コード例 #2
0
    /// <summary>
    /// When Images are tracked and added into the list, a visualiser will then be set on top of them
    /// </summary>
    public void SetVisualisersOnImages()
    {
        foreach (var _image in m_TempAugmentedImagesList)
        {
            // Get visualiser from image in list and store it
            ARImageVisualiser m_visualiser = null;
            m_visualiser = GetVisualiser(_image, m_visualiser);

            // if there is no visualiser for that image and it is tracked, add one
            if (m_visualiser == null && _image.TrackingState == TrackingState.Tracking)
            {
                AddVisualiser(_image);
            }
            else if (_image.TrackingState != TrackingState.Tracking && m_visualiser != null)
            {
                //m_trackingStateDebug.text = "Count of Dictionary: " + m_Visualizers.Count;
                RemoveVisualiser(_image, m_visualiser);
                //m_trackingStateDebug2.text = "Count of Dictionary: " + m_Visualizers.Count;
            }
            //m_debuggingText.text = "prev index: " + m_prevIndex;

            if (_image.DatabaseIndex == m_prevIndex)
            {
                continue;
            }

            // remove the visualiser
            //RemoveVisualiser(_image, m_visualiser);
            // remove images from list -> trackable images are still there
            m_trackingStateDebug.text = "Before Count of imagelist: " + m_TempAugmentedImagesList.Count;
            m_TempAugmentedImagesList.RemoveAt(_image.DatabaseIndex);
            m_trackingStateDebug2.text = "After Count of imagelist: " + m_TempAugmentedImagesList.Count;
        }
    }
コード例 #3
0
    /// <summary>
    /// Add Visualiser and anchors for updated augmented images that are tracking and do not previously have a visualizer
    /// </summary>
    public void AddVisualiser(AugmentedImage _imageToAddTo)
    {
        // Create an anchor at centre of image to ensure that transformation is relative to real world
        Anchor anchor = _imageToAddTo.CreateAnchor(_imageToAddTo.CenterPose);
        // Create new visualiser and set as anchor's child ( so to keep the visualiser in that place )
        ARImageVisualiser visualizer = Instantiate(AugmentedImageVisualizerPrefab, anchor.transform) as ARImageVisualiser;

        // Set image of visualiser to be image that is tracked
        visualizer.m_image = _imageToAddTo;
        //m_prevIndex = _imageToAddTo.DatabaseIndex;
        // Add to Dictionary
        m_Visualizers.Add(_imageToAddTo.DatabaseIndex, visualizer);
    }
コード例 #4
0
    private void Start()
    {
        //Get current session from session manager
        m_arSession = ARSessionManager.Instance.GetSession();
        //Initialise lists
        m_trackedImages           = new List <AugmentedImage>();
        m_listOfVisualizedObjects = new List <ARImageVisualiser>();
        //Set screen to never timeout
        Screen.sleepTimeout = SleepTimeout.NeverSleep;

        //Create Object Pool for ARImageVisualiser
        for (int i = 0; i < m_objectPoolStartSize; i++)
        {
            //Create instance of visualizer
            GameObject visualizerObject = Instantiate(m_arVisualizerPrefab);
            visualizerObject.SetActive(false);
            //Get component
            ARImageVisualiser visualizer = visualizerObject.GetComponent <ARImageVisualiser>();

            //Add to object pool
            ObjectPool.Add(visualizer);
        }
    }
コード例 #5
0
 /// <summary>
 /// Get the visualiser of the Image in list
 /// </summary>
 public ARImageVisualiser GetVisualiser(AugmentedImage _imageTracked, ARImageVisualiser _addVisualiser)
 {
     m_Visualizers.TryGetValue(_imageTracked.DatabaseIndex, out _addVisualiser);
     return(_addVisualiser);
 }
コード例 #6
0
 /// <summary>
 /// Remove a Visualiser from an image if it stops updating
 /// </summary>
 public void RemoveVisualiser(AugmentedImage _imageToRemoveFrom, ARImageVisualiser _visualiserToRemove)
 {
     // Remove Visualiser from image and Destroys it
     Destroy(m_Visualizers[_imageToRemoveFrom.DatabaseIndex].gameObject);
     m_Visualizers.Remove(_imageToRemoveFrom.DatabaseIndex);
 }