gpt4 book ai didi

c# - 重置统一 AR session 以在 iOS 上查找可跟踪的平面

转载 作者:太空宇宙 更新时间:2023-11-03 14:40:03 24 4
gpt4 key购买 nike

当 iOS 设备检测到时,可跟踪平面会变成无限大。因此,始终会检测到相机镜头下方的最上面的平面。除了通过顶部平面降低相机之外,没有办法回到较低的平面。如何在 View 中重置平面?

将 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);
}
}
}

检测到地板并创建一个无限平面,然后检测到桌面并在这个更大的高度检测到一个无限平面。这意味着地板将不再被记录,因为上平面总是挡住相机对下平面的视线。回到下平面的唯一方法是将相机物理移动到上平面下方,这样相机 View 中就没有平面了。

最佳答案

改变

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

关于c# - 重置统一 AR session 以在 iOS 上查找可跟踪的平面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57498983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com