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对应的最大值。

开发准备

  1. 在开发应用前需要在华为开发者联盟网站上注册成为开发者并完成实名认证,具体方法请参见帐号注册认证。
  1. 华为提供了Maven仓集成方式的AR Engine SDK包,在开始开发前,需要将AR Engine SDK集成到您的开发环境中。
  1. Android Studio的代码库配置在Gradle插件7.0以下版本、7.0版本和7.1及以上版本有所不同。请根据您当前的Gradle插件版本,选择对应的配置过程。
  1. 以7.0为例:

打开Android Studio项目级“build.gradle”文件,添加Maven代码库。

在“buildscript > repositories”中配置HMS Core SDK的Maven仓地址。

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/" }}}
}
  1. 添加依赖 在“dependencies”中添加如下编译依赖:
dependencies {implementation 'com.huawei.hms:arenginesdk:{version}
}

应用开发

1.运行前验证:检查当前设备是否安装了AR Engine,若已经安装则正常运行,若没有安装,App应采用合适的方式提醒用户安装AR Engine,如主动跳转应用市场,请求安装AR 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);
  1. 获取到ARhandTrackingconfig后,可以设置使用相机的前置或者后置等等一些可选的方法:
Config.setCameraLensFacing(ARConfigBase.CameraLensFacing.FRONT);
  1. 你需要把你获取到的手部识别获取到的config配置到ArSession中,然后启动手部识别场景:
mArSession.configure(config);
mArSession.resume();
  1. 初始化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,…);}
}
  1. 初始化HandRenderManager类,此类是来渲染从HUAWEI AREngine获取的数据
Public class HandRenderManager implements GLSurfaceView.Renderer{//设置ARSession对象,用于获取onDrawFrame方法中的最新数据。Public void setArSession(){}
}
  1. 在HandRenderManager类中,初始化onDrawFrame()方法:
Public void onDrawFrame(){
//在这个方法中调用了setCameraTextureName(),update()等方法用来更新ArEngine的计算结果
//应用在获取到最新数据时来调用此接口。
mSession.setCameraTextureName();
ARFrame arFrame = mSession.update();
ARCamera arCamera = arFrame.getCamera();
//获取人体手部跟踪时返回的跟踪结果
Collection<ARHand> hands =  mSession.getAllTrackables(ARHand.class);//把获取到的hands对象循环传入更新手势识别信息方法中,进行处理For(ARHand hand  :  hands){updateMessageData(hand);
}
}

8.最后在展示效果的HandActivity页面,给SurfaceView 设置渲染器。

mSurfaceView.setRenderer(mHandRenderManager);
设置渲染模式
mSurfaceView.setRenderMode(GLEurfaceView.RENDERMODE_CONTINUOUSLY);

具体实现可参考示例代码。

了解更多详情>>

访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHub、Gitee

关注我们,第一时间了解 HMS Core 最新技术资讯~

