簡體   English   中英

重置統一 AR 會話以在 iOS 上查找可跟蹤平面

[英]Reset unity AR session to find trackable planes on iOS

當被 iOS 設備檢測到時,可追蹤平面將變為無限。 因此,將始終檢測到相機鏡頭下方的最上面的平面。 除了通過頂平面降低相機外,沒有辦法回到低平面。 如何在視圖中重置平面?

使用 Unity 2018.3 和 AR Foundation 1.5.0-preview 6

 private void UpdatePlacementPose()
    {
        var screenCenter = Camera.current.ViewportToScreenPoint(new Vector3(0.5f, 0.5f));
        var hits = new List<ARRaycastHit>();
        arRaycast.Raycast(screenCenter, hits, UnityEngine.XR.ARSubsystems.TrackableType.Planes);

        placementPoseIsValid = hits.Count > 0;
        if (placementPoseIsValid)
        {
            placementPose = hits[0].pose;

            var cameraForward = Camera.current.transform.forward;
            var cameraBearing = new Vector3(cameraForward.x, 0, cameraForward.z).normalized;
            placementPose.rotation = Quaternion.LookRotation(cameraBearing);
        }
    }
}

檢測到地板並創建無限平面,但隨后檢測到桌面並在此更大的高度處檢測到無限平面。 這意味着地板將不再被記錄,因為上平面總是擋住攝像機到下平面的視線。 回到下平面的唯一方法是將相機物理移動到上平面下方,這樣就沒有平面妨礙相機視圖。

改變

UnityEngine.XR.ARSubsystems.TrackableType.Planes

UnityEngine.XR.ARSubsystems.TrackableType.PlaneWithinPolygon

令人困惑的是,Planes 枚舉值包括 4 種不同類型的平面,包括 PlaneWithinInfinity,會導致您不想要的效果。

PlaneWithinPolygon 將導致 AR Raycast 僅檢測檢測到的平面邊界內的命中。

來源: https : //docs.unity3d.com/Packages/com.unity.xr.arsubsystems@2.1/api/UnityEngine.XR.ARSubsystems.TrackableType.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM