private void AddVisualizer(AugmentedImage image)
    {
        var anchor     = image.CreateAnchor(image.CenterPose);
        var visualizer = Instantiate(_augmentedImageVisualizer, anchor.transform);

        _visualizers.Add(image.DatabaseIndex, visualizer);
    }
Exemple #2
0
        private static void IAnchorUpdate(AugmentedImage anchor)
        {
            if (!anchors.Contains(anchor.DatabaseIndex.ToString()))
            {
                IAnchorAdd(anchor);
                return;
            }

            Logger.log(Logger.Type.Info, "IAnchorUpdate");

            if (!tracking)
            {
                Logger.log(Logger.Type.Info, "tracking paused. Ignore.");
                return;
            }

            if (IAnchorUpdated == null)
            {
                Logger.log(Logger.Type.Info, "no delegates for this event.");
                return;
            }

            Logger.log(Logger.Type.Info, "dispatch event.");

            bool    isTracking = anchor.TrackingState == TrackingState.Tracking;
            IAnchor a          = new IAnchor(anchor.DatabaseIndex.ToString(), anchor.CenterPose, isTracking, anchor.Name);

            IAnchorUpdated(a);
        }
    private AugmentedImageVisualizer GetVisualizer(AugmentedImage image)
    {
        AugmentedImageVisualizer visualizer;

        _visualizers.TryGetValue(image.DatabaseIndex, out visualizer);
        return(visualizer);
    }
    private void RemoveVisualizer(AugmentedImage image, AugmentedImageVisualizer visualizer)
    {
        visualizers.Remove(image.DatabaseIndex);
        Destroy(visualizer.gameObject);

        bing.color = Color.red;
    }
Exemple #5
0
        /// <summary>
        /// Factory method for creating and reusing Trackable references from native handles.
        /// </summary>
        /// <param name="nativeHandle">A native handle to a plane that has been acquired.  RELEASE
        /// WILL BE HANDLED BY THIS METHOD.</param>
        /// <returns>A reference to the Trackable. May return <c>null</c> on error or if Trackable
        /// is not handled.</returns>
        public Trackable TrackableFactory(IntPtr nativeHandle)
        {
            if (nativeHandle == IntPtr.Zero)
            {
                return(null);
            }

            Trackable result;

            if (_trackableDict.TryGetValue(nativeHandle, out result))
            {
                // Release aquired handle and return cached result.
                _nativeSession.TrackableApi.Release(nativeHandle);
                return(result);
            }

            // This block needs to construct classes marked Obsolete since those versions are always
            // the most derived type.
#pragma warning disable 618 // Obsolete warning
            ApiTrackableType trackableType = _nativeSession.TrackableApi.GetType(nativeHandle);
            if (trackableType == ApiTrackableType.Plane)
            {
                result = new TrackedPlane(nativeHandle, _nativeSession);
            }
            else if (trackableType == ApiTrackableType.Point)
            {
                result = new TrackedPoint(nativeHandle, _nativeSession);
            }
            else if (trackableType == ApiTrackableType.InstantPlacementPoint)
            {
                result = new InstantPlacementPoint(nativeHandle, _nativeSession);
            }
            else if (trackableType == ApiTrackableType.AugmentedImage)
            {
                result = new AugmentedImage(nativeHandle, _nativeSession);
            }
            else if (trackableType == ApiTrackableType.AugmentedFace)
            {
                result = new AugmentedFace(nativeHandle, _nativeSession);
            }
            else if (ExperimentManager.Instance.IsManagingTrackableType((int)trackableType))
            {
                result =
                    ExperimentManager.Instance.TrackableFactory((int)trackableType, nativeHandle);
            }
            else
            {
                Debug.LogWarning(
                    "TrackableFactory::No constructor for requested trackable type.");
            }
#pragma warning restore 618

            if (result != null)
            {
                _trackableDict.Add(nativeHandle, result);
            }

            return(result);
        }
