ARFoundation入门踩过的那些坑

ARFoundation入门

Android支持使用ARCore设备列表
Android(Google Play)*运行在搭载Google Play应用商店的设备上
.
Android 7.0 或更高版本(如下所示,个别型号需要更高的版本)
若你的应用为AR可选应用,请修改minSdkVersion明:'minSdkVersion>14'(API Level 14,Ice Cream Sandwich,version
4.0.1-4.0.2)
若你的应用为AR必备应用,请修改minSdkVersion声明:minSdkVersion 2 24(API Level 24,Nougat,version 7.0)Android(中)
在中国,设备不搭载Google应用商店。您可以从以下应用商店中选择其一来安装ARCore:
.
Xiaomi app store(米应用商店)
Huawei Apps Gallery(为应用商店)OPPO APP Market(OPPO 软件商店)
.
Samsung Galaxy Apps(E星应用市)
-Appstore(vivo应用商店)

谷歌官方查看支持ARCore设备地址:ARCore支持的设备| Google Developers

unity官方的API:点击直达

ARFoundation 示例地址:ARFoundation Samples

官方手册

踩过的那些坑之

                          --导出安卓出现黑屏

在手机没有安装GooglePlay服务的时候,打开就会黑屏  一定要记得安装;

安装地址:各大应用商店

 

在构建的时候进行如下设置:

在弹出的窗口中做如下设置: Other Settings中 删除Vulkan,取消Multithreaded Rendering, Minimum APILevel 调整为28 ,Scripting Backend 改为IL2CPP(如果不能打包就选mono),勾选ARM64

再选择左边的XR Plug-in Management,勾选 ARCore 

 

 

二、打包失败,Gradie构建失败

问题:

 CommandInvokationFailure: Gradle build failed.
C:\Program Files\Java\jdk1.8.0_171\bin\java.exe -classpath “C:\Program Files\Unity2017.4.2.0\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\lib\gradle-launcher-4.6.jar” org.gradle.launcher.GradleMain “-Dorg.gradle.jvmargs=-Xmx1024m” “assembleRelease”
 

解决办法:修改JDK,安装1.8.0_171,然后配置环境变量;

三、AndroidJDK&SDK

安装方法两个:

1.下载AndroidJDK&NDK工具包,或者Android Studio,直接安装配置;

2.unityHub,直接下载的时候选择模块;在下载的时候可能会出现长时间的等待,取决于你的网络问题,有渠道的可以尝试绿色上网;

配置问题:

         Mininum API Level设置,记得勾选安卓7.0,因为最低支持7.0不然会报错;

四、 Gradle Project构建卡死

用的版本2019unity,默认下载的Gradie为5.01,由于太低,需要升级,我们可以重新下载一个解压进去重新指定就可以了;Gradie下载地址

 错误一:Gradie版本问题

解决办法:

点击上面网址,下载最新的Gradie,然后解压出来将里面lib拷贝到默认原路径;

错误二:Missing ‘package’ key attribute on element package at [:arcore_client:] AndroidManifest.xml:30:9-54

 解决办法:

打开Project Settings > Player > Android(就是安卓那个图标)-> Publishing Settings,把这两个勾上,然后他会在下面对应的路径的地方各生成一个文件。

 然后再编辑器中会出现这两个文件,用记事本或者VS打开删除开头注释行;

// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN

然后粘贴如下代码:

buildscript {
   repositories {
       google()
       jcenter()
   }
   dependencies {
       // Must be Android Gradle Plugin 3.6.0 or later. For a list of
       // compatible Gradle versions refer to:
       // https://developer.android.com/studio/releases/gradle-plugin
       classpath 'com.android.tools.build:gradle:3.6.0'
   }
}

allprojects {
  repositories {
     google()
     jcenter()
     flatDir {
       dirs 'libs'
     }
  }
}

然后可以正常构建了。 

图像跟踪识别

在ARFoundation中,图像跟踪系统依据参考图像为库的图像信息尝试在周围环境中检测到匹配的2D图像并跟踪之,在ARFoundation的图像跟踪处理中,有一些特定的术语如下表所示。

在ARFoundation中,图像跟踪的操作使用分成两步,第一步是建立一个参考图像库,第二步是在场景中挂载AR Tracked Image Manager组件,并将一个需要实例化的Prefab赋给其Tracked Image Prefab即可,下面我们来具体操作。

  按上述步骤,在Unity中新建一个工程,第一步建立一个参考图像库,首先在Project窗口中的ImageLib文件夹下点击鼠标右键并依次选择Create->XR->Reference Image Library新建一个参考图像库,并命名为RefImageLib,如下图所示。

选择新建的RefImageLib参考图像库,在Inspector窗口中,点击“Add Image”添加参考图像,将参考图像拖到图像框中,如下图所示。

 

 在上图中,每一个参考图像除了图片信息外都有若干属性,其具体含义见下表。

 图像跟踪与启用:

    public Text m_TogglePlaneDetectionText;
    private ARTrackedImageManager mARTrackedImageManager;
    void Awake()
    {
        mARTrackedImageManager = GetComponent<ARTrackedImageManager>();
    }

    #region 启用与禁用图像跟踪
    public void ToggleImageTracking()
    {
        mARTrackedImageManager.enabled = !mARTrackedImageManager.enabled;

        string planeDetectionMessage = "";
        if (mARTrackedImageManager.enabled)
        {
            planeDetectionMessage = "禁用图像跟踪";
            SetAllImagesActive(true);
        }
        else
        {
            planeDetectionMessage = "启用图像跟踪";
            SetAllImagesActive(false);
        }

        if (m_TogglePlaneDetectionText != null)
            m_TogglePlaneDetectionText.text = planeDetectionMessage;
    }

    void SetAllImagesActive(bool value)
    {
        foreach (var img in mARTrackedImageManager.trackables)
            img.gameObject.SetActive(value);
    }
    #endregion

更多详细类容移步(感谢大大):ARFoundation之路-图像跟踪

发布手机端

发布并运行,需要如下操作;

1.打开手机开发者模式,具体方法详见百度,开启调试;

2.打开Unity的Project,并在菜单栏中选择:

Edit –> Project Settings –> Editors ,在Device项中选择 Any Android Device。

以上差不多就是我遇到的一些问题,欢迎大家交流讨论,记录学习日记:

猜你喜欢

转载自blog.csdn.net/qq_41853937/article/details/124787245