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); } } }
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; } } } } }
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); }
public FaceRegionWithARCorePose(ARCoreFaceRegion regionType, ARCorePose pose) { this.regionType = regionType; this.pose = pose; }
/// <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; }