Пример #1
0
 private void SetRegionAttachment(ARCoreFaceRegion region, GameObject prefab)
 {
     foreach (ARFace face in faceManager.trackables)
     {
         FaceRegionAttachments regionAttachments = face.GetComponent <FaceRegionAttachments>();
         if (regionAttachments != null)
         {
             regionAttachments.SetRegionAttachment(region, prefab);
         }
     }
 }
Пример #2
0
    void Update()
    {
        if (isFox)
        {
            ARCoreFaceSubsystem subsystem = (ARCoreFaceSubsystem)arFaceManager.subsystem;
            if (arFaceManager.trackables.count == 0)
            {
                Destroy(noseObject);
                Destroy(leftHeadObject);
                Destroy(rightHeadObject);
            }
            foreach (ARFace face in arFaceManager.trackables)
            {
                subsystem.GetRegionPoses(face.trackableId, Unity.Collections.Allocator.Persistent, ref faceRegions);
                foreach (ARCoreFaceRegionData faceRegion in faceRegions)
                {
                    ARCoreFaceRegion regionType = faceRegion.region;
                    if (regionType == ARCoreFaceRegion.NoseTip)
                    {
                        if (!noseObject)
                        {
                            noseObject = Instantiate(nosePrefab, sessionOrigin.trackablesParent);
                        }

                        noseObject.transform.localPosition = faceRegion.pose.position;
                        noseObject.transform.localRotation = faceRegion.pose.rotation;
                    }
                    else if (regionType == ARCoreFaceRegion.ForeheadLeft)
                    {
                        if (!leftHeadObject)
                        {
                            leftHeadObject = Instantiate(leftHeadPrefab, sessionOrigin.trackablesParent);
                        }

                        leftHeadObject.transform.localPosition = faceRegion.pose.position;
                        leftHeadObject.transform.localRotation = faceRegion.pose.rotation;
                    }
                    else if (regionType == ARCoreFaceRegion.ForeheadRight)
                    {
                        if (!rightHeadObject)
                        {
                            rightHeadObject = Instantiate(rightHeadPrefab, sessionOrigin.trackablesParent);
                        }

                        rightHeadObject.transform.localPosition = faceRegion.pose.position;
                        rightHeadObject.transform.localRotation = faceRegion.pose.rotation;
                    }
                }
            }
        }
    }
Пример #3
0
    public void SetRegionAttachment(ARCoreFaceRegion region, GameObject prefab)
    {
        GameObject obj;

        if (objs.TryGetValue(region, out obj))
        {
            GameObject currentPrefab = prefabs[region];
            Destroy(obj);
            prefabs.Remove(region);
            objs.Remove(region);
            if (prefab == currentPrefab)
            {
                return;
            }
        }

        obj = Instantiate(prefab);
        prefabs.Add(region, prefab);
        objs.Add(region, obj);
    }
Пример #4
0
 public FaceRegionWithARCorePose(ARCoreFaceRegion regionType, ARCorePose pose)
 {
     this.regionType = regionType;
     this.pose       = pose;
 }
Пример #5
0
 /// <summary>
 /// Constructs an <see cref="ARCoreFaceRegionData"/>.
 /// </summary>
 /// <param name="region">The region this data describes.</param>
 /// <param name="pose">The pose associated with the given <paramref name="region"/>.</param>
 public ARCoreFaceRegionData(ARCoreFaceRegion region, Pose pose)
 {
     m_Region = region;
     m_Pose   = pose;
 }