当前位置: 首页>数据库>正文

Arkit数据如何换算为Unity数据 unity做ar

Unity使用AR简单例子总结

1.在Unity中选择3D模版创建一个场景。
2.移除场景中的main camera。
3.在Unity工具栏window–package manger里面找到AR foundation和AR subsystems并安装,如果你身边没有mac,那么建议使用android,接着再把ARcore XR Plugin也安装上。
4.回到场景中,注意看左下角有一个project哪里放着你的资源文件,为了目录层级的有序,建议在Assets目录下新建Prefabs和Script两个目录,前者用来存放预制件,后者存放脚本代码。
5.右键选择XR对象里面的AR session(一定不要忘记添加!!!)和AR session origin
6.右键选择XR对象添加AR default plane,然后将其拖入Prefabs中作为一个预制件,接着删除它,放心删
7.选中AR session origin 在右边的inspector面板最下面的add component按钮,点击它,在弹出的选择框中输入““ARP”找到它的全称AR Plane Manager,添加它,并把AR default plane拖入AR Plane Manager
8.整一个小方块,右键3D object选择cube(看心情选就好了只是一个简单例子),并把它的scale缩放比例都设置为0.1,如果需要改变颜色使其更醒目,可以在project下assets上面右键create找打material新建一个,颜色随便选,创建完成之后,将其拖入cube即可,然后把cube也拖入Prefabs,并删除
9.在Scripts中创建一个c#脚本,名字默认AppController,在里面写入代码如下

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;
 
[RequireComponent(typeof(ARRaycastManager))]
public class AppController : MonoBehaviour
{
    public  GameObject spawnPrefab;
    static List<ARRaycastHit> Hits;
    private ARRaycastManager mRaycastManager;
    private GameObject spawnedObject = null;

    private void Start()
    {
       Hits = new List<ARRaycastHit>();
       mRaycastManager = GetComponent<ARRaycastManager>();
    }
 
    void Update()
    {
        if (Input.touchCount == 0)
            return;
        var touch = Input.GetTouch(0);
        if (mRaycastManager.Raycast(touch.position, Hits, TrackableType.PlaneWithinPolygon | TrackableType.PlaneWithinBounds)) {
                var hitPose = Hits[0].pose;
                if (spawnedObject == null)
                {
                    spawnedObject = Instantiate(spawnPrefab, hitPose.position, hitPose.rotation);
                }
                else
                {
                    spawnedObject.transform.position = hitPose.position;
                }
        }
    }
}

在上述代码中,首先我们使用[RequireComponent(typeof(ARRaycastManager))]属性确保添加该脚本的对象上必须有ARRaycastManager组件,因为射线检测需要用到ARRaycastManager组件。在Update()方法中,我们对手势操作进行射线检测,在检测到的平面上放置一个虚拟物体,如果该虚拟物体已存在,则将该虚拟物体移动到射线检测与平面的碰撞点。

10.接着将脚本拖入AR session origin中,然后再把cube放入脚本暴露出的spawnPrefab中

项目构建和真机调试

在工具栏File下选择build settings,观察提供的平台找到android机器人,点击switch platform切换目标平台
接着在player settings中other settings里面注意如果auto graphis api被勾选了,请取消勾选,并删除vulkan,保留opengles3
往下看如果multithreaded reandering有勾选就取消,然后就是设置一下minimum api level,这个看你调试的andriod选,其它默认即可
然后在左侧找到XR plugin-in managent把ar core 勾上,然后不着急打包
接下来,在工具栏edit下面的preferences下面的external tools检查一下,jdk,sdk,ndk的路径,默认这些在安装unity的时候会为你装好
找到sdk的路径,通过cmd启动adb,在连接之前请先把手机的开发者选项打开,并开启无线调试,然后进入手机的无线调试相关界面,可以选择配对码与电脑配对

adb pair IP地址:配对端口
Enter pairing code:输入手机上的配对码
adb connect IP地址:端口
adb devices

adb connect IP地址:端口,连接成功手机上会提示,如果不提示,不放心就通过adb devices查看一下
顺带一提,电脑与手机的wifi要连同一个
这个时候就可以开始无线调试了,选择file下面的build settings ,点击build and run 等待自动打包结束就好
进入AR程序后先找个平面左右移动手机,待屏幕空间出现范围框之后,再通过点击把物体渲染上去,至此一个简单的ar小例子就完成了



https://www.xamrdz.com/database/6qq1935687.html

相关文章: