AR-地面识别01

识别地面

1.首先安装ARFoundation包

包管理器,选择UnityRegistry-找到ARfoundation,下载导入!

2.然后设置XR

选择你未来发布到的使用设备平台,勾选对应底层插件!

3.创建老祖宗ARsession

右键创建XR-选择ARsession(每个工程都需要有它,他就像总管理,负责通信于不同设备底层AR框架,以及AR生命周期、管理调用底层设备的不同追踪功能)

4.创建XR Origin(ARSession Origin)

虚拟物体坐标转换为现实世界的坐标!也是UnityAR摄像机所被管理的地方!原摄相机可删除

5.添加平面识别组件并拖入地面识别预制体

AR Plan Manage并且添加地面识别预制体AR Default Plan将它拖入地面识别组件即可识别地面

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的脚本示例,可用于Unity中Hololens 2的默认相机: ```csharp using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.XR.WSA.Input; using UnityEngine.XR.ARSubsystems; using UnityEngine.XR.ARFoundation; public class ARPlacementController : MonoBehaviour { public ARRaycastManager arRaycastManager; public GameObject arObject; public float arObjectScale = 20f; private List<ARRaycastHit> arRaycastHits = new List<ARRaycastHit>(); private bool isPlaced = false; // Start is called before the first frame update void Start() { // Enable the default interaction manager. InteractionManager interactionManager = InteractionManager.GetCurrent(null); if (interactionManager != null) { interactionManager.StartedPrimary += OnInteractionStarted; } } // Update is called once per frame void Update() { if (!isPlaced) { Vector3 cameraPosition = Camera.main.transform.position; Vector3 cameraDirection = Camera.main.transform.forward; if (arRaycastManager.Raycast(cameraPosition, cameraDirection, arRaycastHits, TrackableType.Planes)) { Pose placementPose = arRaycastHits[0].pose; // Place the AR object at the detected plane and scale to real-world size. arObject.transform.position = placementPose.position; arObject.transform.rotation = placementPose.rotation; arObject.transform.localScale = Vector3.one * arObjectScale; // Lock the AR object in place. arObject.GetComponent<Rigidbody>().isKinematic = true; isPlaced = true; } } } private void OnInteractionStarted(InteractionSourceKind sourceKind) { if (isPlaced) { // Allow the AR object to be moved and rotated once it has been placed. arObject.GetComponent<Rigidbody>().isKinematic = false; } } } ``` 在这个脚本中,我们使用了AR Foundation和AR Subsystems来进行AR跟踪。首先,我们在Start()函数中启用默认的Interaction Manager,以便我们可以检测到手势输入。在Update()函数中,我们使用AR Raycast Manager来检测相机视角下的平面,并将AR场景对象放置在检测到的平面上。在放置AR场景对象后,我们锁定它的位置并将其缩放至真实的20米。一旦AR场景对象被放置并锁定,我们允许它被移动和旋转,这样人们就可以在AR场景周围自由移动了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值