Unity Vuforia 之 简单实现Vuforia调用Android设备外接摄像头camera实现AR

 

目录

Unity Vuforia 之 简单实现Vuforia调用Android设备外接摄像头camera实现AR

一、简单介绍

二、编译环境之工具准备:

1、操作系统

2、Python 配置要求版本 2 或者更高

3、Git 安装配置

4、CMake 配置要求版本 3.6 或者更高

5、Ninja 下载与环境配置

6、Android NDK 13 下载并配置环境

7、Android SDK 22 下载安装,并配置环境

三、编译环境之文件资源准备:

1、Download Vuforia Engine for Android , 即是 vuforia-sdk-android-xx.zip 下载,如下图

2、Download the UVCDriver Sample,即是vuforia-samples-core-android-xxx.zip 下载,如下图

3、 vuforia-driver-sample-uvcdriver-android-xxx.zip 下载,如下图

4、Clone the https://github.com/ptc-shunt/UVCCamera repository,下载这个 git 即可, 如下图

四、编译环境之文件夹整理:

五、编译环境之开始编译:

六、在Unity中使用编译成果,开发 Vuforia 调用 USB 摄像头工程

七、关键代码

八、编译成功的vuforia-sdk 调用 usbcamera 的(so 和 jar )工程地址

九、测试调用 USBCamera 成功的 APK

十、注意事项(Vuforia 官方的)



 

 

一、简单介绍

Unity中使用 Vuforia 进行相关开发的只是整理。

Unity 在 Android 设备上进行AR开发,一般可以调用的是 Android 设备的后置摄像头,或者前置摄像头。本章介绍如何实现Vuforia 调用 Android 设备上的外接 USB 摄像头的方法 (Vuforia 官网的实现指导 Building and Using the UVC Camera Driver Sample )。

 

二、编译环境之工具准备:

如图:Vufoira官网配置要求

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Vuforia

 

1、操作系统

本次使用的是:Windows 10 的 64 位操作系统

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_UVCCamera_02

 

2、Python 配置要求版本 2 或者更高

1)到官网下载安装即可,如下图

(下载网址:https://www.python.org/downloads/)

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Unity_03

2)下载好,安装即可,安装成功后,执行 python (环境配置,安装中勾选自动配置即可),产看安装结果,如下图

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Vuforia_04

 

3、Git 安装配置

1)可以到 Git 官网下载,如下图

(可以下载也可以不下载,到时候相关文件可以到GitHub 上直接下载 zip 即可)

下载网址:https://git-scm.com/downloads

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Vuforia_05

 

2)下载安装好后,在任意文件夹中右键可以看到git相关信息,如下图

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Unity_06

 

4、CMake 配置要求版本 3.6 或者更高

1)CMake 下载可以到官网上下载,如下图

下载网址:https://cmake.org/download/

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Unity_07

 

2)下载安装 CMake 即可,然后把 CMake 配置到环境变量中(配置路径根据自己的安装路径相应修改),如下图

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_UVCCamera_08

 

3)在 cmd 终端中,输入 camke -version,即可查看到版本,表示配置成功,如下图

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_调用USBCamera_09

 

5、Ninja 下载与环境配置

1)在官网下载 Ninja 相关资源包,如下图

下载网址:https://github.com/ninja-build/ninja/releases

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_UVCCamera_10

 

2)下载完后,解压文件,得到如下文件

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Unity_11

 

3)配置 ninja.exe 到环境变量中,如下图

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Android调用外接摄像头_12

 

4)在 cmd 终端中输入 ninja -help ,查看ninja是否配置成功,如下便是配置成功

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Vuforia_13

 

6、Android NDK 13 下载并配置环境

1)到官网下载即可,如下图

下载网址:https://developer.android.google.cn/ndk/downloads/older_releases

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_调用USBCamera_14

 

2)把 Android NDK 13 配置到环境变量中,如下图

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Vuforia_15

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Unity_16

 

3)在 cmd 中检查是否配置成功,输入 ndk-build ,如下图便是配置成功了

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Vuforia_17

 

7、Android SDK 22 下载安装,并配置环境

1)建议下载 Android Studio,在Android Studio 环境中下载对应 Android SDK ,Android Studio 下载如下图

下载地址:https://developer.android.google.cn/studio/

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Android调用外接摄像头_18

 

2)下载好后,根据步骤安装 Android Studio 即可,打开 Android Studio 的 SDK Manager 安装 Android SDK 22 ,如下图

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_调用USBCamera_19

 

3)下载好后,对应文件夹下就会看到对应的SDK,如下图

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Vuforia_20

 

4)配置环境,如下图

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Android调用外接摄像头_21

 

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Unity_22

 

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Unity_23

 

三、编译环境之文件资源准备:

如图:Vufroia 官网编译以来文件资源

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Unity_24

1、Download Vuforia Engine for Android , 即是 vuforia-sdk-android-xx.zip 下载,如下图

下载网址:https://developer.vuforia.com/downloads/sdk

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_调用USBCamera_25

 

2、Download the UVCDriver Sample,即是vuforia-samples-core-android-xxx.zip 下载,如下图

下载网址:https://developer.vuforia.com/downloads/samples

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_调用USBCamera_26

 

3、 vuforia-driver-sample-uvcdriver-android-xxx.zip 下载,如下图

下载地址:https://developer.vuforia.com/downloads/samples

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Unity_27

 

4、Clone the https://github.com/ptc-shunt/UVCCamera repository,下载这个 git 即可, 如下图

下载地址:https://github.com/ptc-shunt/UVCCamera

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_UVCCamera_28

 

四、编译环境之文件夹整理:

如图:Vuforia 官网的编译(注意红框中)

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Vuforia_29

 

1、首先解压下载好的文件,如下图

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_UVCCamera_30

 

2、在 vuforia-sdk-android-8-6-7\samples 文件夹下新建一个 UVCDriver 文件夹,如下图

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_调用USBCamera_31

 

3、把 vuforia-driver-sample-uvcdriver-android-8-6-7 文件夹下的所有内容拷贝到新建的 UVCDriver (vuforia-sdk-android-8-6-7\samples\UVCDriver)文件夹下,如下图

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_调用USBCamera_32

 

4、UVCCamera-master\UVCCamera-master 下的所有内容拷贝到 UVCDriver (vuforia-sdk-android-8-6-7\samples\UVCDriver)文件夹下新添加的 UVCCamera 文件夹下(或者直接拷贝UVCCamera-master到UVCDriver文件夹下,再改名UVCCamera 即可),如下图

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Android调用外接摄像头_33

 

5、把 vuforia-samples-core-android-8-6-7\VuforiaSamples-8-6-7 直接拷贝到 vuforia-sdk-android-8-6-7\samples 问价夹下,如下图

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_调用USBCamera_34

 

五、编译环境之开始编译:

如图:Vuforia 官网给的编译步骤(注意红框中)

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_UVCCamera_35

 

1、在 cmd 中,把目录切换到 xxx\vuforia-sdk-android-8-6-7\samples\UVCDriver\UVCCamera\libuvccamera\src\main\jni 中,然后 ndk-build 命令进行编译(编译完成要一些时间)如下图

(涉及到的命令有1、d:  2、cd xxx\xx  3、ndk-build)

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Vuforia_36

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Android调用外接摄像头_37

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_UVCCamera_38

 

2、上一步骤编译成功后,在 cmd 中,在切换到目录 xxx\vuforia-sdk-android-8-6-7\samples\UVCDriver,输入命令 python build.py 进行编译,如下图

(涉及到的命令有1、cd xxx\xx  2、python build.py)

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Vuforia_39

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_调用USBCamera_40

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Android调用外接摄像头_41

 

3、编译成功后,会在 xxx\vuforia-sdk-android-8-6-7\samples\UVCDriver\build\bin\Android 文件夹下有编译后的平台 so 和 jar ,如下图

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_UVCCamera_42

 

六、在Unity中使用编译成果,开发 Vuforia 调用 USB 摄像头工程

1、打开Unit有,新建一个空工程,如下图

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Android调用外接摄像头_43

 

2、把编译好的 so 和 jar 导入Unity 工程中添加的的 Plugins/Android/libs 文件夹下,如下图

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Android调用外接摄像头_44

 

3、在工程中新建一个脚本,用于获得外接USB 摄像头权限,如下图

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_调用USBCamera_45

 

4、把新建的脚本挂载到场景中,如下图

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_Unity_46

 

5、像正常在Unity中进行Vuforia开发的操作步骤,开发Vuforia AR 应用即可,如下图

android 外接多个usb摄像头 怎样确定具体摄像头 安卓外接摄像头_调用USBCamera_47

 

6、编译打包,Android 设备连接USB摄像头即可

 

七、关键代码

using UnityEngine;

/// <summary>
/// 用于获得调用 USBCamera 摄像头的权限
/// </summary>
public class UVCManager : MonoBehaviour
{
    private void Awake()
    {
#if UNITY_ANDROID
        bool driverLibrarySet = false;
        driverLibrarySet = VuforiaUnity.SetDriverLibrary("libUVCDriver.so");

        if (driverLibrarySet)
        {
            // Load your applications scene here 
            // InitAndLoadScene(VUFORIA_DRIVER_CAMERA_SCENE_INDEX);

            // The application needs to ask for USB permissions to run the USB camera
            // this is done after the driver is loaded. We call a method in the UVC driver
            // Java code to request permissions, passing in the Unity app's activity.
            AndroidJavaClass unityJC = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject unityActivity = unityJC.GetStatic<AndroidJavaObject>("currentActivity");

            AndroidJavaClass usbControllerJC = new AndroidJavaClass("com.vuforia.samples.uvcDriver.USBController");
            usbControllerJC.CallStatic("requestUSBPermission", unityActivity);
        }
        else
        {
            Debug.Log("Failed to initialize the UVC driver - defaulting to the standard scene");

            // Fall back to the in-built camera
        }
#endif
    }

    // Start is called before the first frame update
    void Start()
    {
        
    }

    
}

 

八、编译成功的vuforia-sdk 调用 usbcamera 的(so 和 jar )工程地址(可做参看)

参看工程 vuforia-sdk-android-8-6-7_ForUSBCamera


 

九、测试调用 USBCamera 成功的 APK

链接:https://pan.baidu.com/s/1F8kWm-nm-8Df2GUbX0aaYQ

提取码:djfa

(若路径失效请留言)

 

十、注意事项(Vuforia 官方的)

The current supported cameras profiles are:

  • Logitech HD Webcam c310
  • Microsoft LifeCam Studio

 

十一、参考资料:

1、Building and Using the UVC Camera Driver Sample

网址:https://library.vuforia.com/content/vuforia-library/en/articles/Solution/uvc-camera-driver.html

 

2、Unity上使用USBCamera链接地址: http://www.unitycn.cn/?p=929

(上面地址涉及网址:

https://library.vuforia.com/articles/Solution/file-driver.html

https://library.vuforia.com/content/vuforia-library/en/articles/Solution/driver-framework.html

https://github.com/mironal/VuforiaExternalCameraSample

 

3、参考博文