入门- 相机- ARCore

20 篇文章 2 订阅

相机Part2

1. ARCore Camera

ARCore 原理

ARCore 是 Google 的增强现实体验构建平台。

ARCore 使用三个主要功能将虚拟内容与通过手机摄像头看到的现实世界整合:

  • 运动跟踪 让手机可以理解和跟踪它相对于现实世界的位置。
  • 环境理解 让手机可以检测各类表面(例如地面、咖啡桌或墙壁等水平、垂直和倾斜表面)的大小和位置。
  • 光照估计 让手机可以估测环境当前的光照条件。

2. ARCoreCamera

2.1 检测设备是否支持

public abstract class MTArCoreCamera {
    /**
    * 检查设备是否支持ArCore,如果不在本地白名单内,将直接返回{@link ArCoreApk.Availability#UNSUPPORTED_DEVICE_NOT_CAPABLE}
    * 因为可能存在异步网络请求,所以尽量提早调用已保存检测结果。
 	* @param context
 	* @return {@link ArCoreApk.Availability#SUPPORTED_INSTALLED} 支持并且已安装
 	* {@link ArCoreApk.Availability#SUPPORTED_NOT_INSTALLED} 支持但未安装
 	* {@link ArCoreApk.Availability#SUPPORTED_APK_TOO_OLD} 支持已安装但版本太久
 	* {@link ArCoreApk.Availability#UNSUPPORTED_DEVICE_NOT_CAPABLE} 不支持
 	* 其他:检查失败,建议下次继续请求
 	*/
    public static ArCoreApk.Availability checkArCoreSupport(Context context);
    
    ...
    ...
}

2.2 初始化ARCore相机

  1. 自定义相机参数MTArCoreCamera.ArCoreCameraConfig。

  2. 普通相机必备的MTCamera、MTCameraPreviewManager、MTCameraRenderManager对应ARCore相机的MTArCoreCamera、MTArCoreCameraPreviewManager、MTArCoreCameraRenderManager。使用方式与原先一致

MTArCoreCamera.Builder arCoreBuilder = new MTArCoreCamera.Builder(this);
MTArCoreCameraRenderManager mtArCoreCameraRenderManager = new MTArCoreCameraRenderManager.Builder().setMtEngine(mtEngine).build();
MTArCoreCameraPreviewManager mtArCoreCameraPreviewManager = new MTArCoreCameraPreviewManager.Builder(this, R.id.camera_layout, mtArCoreCameraRenderManager).build();
arCoreBuilder.addNodes(mtArCoreCameraRenderManager);
arCoreBuilder.addNodes(mtArCoreCameraPreviewManager);
MTArCoreCamera mtArCoreCamera= arCoreBuilder.build();
  1. 检测的数据处理
    包括:人脸数据与空间矩阵信息,需要分别实现ArCoreDetectReceiver和AugmentedFacesReceiver接口,并且添加进MTArCoreCamera的nodes里。
public interface AugmentedFacesReceiver extends NodesReceiver {

    /**
     * 是否需要ArCore的人脸检测
     * @return
     */
    boolean isAugmentedFacesRequired();

    /**
     * ArCore检测的人脸信息分发,注意切换成后置摄像头时将无检测数据
     * @param augmentedFacesList
     */
    void onAugmentedFacesDetect(List<AugmentedFace> augmentedFacesList);
}


public interface ArCoreDetectReceiver extends NodesReceiver {
    /**
     * 是否需要ArCore检测的矩阵信息
     * @return
     */
    boolean isMatrixRequired();

    /**
     * 检测矩阵信息分发,注意切换成前置摄像头后理论上不支持检测矩阵,数据准确性无法保证
     * @param viewMatrix
     * @param projectionMatrix
     */
    void onMatrixDetect(float[] viewMatrix, float[] projectionMatrix);
}

3. 流程

参考

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值