void UpdateObjectAnchor(ARObjectAnchor arObjectAnchor)
 {
     if (arObjectAnchor.referenceObjectName == referenceObjectAsset.objectName)
     {
         Debug.Log("***UpdateObjectAnchor");
     }
 }
 void RemoveObjectAnchor(ARObjectAnchor arObjectAnchor)
 {
     Debug.Log("object anchor removed");
     if ((arObjectAnchor.referenceObjectName == referenceObjectAsset.objectName) && (objectAnchorGO != null))
     {
         GameObject.Destroy(objectAnchorGO);
     }
 }
 void UpdateObjectAnchor(ARObjectAnchor arObjectAnchor)
 {
     Debug.Log("object anchor updated");
     if (arObjectAnchor.referenceObjectName == referenceObjectAsset.objectName)
     {
         objectAnchorGO.transform.position = UnityARMatrixOps.GetPosition(arObjectAnchor.transform);
         objectAnchorGO.transform.rotation = UnityARMatrixOps.GetRotation(arObjectAnchor.transform);
     }
 }
 void RemoveObjectAnchor(ARObjectAnchor arObjectAnchor)
 {
     Debug.Log("object anchor removed");
     mText.text = "object anchor removed: " + referenceObjectAsset.name + "  tracked: " + referenceObjectAsset.objectName;
     if ((arObjectAnchor.referenceObjectName == referenceObjectAsset.objectName) && (objectAnchorGO != null))
     {
         GameObject.Destroy(objectAnchorGO);
     }
 }
 void AddObjectAnchor(ARObjectAnchor arObjectAnchor)
 {
     if (arObjectAnchor.referenceObjectName == referenceObjectAsset.objectName)
     {
         Debug.Log("***AddObjectAnchor");
         Instantiate(AxesPrefab, UnityARMatrixOps.GetPosition(arObjectAnchor.transform), UnityARMatrixOps.GetRotation(arObjectAnchor.transform));
         FindObjectOfType <mqttTest>().Connect();
     }
 }
 void ObjectAnchorRemoved(ARObjectAnchor anchorData)
 {
     Debug.Log("ObjectAnchorRemoved");
     if (objectAnchorMap.ContainsKey(anchorData.referenceObjectName))
     {
         GameObject rpgo = objectAnchorMap [anchorData.referenceObjectName];
         GameObject.Destroy(rpgo.gameObject);
         objectAnchorMap.Remove(anchorData.identifier);
     }
 }
 void RemoveObjectAnchor(ARObjectAnchor arObjectAnchor)
 {
     Debug.Log("object anchor removed");
     if ((objectMeans.Any(o => o.referenceObjectAsset.objectName.Equals(arObjectAnchor.referenceObjectName))) &&
         objectAnchorGO.ContainsKey(arObjectAnchor.referenceObjectName))
     {
         GameObject.Destroy(objectAnchorGO[arObjectAnchor.referenceObjectName]);
         objectAnchorGO.Remove(arObjectAnchor.referenceObjectName);
     }
 }
    void AddObjectAnchor(ARObjectAnchor arObjectAnchor)
    {
        Debug.Log("object anchor added");
        if (arObjectAnchor.referenceObjectName == referenceObjectAsset.objectName)
        {
            Vector3    position = UnityARMatrixOps.GetPosition(arObjectAnchor.transform);
            Quaternion rotation = UnityARMatrixOps.GetRotation(arObjectAnchor.transform);

            objectAnchorGO = Instantiate <GameObject> (prefabToGenerate, position, rotation);
        }
    }
 void ObjectAnchorUpdated(ARObjectAnchor anchorData)
 {
     Debug.Log("ObjectAnchorUpdated");
     if (objectAnchorMap.ContainsKey(anchorData.referenceObjectName))
     {
         GameObject go = objectAnchorMap [anchorData.referenceObjectName];
         //do coordinate conversion from ARKit to Unity
         go.transform.position = UnityARMatrixOps.GetPosition(anchorData.transform);
         go.transform.rotation = UnityARMatrixOps.GetRotation(anchorData.transform);
     }
 }
 void UpdateObjectAnchor(ARObjectAnchor arObjectAnchor)
 {
     Debug.Log("object anchor updated");
     if (objectMeans.Any(o => o.referenceObjectAsset.objectName.Equals(arObjectAnchor.referenceObjectName)) &&
         objectAnchorGO.ContainsKey(arObjectAnchor.referenceObjectName))
     {
         Vector3 position = UnityARMatrixOps.GetPosition(arObjectAnchor.transform);
         objectAnchorGO[arObjectAnchor.referenceObjectName].transform.position = position;
         objectAnchorGO[arObjectAnchor.referenceObjectName].transform.rotation = UnityARMatrixOps.GetRotation(arObjectAnchor.transform);
     }
 }