Exemple #6
0
        private void DisableAugmentedImageObject(AugmentedImage image, AugmentedAnimal visualizer)
        {
            m_Visualizers.Remove(image.DatabaseIndex);

            //visualizer.transform.parent.Find("Selection Visualization").GetComponent<MeshRenderer>().enabled = false;
            //Destroy(visualizer.gameObject);
            Destroy(visualizer.anchor.gameObject);
        }
Exemple #7
0
        public void setAugmentedImage(AugmentedImage image, AugmentedImageVisualizer visualizer, AugmentedImageVisualizer prefab)
        {
            Anchor anchor = image.CreateAnchor(image.CenterPose);

            visualizer       = (AugmentedImageVisualizer)Instantiate(prefab, anchor.transform);
            visualizer.Image = image;
            m_Visualizers.Add(image.DatabaseIndex, visualizer);
        }
    private void AddVisualizer(AugmentedImage image)
    {
        _ShowAndroidToastMessage("Adding visualizer");
        var anchor     = image.CreateAnchor(image.CenterPose);
        var visualizer = Instantiate(augmentedImageVisualizer, anchor.transform);

        visualizer.image = image;
        visualizers.Add(image.DatabaseIndex, visualizer);
    }
 private void ReinstantiateRoute(AugmentedImage AI)
 {
     _ShowAndroidToastMessage("Detected picture, showing route!");
     //Make sure image is tracking first
     if (AI.TrackingState == TrackingState.Tracking)
     {
         existingAnchor = m_AllPlanes[0].CreateAnchor(AI.CenterPose);
         Instantiate(ToSpawnPrefabs[AI.DatabaseIndex], AI.CenterPose.position, AI.CenterPose.rotation, existingAnchor.transform);
         currTrackingIdx = AI.DatabaseIndex;
     }
 }
 public void UserResponse(bool yo)
 {
     if (yo)
     {
         Destroy(existingAnchor.gameObject);
         ReinstantiateRoute(nextAI);
         nextAI = null;
     }
     // TODO: Close Pop up
     UserResponded = true;
 }
    private AugmentedImageVisualizer AddVisualizer(AugmentedImage image, AugmentedImageVisualizer visualizer)
    {
        Anchor anchor = image.CreateAnchor(image.CenterPose);

        visualizer       = (AugmentedImageVisualizer)Instantiate(augmentedImageVisualizerPrefab, anchor.transform);
        visualizer.Image = image;
        _visualizers.Add(image.DatabaseIndex, visualizer);

        //ARCore will keep understanding the world and update the anchors accordingly hence we need to attach our portal to the anchor
        visualizer.transform.parent = anchor.transform;
        return(visualizer);
    }
        private void _TrackingMarker(AugmentedImage image)
        {
            AnchorPosition pos = _PosForName(image.Name);
            Anchor         anchor;

            if (!anchors.TryGetValue(pos, out anchor))
            {
                anchor = image.CreateAnchor(image.CenterPose);
                anchors.Add(pos, anchor);
                _AdaptModel(pos, anchor);
            }
        }
Exemple #13
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);
    }
Exemple #14
0
    /// <summary>
    /// Creates a single ARImageVisualiser and adds it to a reference list.
    /// </summary>
    void CreateVisualizerObjects_OLD(AugmentedImage _imageToVisualize)
    {
        ////Create an anchor at centre of image to ensure that transformation is relative to real world
        //Anchor anchor = _imageToVisualize.CreateAnchor(_imageToVisualize.CenterPose);
        ////Create new visualiser and set as anchor's child ( so to keep the visualiser in that place )
        //ARImageVisualiser visualizer = Instantiate(m_arVisualizerPrefab, anchor.transform) as ARImageVisualiser;
        //visualizer.gameObject.SetActive(true);
        ////Set image of visualiser to be a copy of the image that is tracked
        //visualizer.m_image = _imageToVisualize;

        ////Add visualizer to list
        //m_listOfVisualizedObjects.Add(visualizer);
    }
 private void _StoppedMarker(AugmentedImage image)
 {
     if (model != null)
     {
         AnchorPosition pos = _PosForName(image.Name);
         Anchor         anchor;
         if (anchors.TryGetValue(pos, out anchor))
         {
             anchors.Remove(pos);
             if (anchors.Count == 0)
             {
                 GameObject.Destroy(model);
             }
         }
     }
 }
