public void StartHostAnchor() { _arDebugManager.LogInfo($"Start Host Anchor, numOfQueued = {numOfQueued}"); FeatureMapQuality quality = _arAnchorManager.EstimateFeatureMapQualityForHosting(GetCameraPose()); for (i = 0; i < numOfQueued; i++) { anchorToResolveList[i] = null; } for (i = 0; i < numOfQueued; i++) { HostAnchor(i); } numOfToBeResolved = 0; anchorUpdateInProgress = true; }
public void HostAnchor() { debugtext.text = "HostAnchor executing"; FeatureMapQuality quality = anchormanager.EstimateFeatureMapQualityForHosting(GetCameraPose()); cloudanchor = anchormanager.HostCloudAnchor(pendingHostAnchor, 1); if (cloudanchor == null) { debugtext.text = "Unable to host cloud anchor"; } else { anchorHostInProgress = true; } }
public void StartHostAnchor() { _cloudAnchorsMetaManager = GameObject.FindWithTag("CloudAnchorsMetaBolt").GetComponent <CloudAnchorsMetaManagerOld>(); _arDebugManager.LogInfo(_cloudAnchorsMetaManager.confirmimg()); _arDebugManager.LogInfo($"Start Host Anchor, numOfQueued = {numOfQueued}"); quality = _arAnchorManager.EstimateFeatureMapQualityForHosting(GetCameraPose()); for (i = 0; i < numOfQueued; i++) { anchorToResolveList[i] = null; } for (i = 0; i < numOfQueued; i++) { HostAnchor(i); } numOfToBeResolved = 0; anchorUpdateInProgress = true; }
public void HostAnchor() { //ARDebugManager.Instance.LogInfo($"HostAnchor executing"); FeatureMapQuality quality = arAnchorManager.EstimateFeatureMapQualityForHosting(GetCameraPose()); cloudAnchor = arAnchorManager.HostCloudAnchor(pendingHostAnchor, 1); if (cloudAnchor == null) { // ARDebugManager.Instance.LogError("Unable to host cloud anchor"); } else { anchorUpdateInProgress = true; } }
// 클라우드 앵커 등록 void HostProcessing() { // 로컬 앵커가 생성되지 않았을 때 리턴 if (localAnchor == null) { return; } // 피쳐 포인트의 갯수 많을 수록 맵핑 퀄리티가 증가함. /* * Insufficient = 0 // 불충분 * Sufficient = 1 // 충분 * Good = 2 // Good */ FeatureMapQuality quality = anchorManager.EstimateFeatureMapQualityForHosting(GetCameraPose()); string mappingText = string.Format("맵핑 품질 = {0}", quality); // 맵핑 퀄리티가 1이상일 때 호스팅 요청 if (quality == FeatureMapQuality.Sufficient || quality == FeatureMapQuality.Good) { // Google Cloud Anchor API를 사용해 업로드(클라우드 앵커의 생성을 요청) cloudAnchor = anchorManager.HostCloudAnchor(localAnchor, 1); if (cloudAnchor == null) { mappingText = "클라우드 앵커 생성 실패"; } else { mappingText = "클라우드 앵커 생성 시작"; mode = Mode.HOST_PENDING; } } messageText.text = mappingText; }
private void HostingCloudAnchor() { // There is no anchor for hosting. if (_anchor == null) { return; } // There is a pending or finished hosting task. if (_cachedCloudAnchors.Count > 0 || _pendingCloudAnchors.Count > 0) { return; } // Update map quality: int qualityState = 2; // Can pass in ANY valid camera pose to the mapping quality API. // Ideally, the pose should represent users’ expected perspectives. FeatureMapQuality quality = Controller.AnchorManager.EstimateFeatureMapQualityForHosting(GetCameraPose()); DebugText.text = "Current mapping quality: " + quality; qualityState = (int)quality; _qualityIndicator.UpdateQualityState(qualityState); // Hosting instructions: var cameraDist = (_qualityIndicator.transform.position - Controller.MainCamera.transform.position).magnitude; if (cameraDist < _qualityIndicator.Radius * 1.5f) { InstructionText.text = "You are too close, move backward."; return; } else if (cameraDist > 10.0f) { InstructionText.text = "You are too far, come closer."; return; } else if (_qualityIndicator.ReachTopviewAngle) { InstructionText.text = "You are looking from the top view, move around from all sides."; return; } else if (!_qualityIndicator.ReachQualityThreshold) { InstructionText.text = "Save the object here by capturing it from all sides."; return; } // Start hosting: InstructionText.text = "Processing..."; DebugText.text = "Mapping quality has reached sufficient threshold, " + "creating Cloud Anchor."; DebugText.text = string.Format( "FeatureMapQuality has reached {0}, triggering CreateCloudAnchor.", Controller.AnchorManager.EstimateFeatureMapQualityForHosting(GetCameraPose())); // Creating a Cloud Anchor with lifetime = 1 day. // This is configurable up to 365 days when keyless authentication is used. ARCloudAnchor cloudAnchor = Controller.AnchorManager.HostCloudAnchor(_anchor, 1); if (cloudAnchor == null) { Debug.LogFormat("Failed to create a Cloud Anchor."); OnAnchorHostedFinished(false); } else { _pendingCloudAnchors.Add(cloudAnchor); } }