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. gcc中-pthread和-lpthread的区别
  2. java什么叫内部对象,java – 函数对象的内部类中的变量/对象会发生什么?
  3. JavaScript实现返回数字的二进制表示中使用的位数bitLength算法(附完整源码)
  4. x86 vs x64
  5. 洛谷 - P2944 [USACO09MAR]Earthquake Damage 2 G(最小割)
  6. mysql数据库sql审核_Inception SQL审核注解
  7. C++的Opencv动态库遇到的问题
  8. 财务造假丑闻后,瑞幸遭大股东清仓股份,CEO和COO双双被停职
  9. Hadoop 环境准备
  10. c语言 由函数组成的数组,学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的_考题宝...
  11. 全文检索技术 mysql_浅谈MYSQL的全文检索的应用
  12. MySQL错误号码1862:your password has expired
  13. 技术分解:光纤传感在交通监控中的应用
  14. 台北三日自助游攻略(转载)
  15. delphi 注册表
  16. Holt Winter时间序列模型
  17. 小孟网站被黑客攻击,已经哭晕在厕所……
  18. Java RestTemplate中几种常见的请求方式
  19. 经验模态分解python_信号处理 - 经验模态分解 【1】
  20. 3.2 二维随机变量的边缘分布

热门文章

  1. C语言FILE详解(COME ON)
  2. Pytorch使用预训练模型进行图像分类
  3. 饥荒机器人雷击_饥荒机器人怎么被雷劈
  4. 下血本买的!1-3年的Android开发工程师看过来,挥泪整理面经
  5. 曾国藩:利可共而不可独,谋可寡而不可众
  6. 淘宝直播弹幕API接口协议
  7. 微型计算机百度云,STONE_百度云资源_盘多多如风搜_盘搜搜_哎哟喂啊
  8. java计算机毕业设计再生产公益管理系统设计与实现MyBatis+系统+LW文档+源码+调试部署
  9. 数据变换分解 | Python实现EOF经验正交函数分解时间序列模态分析
  10. 编程实现linux中的who命令功能,Linux who命令简介及使用方法详解