Beispiel #11
0
    void AddObjectAnchor(ARObjectAnchor arObjectAnchor)
    {
        Debug.Log("object anchor added");
        if (arObjectAnchor.referenceObjectName == referenceObjectAsset.objectName)
        {
            position = UnityARMatrixOps.GetPosition(arObjectAnchor.transform);
            rotation = Quaternion.AngleAxis(180f, new Vector3(0.0f, 1.0f, 0.0f))
                       * UnityARMatrixOps.GetRotation(arObjectAnchor.transform);

            objectAnchorGO = Instantiate <GameObject> (prefabToGenerate, position, rotation);
            isDetected     = true;
        }
    }
        private void OnFoundThing(SCNNode node, ARObjectAnchor anchor)
        {
            adding = true;
            var size = anchor.ReferenceObject.Extent;
            var name = ReplacementNameFor(anchor.Name.Split('-')[0]);

            if (_alreadySeen.Contains(name))
            {
                return;
            }

            _alreadySeen.Add(name);

            if (!_contentFor.TryGetValue(name, out var content))
            {
                SoundManager.PlaySound("spooky");
                adding = false;
                return;
            }

            NodeLookup[node] = node;

            var panel = Panels[content.Logo];

            panel.Position = new SCNVector3(0, content.Offset, -.05f);
            node.AddChildNode(panel);

            var refSize    = anchor.ReferenceObject.Extent;
            var invisiNode = new SCNNode
            {
                Geometry = new SCNBox {
                    Height = refSize.Y, Width = refSize.X, Length = refSize.Z
                },
                Position = new SCNVector3(0, .05f, 0)
            };

            invisiNode.Geometry.FirstMaterial.Diffuse.Contents = UIColor.FromWhiteAlpha(1.0f, 0.05f);

            node.AddChildNode(invisiNode);
            NodeLookup[invisiNode] = node;
            node.Name = name;

            foreach (var sound in _contentFor.Values.Select(x => x.BGM))
            {
                SoundManager.PauseSound(sound);
            }

            SoundManager.PlaySound(content.BGM, false);
            adding = false;
        }
Beispiel #13
0
    void UpdateObjectAnchor(ARObjectAnchor arObjectAnchor)
    {
        Debug.Log("object anchor added");
        if (arObjectAnchor.referenceObjectName == referenceObjectAsset.objectName)
        {
            position = UnityARMatrixOps.GetPosition(arObjectAnchor.transform);
            rotation = Quaternion.AngleAxis(180f, new Vector3(0.0f, 1.0f, 0.0f))
                       * UnityARMatrixOps.GetRotation(arObjectAnchor.transform);

            objectAnchorGO.transform.position = position;
            objectAnchorGO.transform.rotation = rotation;
            isDetected = true;
        }
    }
    void AddObjectAnchor(ARObjectAnchor arObjectAnchor)
    {
        var objectMean = objectMeans.FirstOrDefault(o => o.referenceObjectAsset.objectName.Equals(arObjectAnchor.referenceObjectName));

        if (objectMean != null &&
            false == objectAnchorGO.ContainsKey(arObjectAnchor.referenceObjectName))
        {
            Debug.Log($"object anchor added {arObjectAnchor.referenceObjectName}");
            Vector3    position = UnityARMatrixOps.GetPosition(arObjectAnchor.transform);
            Quaternion rotation = UnityARMatrixOps.GetRotation(arObjectAnchor.transform);

            objectAnchorGO[arObjectAnchor.referenceObjectName] = Instantiate <GameObject>(prefabToGenerate, position, rotation);
            objectAnchorGO[arObjectAnchor.referenceObjectName].GetComponentInChildren <TMP_Text>().text = objectMean.meaning;
        }
    }
    void ObjectAnchorAdded(ARObjectAnchor anchorData)
    {
        Debug.Log("ObjectAnchorAdded");
        GameObject go = GameObject.Instantiate <GameObject> (m_ObjectPrefab);

        if (go != null)
        {
            //do coordinate conversion from ARKit to Unity
            go.transform.position = UnityARMatrixOps.GetPosition(anchorData.transform);
            go.transform.rotation = UnityARMatrixOps.GetRotation(anchorData.transform);

            objectAnchorMap [anchorData.referenceObjectName] = go;
            go.name = anchorData.referenceObjectName;
            ObjectText objText = go.GetComponent <ObjectText> ();
            if (objText)
            {
                objText.UpdateTextMesh(anchorData.referenceObjectName);
            }
        }
    }
Beispiel #16
0
        internal void SuccessfulDetection(ARObjectAnchor objectAnchor)
        {
            // Compute the time it took to detect this object & the average
            lastDetectionDelayInSeconds = (DateTime.Now - lastDetectionStartTime).TotalSeconds;
            ++detections;
            averageDetectionDelayInSeconds = (averageDetectionDelayInSeconds * (1.0 * detections - 1) + lastDetectionDelayInSeconds) / (1.0 * detections);

            // Update the detected object's display duration
            DetectedObject.DisplayDuration = ResultDisplayDuration;

            // Immediately remove the anchor from the session again to force a re-detection.
            lastDetectionStartTime = DateTime.Now;
            sceneView.Session.RemoveAnchor(objectAnchor);

            if (sceneView.Session.CurrentFrame?.RawFeaturePoints != null)
            {
                var currentPointCloud = sceneView.Session.CurrentFrame?.RawFeaturePoints;
                DetectedObject?.UpdateVisualization(objectAnchor.Transform, currentPointCloud);
            }

            StartNoDetectionTimer();
        }