private void UpdateMappingStatus(ARWorldMappingStatus mappingStatus) { // Check the mapping status of the worldmap to be able to save the worldmap when in a good state switch (mappingStatus) { case ARWorldMappingStatus.NotAvailable: this.mappingStateLabel.Text = "Mapping state: Not Available"; this.mappingStateLabel.TextColor = UIColor.Red; this.saveAsKeyPositionButton.Enabled = false; //this.saveButton.Enabled = false; break; case ARWorldMappingStatus.Limited: this.mappingStateLabel.Text = "Mapping state: Limited"; this.mappingStateLabel.TextColor = UIColor.Red; this.saveAsKeyPositionButton.Enabled = false; //this.saveButton.Enabled = false; break; case ARWorldMappingStatus.Extending: this.mappingStateLabel.Text = "Mapping state: Extending"; this.mappingStateLabel.TextColor = UIColor.Red; this.saveAsKeyPositionButton.Enabled = false; //this.saveButton.Enabled = false; break; case ARWorldMappingStatus.Mapped: this.mappingStateLabel.Text = "Mapping state: Mapped"; this.mappingStateLabel.TextColor = UIColor.Green; this.saveAsKeyPositionButton.Enabled = true; //this.saveButton.Enabled = true; break; } }
public static string GetDescription(this ARWorldMappingStatus status) { string result = null; switch (status) { case ARWorldMappingStatus.NotAvailable: result = "Not Available"; break; case ARWorldMappingStatus.Limited: result = "Limited"; break; case ARWorldMappingStatus.Extending: result = "Extending"; break; case ARWorldMappingStatus.Mapped: result = "Mapped"; break; } return(result); }
private void Update() { if (_session != null) { #if UNITY_IOS var sessionSubsystem = (ARKitSessionSubsystem)_session.subsystem; #else XRSessionSubsystem sessionSubsystem = null; #endif if (sessionSubsystem == null) { return; } if (_status != sessionSubsystem.worldMappingStatus) { Debug.Log(string.Format("Mapping Status Changed: {0}", sessionSubsystem.worldMappingStatus)); _status = sessionSubsystem.worldMappingStatus; if (_status == ARWorldMappingStatus.Mapped) { if (waitCreate != null) { waitCreate.Invoke(); waitCreate = null; } else if (waitFound != null) { waitFound.Invoke(); waitFound = null; } } } } }
// checking if the camera is currently in mapped state public bool CanSave(ARWorldMappingStatus status) { if (status == ARWorldMappingStatus.ARWorldMappingStatusMapped || status == ARWorldMappingStatus.ARWorldMappingStatusExtending) { return(true); } return(false); }
void OnEnable() { statusText.text = "Look around with device to map area"; hasStartedMapping = false; mappingDone = false; currentMapStatus = ARWorldMappingStatus.ARWorldMappingStatusNotAvailable; //hook worldmapping status UnityARSessionNativeInterface.ARFrameUpdatedEvent += OnWorldMapStatusChange; }
public UnityARCamera(UnityARMatrix4x4 wt, UnityARMatrix4x4 pm, ARTrackingState ats, ARTrackingStateReason atsr, UnityVideoParams uvp, UnityARLightData lightDat, UnityARMatrix4x4 dt, Vector3[] pointCloud, ARWorldMappingStatus awms) { worldTransform = wt; projectionMatrix = pm; trackingState = ats; trackingReason = atsr; videoParams = uvp; lightData = lightDat; displayTransform = dt; pointCloudData = pointCloud; worldMappingStatus = awms; }
public serializableUnityARCamera(serializableUnityARMatrix4x4 wt, serializableUnityARMatrix4x4 pm, ARTrackingState ats, ARTrackingStateReason atsr, UnityVideoParams uvp, UnityARLightData lightDat, serializableUnityARMatrix4x4 dt, serializablePointCloud spc, ARWorldMappingStatus awms) { worldTransform = wt; projectionMatrix = pm; trackingState = ats; trackingReason = atsr; videoParams = uvp; lightData = lightDat; displayTransform = dt; pointCloud = spc; worldMappingStatus = awms; }
void OnWorldMapStatusChange(UnityARCamera cam) { if (!hasStartedMapping) { hasStartedMapping = true; } if (!mappingDone) { currentMapStatus = cam.worldMappingStatus; if (currentMapStatus != ARWorldMappingStatus.ARWorldMappingStatusMapped && currentMapStatus != ARWorldMappingStatus.ARWorldMappingStatusExtending) { statusText.text = "Look around with device to map area"; } else if (currentMapStatus == ARWorldMappingStatus.ARWorldMappingStatusMapped) { statusText.text = "Area mapped! Saving..."; } } }
void Update() { #if UNITY_IOS var sessionSubsystem = (ARKitSessionSubsystem)m_ARSession.subsystem; if (mappingStatus != sessionSubsystem.worldMappingStatus) { mappingStatus = sessionSubsystem.worldMappingStatus; if (mappingStatus == ARWorldMappingStatus.Mapped) { if (MappingIsSufficient != null) { MappingIsSufficient.Raise(); } } else { if (MappingIsNotSufficient != null) { MappingIsNotSufficient.Raise(); } } } #endif }
public KeyPositionAnchor(UIImage image, OpenTK.NMatrix4 transform, ARWorldMappingStatus mappingStatus) : base("KeyPosition", transform) { this.Image = image; this.MappingStatus = mappingStatus; }
//unhook worldmapping status UnityARSessionNativeInterface.ARFrameUpdatedEvent -= OnWorldMapStatusChange; } void OnWorldMapStatusChange(UnityARCamera cam) { if(!hasStartedMapping) { hasStartedMapping = true; } if(!mappingDone) { currentMapStatus = cam.worldMappingStatus; if(currentMapStatus != ARWorldMappingStatus.ARWorldMappingStatusMapped && currentMapStatus != ARWorldMappingStatus.ARWorldMappingStatusExtending) { statusText.text = "Look around with device to map area"; } else if (currentMapStatus == ARWorldMappingStatus.ARWorldMappingStatusMapped) { statusText.text = "Area Mapped. Saving..."; } } } public IEnumerator MapArea() { //while (world map status != mapped) while (currentMapStatus != ARWorldMappingStatus.ARWorldMappingStatusMapped) { yield return null; } worldMapSaved = false; //unhook world mapping status UnityARSessionNativeInterface.ARFrameUpdatedEvent -= OnWorldMapStatusChange; //save current map async(WorldMapCreated) UnityARSessionNativeInterface.GetARSessionNativeInterface().GetCurrentWorldMapAsync(WorldMapCreated); while (!worldMapSaved) { yield return null; } //statusText.text = ""; } void WorldMapCreated(ARWorldMap worldMap) { mappedWorld = worldMap; worldMapSaved = true;
void OnFrameUpdate(UnityARCamera arCamera) { m_LastReason = arCamera.trackingReason; lastStatus = arCamera.worldMappingStatus; }