Exemple #16
0
    public void OnMarkerDiscovered(AugmentedImage image)
    {
        Debug.Log("OnMarkerDiscovered. image = " + image.Name);
        if (currentVideoData != null)
        {
            return;
        }

        Anchor     anchor     = image.CreateAnchor(image.CenterPose);
        MarkerData markerData = new MarkerData()
        {
            name = image.Name, imageIndex = image.DatabaseIndex, anchorTransform = anchor.transform
        };

        OnMarkerDiscovered(markerData);
    }
        private void _UpdateFromMarker(AugmentedImage image)
        {
            switch (image.TrackingState)
            {
            case TrackingState.Tracking:
                _TrackingMarker(image);
                break;

            case TrackingState.Stopped:
                _StoppedMarker(image);
                break;

            default:
                break;
            }
        }
 private void switchDemos(AugmentedImage image)
 {
     if (Demo2 && image.Name.Equals("demo1"))
     {
         //remove the object
         _visualizers.Remove(image.DatabaseIndex);
         GameObject.Destroy(visualizer.gameObject);
         //interupt a quiz mode
         QuizMode = false;
     }
     else if (!Demo2 && image.Name.Equals("demo2"))
     {
         manipulator.disableObjects();
         //interrupt a game mode
         manipulator.GameMode = false;
     }
 }
    private void AddVisluazier(AugmentedImage image)
    {
        // anchor is world position of our AR image so it can stay put in real world space when moving about
        var anchor = image.CreateAnchor(image.CenterPose);

        // create our visualized object
        var visualizer = Instantiate(augmentedImageVisualizer, anchor.transform);

        // set the image of the visualizer to the image we have tracked
        visualizer.Image = image;
        // add our visualizer to our list of visualizers
        visualizers.Add(image.DatabaseIndex, visualizer);



        bing.color = Color.green;
    }
Exemple #20
0
 public static void setIMG(AugmentedImage Image)
 {
     if (Image.Name.Equals("Dondurma"))
     {
         textmesh.text = "Dondurma";
     }
     else if (Image.Name.Equals("Cay"))
     {
         textmesh.text = "Çay";
     }
     else if (Image.Name.Equals("Corba"))
     {
         textmesh.text = "Çorba";
     }
     else if (Image.Name.Equals("Peynir"))
     {
         textmesh.text = "Süzme Peynir";
     }
 }
 public static void setIMG(AugmentedImage Image)
 {
     if (Image.Name.Equals("Dondurma"))
     {
         textmesh.text = "-TETT: 14.04.2022";
     }
     else if (Image.Name.Equals("Cay"))
     {
         textmesh.text = "-TETT: 03.05.2021";
     }
     else if (Image.Name.Equals("Corba"))
     {
         textmesh.text = "-TETT: 03.05.2021";
     }
     else if (Image.Name.Equals("Peynir"))
     {
         textmesh.text = "-TETT: 01.06.2020";
     }
 }
 public static void setIMG(AugmentedImage Image)
 {
     if (Image.Name.Equals("Dondurma"))
     {
         textmesh.text = "4.99 TL";
     }
     else if (Image.Name.Equals("Cay"))
     {
         textmesh.text = "3.49 TL";
     }
     else if (Image.Name.Equals("Corba"))
     {
         textmesh.text = "2.99 TL";
     }
     else if (Image.Name.Equals("Peynir"))
     {
         textmesh.text = "11.25 TL";
     }
 }
 public static void setIMG(AugmentedImage Image)
 {
     if (Image.Name.Equals("Dondurma"))
     {
         textmesh.text = "-Carte d'Or Yoğun Çikolatalı";
     }
     else if (Image.Name.Equals("Cay"))
     {
         textmesh.text = "-Doğuş Karadeniz Çayı";
     }
     else if (Image.Name.Equals("Corba"))
     {
         textmesh.text = "-Knorr Ezogelin Çorbası";
     }
     else if (Image.Name.Equals("Peynir"))
     {
         textmesh.text = "-Pınar Süzme Peynir";
     }
 }
 public static void setIMG(AugmentedImage Image)
 {
     if (Image.Name.Equals("Dondurma"))
     {
         textmesh.text = "-Fransa";
     }
     else if (Image.Name.Equals("Cay"))
     {
         textmesh.text = "-Türkiye";
     }
     else if (Image.Name.Equals("Corba"))
     {
         textmesh.text = "-Almanya";
     }
     else if (Image.Name.Equals("Peynir"))
     {
         textmesh.text = "-Türkiye";
     }
 }