用AR Engine手部骨骼跟踪能力实现虚拟手表试戴相关推荐

  1. AR珠宝试戴经典案例盘点

    珠宝的选择是一个非常严谨的过程--无论是订婚戒指.还是送给挚爱的礼物.高昂的价格以及对珠宝的了解,很大程度上导致了人们在电商渠道购买珠宝时会犹豫不决. AR试戴 功能在各珠宝品牌中的应用,用沉浸式的试 ...

  2. 如何用AR Engine开发一个虚拟形象表情包?

    现如今,人们在网上聊天.发帖时越来越爱用表情包,表情包一方面是一种个性化的表达方式,另一方面更能传达出当下的心理活动,可以说在网络社交中表情包是一个不可或缺的存在.加上近年来元宇宙的兴起,3D虚拟形象 ...

  3. AR Engine运动跟踪能力,高精度实现沉浸式AR体验

    随着电子产品的普遍应用,AR技术也开始广泛普及,在游戏.电商.家装等领域都有涉及.比如,在室内设计时,我们可以通过AR技术在实际场景中进行虚拟软装的搭配,运用华为AR Engine运动跟踪能力在实际应 ...

  4. AR Engine光照估计能力,让虚拟物体在现实世界更具真实感

    AR是一项现实增强技术,即在视觉层面上实现虚拟物体和现实世界的深度融合,打造沉浸式AR交互体验.而想要增强虚拟物体与现实世界的融合效果,光照估计则是关键能力之一. 人们所看到的世界外观,都是由光和物质 ...

  5. Unity接入Huawei AR Engine

    说在前面 使用Unity进行AR开发的开发者基本都会遇到华为手机的坎:由于谷歌的制裁,ARCore并不能覆盖华为的新机型导致新的机型已经不能使用ARFoundation方案:使用第三方通用的ARsdk ...

  6. 华为AR engine 应用开发学习教程

    一.环境准备 您需要有Android Studio开发环境(3.0或以上版本),并且需要Android SDK Platform version 7.0(API level 24)或以上版本.(我安装 ...

  7. HMS Core AR Engine 2D图片/3D物体跟踪技术 助力打造更智能AR交互体验

    AR技术已经被广泛应用于营销.教育.游戏.展览等场景.通过2D图像跟踪技术和3D物体跟踪技术,用户只需使用一台手机进行拍摄,即可实现海报.卡牌等平面物体以及文物.手办等立体物体的AR效果.尽管近年来2 ...

  8. 眼镜选款新方法,用AR+Scene技术实现3D虚拟试戴

    互联网和智慧终端的普及促进了电商的产生和蓬勃发展,而新技术的产生,则推动着电商领域的不断升级.疫情使得人们更加习惯于使用电商进行购物,但对传统的线上购物模式已经产生了一些厌倦,电商市场急需模式上的变革 ...

  9. 在家也可以享受购物体验?AR+Scene 帮您实现商品3D展示和虚拟试戴

    互联网和智慧终端的普及促进了电商的产生和蓬勃发展,而新技术的产生,则推动着电商领域的不断升级.疫情使得人们更加习惯于使用电商进行购物,但对传统的线上购物模式已经产生了一些厌倦,电商市场急需模式上的变革 ...

最新文章

  1. SDR、DDR、QDR存储器的比较
  2. css 动态rem_【面试题】CSS知识点整理(附答案)
  3. ML:机器学习中与模型相关的一些常见的判断逻辑(根据自调整阈值计算阳性率)
  4. Spring IO Platform简介及示例
  5. DB2 SQLCODE=-1585的问题解决
  6. 工业以太网交换机:核心优点解析
  7. linux ftp 查找文件,Linux shell ftp命令根据文件日期下载文件的方法
  8. 远程桌面服务器无法复制粘贴了怎么解决
  9. php 批量改文件名后缀名_PHP 批量修改文件后缀名
  10. win10下rdlc报表在vs(visual studio)中中文显示小方块的批量处理解决方法
  11. delphi10.2.1下载地址
  12. UE 基础环境安装与Bridge插件配置
  13. linux ascii游戏,linux – Bash ASCII实现
  14. 数据库进阶(1)——MySQL架构(1)
  15. 外部排序(多路归并排序)
  16. 损失函数-交叉熵的推导和二分类交叉熵
  17. 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格
  18. SAP工具箱 自动生成发出接口程序(二 接口定义表)
  19. PCB设计——多层PCB层叠结构
  20. Linux man的使用以及汉化

热门文章

  1. MySQL使用HQL语句实现按中文拼音排序
  2. 文件搜索(File)
  3. 论文研读-社交媒体可视化-地图隐喻转发地图R-Map
  4. Android刷机SD卡分区指南 [
  5. 计算机网络实验1·**路由器基本配置**
  6. 微信小程序项目实例——二维码生成器
  7. Android 能让你少走弯路的干货整理
  8. RHCE7-NOTE(红帽工程师--题库详细笔记)
  9. 重装 Macos sierra系统 U盘
  10. 问题记录-笔记本HDMI外接2k显示器如何调2k分辨率