AR技术的落地应用,推动着电商领域的不断升级 , 通过增强现实为用户带来了虚拟与现实结合的AR购物体验 。如AR试衣、AR试鞋、AR试妆等功能的出现让用户在手机上就能体验产品的佩戴效果,可以让用户更直观、更真实的了解产品信息,提升消费者的购物愉悦感,帮助电商应用提高购物转化率 。华为AR Engine也为AR购物提供了实现方案,使用手部跟踪能力即可实现虚拟手表试戴 。
效果展示
文章插图
实现方法AR Engine提供手部骨骼跟踪能力,可以识别跟踪21个手部关节点的位置和姿态,形成手部骨骼模型 。通过手势识别能力,可以给AR应用提供交互功能并实现一些趣味玩法,比如可以将AR世界中的虚拟物体置放到人的手部更精确的位置,如手指尖、手掌心等;还可驱动虚拟手做出更精细的动作 。下面我会展示虚拟手表试戴功能的具体开发步骤 。
集成步骤开发环境要求:JDK 1.8.211及以上 。
安装Android Studio 3.0及以上:
minSdkVersion 26及以上
targetSdkVersion 29(推荐)
compileSdkVersion 29(推荐)
Gradle 6.1.1及以上(推荐)
在华为终端设备上的应用市场下载AR Engine服务端APK(需在华为应用市场,搜索“华为AR Engine”)并安装到终端设备 。
测试应用的设备:参见AREngine特性软硬件依赖表 。如果同时使用多个HMS Core的服务,则需要使用各个Kit对应的最大值 。
开发准备
- 在开发应用前需要在华为开发者联盟网站上注册成为开发者并完成实名认证,具体方法请参见帐号注册认证 。
- 华为提供了Maven仓集成方式的AR Engine SDK包,在开始开发前,需要将AR Engine SDK集成到您的开发环境中 。
- Android Studio的代码库配置在Gradle插件7.0以下版本、7.0版本和7.1及以上版本有所不同 。请根据您当前的Gradle插件版本,选择对应的配置过程 。
- 以7.0为例:
在“buildscript > repositories”中配置HMS Core SDK的Maven仓地址 。
【用AR Engine手部骨骼跟踪能力实现虚拟手表试戴】
buildscript {repositories {google()jcenter()maven {url "https://developer.huawei.com/repo/" }}}
打开项目级“settings.gradle”文件 , 配置HMS Core SDK的Maven仓地址dependencyResolutionManagement {repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {repositories {google()jcenter()maven {url "https://developer.huawei.com/repo/" }}}}
- 添加依赖 在“dependencies”中添加如下编译依赖:
dependencies {implementation 'com.huawei.hms:arenginesdk:{version}}
应用开发1.运行前验证:检查当前设备是否安装了AR Engine , 若已经安装则正常运行,若没有安装,App应采用合适的方式提醒用户安装AR Engine , 如主动跳转应用市?。肭蟀沧癆R Engine 。具体实现代码如下boolean isInstallArEngineApk =AREnginesApk.isAREngineApkReady(this);if (!isInstallArEngineApk) {// ConnectAppMarketActivity.class为跳转应用市场的Activity 。startActivity(new Intent(this, com.huawei.arengine.demos.common.ConnectAppMarketActivity.class));isRemindInstall = true;}
2.初始化AR场景:AREngine提供5种场景 , 包括运动跟踪(ARWorldTrackingConfig)、人脸跟踪(ARFaceTrackingConfig)、手部识别(ARHandTrackingConfig)、人体跟踪(ARBodyTrackingConfig)和图像识别(ARImageTrackingConfig) 。调用ARHandTrackingConfig接口,初始化手部识别 。
mArSession = new ARSession(context);ARHandTrackingConfig config = new ARHandTrackingconfig(mArSession);
- 获取到ARhandTrackingconfig后,可以设置使用相机的前置或者后置等等一些可选的方法:
Config.setCameraLensFacing(ARConfigBase.CameraLensFacing.FRONT);
- 你需要把你获取到的手部识别获取到的config配置到ArSession中 , 然后启动手部识别场景:
mArSession.configure(config);mArSession.resume();
- 初始化HandSkeletonLineDisplay类,此类是根据手骨架点的坐标来绘制手骨架线:
Class HandSkeletonLineDisplay implements HandRelatedDisplay{//此类需要几个方法//初始化方法public void init(){}//绘制手骨架点的方法,这里需要传入ARHand对象,用来获取数据public void onDrawFrame(Collection<ARHand> hands,){//调用getHandskeletonArray()方法用来获取手部关节点坐标数据Float[] handSkeletons=hand.getHandskeletonArray();//把handSkeletons传入到实时更新数据方法中updateHandSkeletonsData(handSkeletons);}//更新骨架点的连接数据,在更新任何帧的时候调用此方法public void updateHandSkeletonLinesData(){//用来创建并初始化缓冲区对象的数据存储GLES20.glBufferData(…,mVboSize,…);//用来更新缓冲区对象中的数据GLES20.glBufferSubData(…,mPointsNum,…);}}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SpringBoot 常用读取配置文件的 3 种方法!
- HTML&CSS-盒模型运用居中方式合集
- 欧莱雅小蜜罐欧版和中国哪个好用_欧版欧莱雅小蜜罐与中国区别
- 苹果手机如何在家里自己刷机(苹果刷机工具哪个好用)
- 含源码 手把手教你使用LabVIEW人工智能视觉工具包快速实现传统Opencv算子的调用
- ERP 系统成功应用取决于哪几个方面?
- 企业使用erp系统的好处及解决了什么问题?
- 工厂想采购一套信息化生产执行系统mes,不知道用哪家比较好?
- 如何用微信发朋友圈(如何用微信发朋友圈只发文字)
- 努力一周,开源一个超好用的接口Mock工具——Msw-Tools