Exemple #25
0
        private void SetMainWindow(AugmentedImage image)
        {
            var pose = image.CenterPose;

            var model = CollectionManager.Instance.activeProduct.gameObject;

            model.AddComponent <MarkerVisualizer>();

            m_Visualizer       = (MarkerVisualizer)Instantiate(model.GetComponent <MarkerVisualizer>(), pose.position, pose.rotation);
            m_Visualizer.Image = image;

            var manipulator = Instantiate(manipulatorMarkerWindow, pose.position, pose.rotation);

            m_Visualizer.transform.parent = manipulator.transform;

            var anchor = image.CreateAnchor(pose);

            manipulator.transform.parent = anchor.transform;
            manipulator.GetComponent <Manipulator>().Select();
        }
Exemple #26
0
        public void Inititialize(AugmentedImage augmentedImage_, MatchingImage matchingImage_)
        {
            this.augmentedImage_ = augmentedImage_;
            this.matchingImage_  = matchingImage_;

            IsInitialized_ = true;

            mesh_ = new Mesh();

            ComputeVertices();
            ComputeTriangles();
            ComputeNormals();
            ComputeUVs();
            mesh_.RecalculateTangents();
            mesh_.MarkDynamic();

            GetComponent <MeshFilter>().mesh       = mesh_;
            GetComponent <MeshRenderer>().material = matchingImage_.material_;

            GetComponent <MeshCollider>().sharedMesh = mesh_;
        }
        /// <summary>
        /// Function called when the manipulation is ended.
        /// </summary>
        /// <param name="gesture">The current gesture.</param>
        protected override void OnEndManipulation(TapGesture gesture)
        {
            if (gesture.WasCancelled)
            {
                return;
            }
            // If gesture is targeting an existing object we are done.
            if (gesture.TargetObject != null)
            {
                return;
            }

            if (clickCount < 1)
            {
                clickCount = clickCount + 1;
                //find an image to place an anchor
                int index = controller._tempAugmentedImages.FindIndex(x => x.Name == "demo2");
                image = controller._tempAugmentedImages[index];
                pose  = image.CenterPose;
                //instatntiate game objects
                gameObject0 = Instantiate(PawnPrefab[0], new Vector3(pose.position.x - 0.055f, pose.position.y, pose.position.z - 0.03f), new Quaternion(-0.707f, 0f, 0f, 0.707f));
                gameObject1 = Instantiate(PawnPrefab[1], new Vector3(pose.position.x, pose.position.y, pose.position.z - 0.03f), new Quaternion(0f, 1f, 0f, 0f));
                // Instantiate manipulators
                manipulator0 = Instantiate(ManipulatorPrefab, new Vector3(pose.position.x - 0.055f, pose.position.y, pose.position.z - 0.03f), pose.rotation);
                manipulator1 = Instantiate(ManipulatorPrefab, new Vector3(pose.position.x, pose.position.y, pose.position.z - 0.03f), pose.rotation);
                // Make game object a child of the manipulator.
                gameObject0.transform.parent = manipulator0.transform;
                gameObject1.transform.parent = manipulator1.transform;
                // Create an anchor to allow ARCore to track the image
                anchor0 = image.CreateAnchor(new Pose(new Vector3(pose.position.x - 0.055f, pose.position.y, pose.position.z - 0.03f), pose.rotation));
                anchor1 = image.CreateAnchor(new Pose(new Vector3(pose.position.x, pose.position.y, pose.position.z - 0.03f), pose.rotation));
                // Make manipulator a child of the anchor.
                manipulator0.transform.parent = anchor0.transform;
                manipulator1.transform.parent = anchor1.transform;
                // Select the placed object.
                manipulator0.GetComponent <Manipulator>().Select();
                manipulator1.GetComponent <Manipulator>().Select();
            }
        }
    // Update is called once per frame
    void Update()
    {
        // Check that motion tracking is tracking.
        if (Session.Status != SessionStatus.Tracking)
        {
            image = null;
            return;
        }

        if (image == null)
        {
            Session.GetTrackables(augmentedImagesSeen, TrackableQueryFilter.Updated);
            foreach (AugmentedImage thisImage in augmentedImagesSeen)
            {
                if (thisImage.DatabaseIndex == targetImage)
                {
                    image = thisImage;
                    scanReminderUI.SetActive(false);
                }
            }
        }

        if (image.TrackingState == TrackingState.Stopped)
        {
            image = null;
            Destroy(prefabInstance);
            scanReminderUI.SetActive(true);
            prefabInstance = null;
        }
        else
        {
            if (prefabInstance == null)
            {
                prefabInstance = Instantiate(prefabToPlace);
            }
            prefabInstance.transform.position = image.CenterPose.position;
            prefabInstance.transform.rotation = image.CenterPose.rotation;
        }
    }
    // Update is called once per frame
    void Update()
    {
        cameraPositionText.text  = "Camera Position : " + Camera.main.transform.position.ToString() + "\n";
        cameraPositionText.text += "Camera Rotation : " + Camera.main.transform.eulerAngles.ToString();

        bsenPositionText.text  = "B-sen Position : " + whichObject.transform.localPosition.ToString() + "\n";
        bsenPositionText.text += "B-sen Rotation : " + whichObject.transform.eulerAngles.ToString();

        Session.GetTrackables <AugmentedImage>(m_AugmentedImages, TrackableQueryFilter.Updated);

        if (!detected_marker)
        {
            foreach (var image in m_AugmentedImages)
            {
                if (image.TrackingState == TrackingState.Tracking)
                {
                    detected_marker = true;
                    marker          = image;
                }
            }
        }
    }
Exemple #30
0
    void Update()
    {
        if (Session.Status != SessionStatus.Tracking)
        {
            return;
        }

        Session.GetTrackables <AugmentedImage>(_tempAugmentedImages, TrackableQueryFilter.Updated);

        foreach (AugmentedImage image in _tempAugmentedImages)
        {
            if (image.TrackingState == TrackingState.Tracking && currentAugmentedImage == null)
            {
                Anchor anchor = image.CreateAnchor(image.CenterPose);

                currentWorldObject = Instantiate(worldPrefab, anchor.transform);

                currentWorldObject.transform.localEulerAngles = new Vector3(90, 0, 0);
                currentAugmentedImage = image;
            }
            else if (image.TrackingState == TrackingState.Stopped && currentAugmentedImage != null)
            {
                currentAugmentedImage = null;
                Destroy(currentWorldObject);
            }
        }

        if (currentAugmentedImage == null && !fitToScanOverlay.activeSelf)
        {
            fitToScanOverlay.SetActive(true);
        }

        if (currentAugmentedImage != null && fitToScanOverlay.activeSelf)
        {
            fitToScanOverlay.SetActive(false);
        }
    }