40
产产产产 Product name 产产 Confidentiality level 产产产产 Product version Total 35 pages 产 35 产 HUAWEI AR Engine NDK 产产产产 Prepared by 产产 产产产 产产 Date 产产 2018-05-01 Reviewed by 产产 产产产 Date 产产 2018-10-31 Approved by 产产 Date 产产 Huawei Technologies Co., Ltd. 产产产产产产产产 All rights reserved 产产产产 产产产产

Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

  • Upload
    others

  • View
    37

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

产品名称 Product name 密级 Confidentiality level

产品版本 Product versionTotal 35 pages 共 35 页

HUAWEI AR Engine NDK 接口说明书 Prepared by 拟制 蒋东生

钱鹏Date日期 2018-05-01

Reviewed by 审核 郭泽金 Date日期 2018-10-31Approved by批准 Date日期

Huawei Technologies Co., Ltd.

华为技术有限公司All rights reserved版权所有 侵权必究

Page 2: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书

Revision Record 修订记录Date日期 Revisio

n Version修订版本

CR ID / Defect

IDCR号

Sec No. 修改章节

Change Description修改描述 Author作者

2018/04/18 0.10 初稿完成 蒋东生2018/05/10 0.20 加入检查和设置引擎功能模块 蒋东生2018/05/15 0.30 增加

HwArEnginesSelector_getCreatedEngine 函数,返回当前使用的引擎类型;

蒋东生

2018/05/28 0.40 增加华为独有的 config 函数。 蒋东生2018/06/05 0.50 增加模块。 蒋东生2018/06/18 0.60 添加注意说明。 蒋东生2018/06/28 0.70 添加 body,hand 和 face 接

口。蒋东生

2018/07/11 0.90 增加 ARImageMetadata 等类。 蒋东生2018/10/09 1.3.0 增加

HwArAugmentedImage、HwArAugmentedImageDatabase 类,增加HwArConfiguration 类中部分新接口。

詹宇王世斌

2018/10/25 1.4.0 在类 HwArConfiguration 增加FocusMode 接口,1.4.0 版本后BodyAR、HandAR、FaceAR、AugmentedImageAR 默认对焦模式变为自动对焦。

王世斌

2018/10/31 1.4.0 增加 ARCameraConfig 类,获取当前相机配置;ARBody 增加SkeletonConfidence、MaskConfidence、MaskDepth 数据返回接口ARSession 增加GetCameraConfig 接口

钱鹏

2019/05/22 1.14.0 增加环境 Mesh 接口 黄家一

华为机密,未经许可不得扩散 Page 2 , Total 37 第 2 页,共 37 页

Page 3: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书

Catalog 目 录1 简介..........................................................................................................................................51.1 目的....................................................................................................................................51.2 范围....................................................................................................................................5

2 HUAWEI AR Engine NDK 接口................................................................................................62.1 使用过程.............................................................................................................................62.2 接口说明.............................................................................................................................6

2.2.1 概览..............................................................................................................................62.2.1.1. 对象类型定义......................................................................................................62.2.1.2. 位姿和坐标空间...................................................................................................72.2.1.3. 世界坐标空间......................................................................................................72.2.1.4. 关于 HUAWEI AR Engine SDK 联网的说明........................................................7

2.2.2 模块介绍.......................................................................................................................72.2.2.1. 通用数据类型定义...............................................................................................72.2.2.2. HwArAnchor........................................................................................................92.2.2.3. HwArLightEstimate...........................................................................................102.2.2.4. HwArPlane........................................................................................................112.2.2.5. HwArPoint.........................................................................................................122.2.2.6. HwArPointCloud...............................................................................................132.2.2.7. HwArPose.........................................................................................................132.2.2.8. HwArTrackable.................................................................................................142.2.2.9. HwArEnginesSelector.......................................................................................152.2.2.10. HwArFace.........................................................................................................162.2.2.11. HwArFaceGeometry.........................................................................................162.2.2.12. HwArFaceBlendShapes...................................................................................172.2.2.13. HwArHand........................................................................................................172.2.2.14. HwArBody.........................................................................................................202.2.2.15. HwArEnginesApk..............................................................................................212.2.2.16. HwArConfiguration...........................................................................................232.2.2.17. HwArSceneMesh..............................................................................................262.2.2.18. HwArSession....................................................................................................272.2.2.19. HwArCamera....................................................................................................282.2.2.20. HwArCameraConfig..........................................................................................292.2.2.21. HwArFrame.......................................................................................................302.2.2.22. HwArHitResult..................................................................................................322.2.2.23. HwArImageMetadata........................................................................................332.2.2.24. HwArAugmentedImage....................................................................................332.2.2.25. HwArAugmentedImageDatabase.....................................................................34

华为机密,未经许可不得扩散 Page 3 , Total 37 第 3 页,共 37 页

Page 4: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书

Figure List 图目录图 1 HUAWEI AR Engine NDK 简要使用过程................................................................................6

华为机密,未经许可不得扩散 Page 4 , Total 37 第 4 页,共 37 页

Page 5: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书

1 简介1.1 目的

本文描述华为 Huawei AR NDK 对外接口,用于指导开发者使用 HUAWEI AR Engine 服务。1.2 范围

本接口说明书仅包含 HUAWEI AR Engine NDK 接口的使用过程,功能描述,输入参数和返回值。

华为机密,未经许可不得扩散 Page 5 , Total 37 第 5 页,共 37 页

Page 6: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书

2 HUAWEI AR Engine NDK接口2.1 使用过程

图 1 HUAWEI AR Engine NDK 简要使用过程

2.2 接口说明2.2.1 概览

2.2.1.1. 对象类型定义HUAWEI AR Engine 有两类数据类型:值类型和参考类型。其中值类型归属于应用,可以通过 create 或 destroy 方法进行创建和销毁的操作,HUAWEI

AR Engine 中使用带有 get 的方法可以实现值类型的填充更新。参考类型归属于 HUAWEI AR Engine,它可以由其中的 acquire 方法获得,每调用一次acquire 方 法 , 必 须 调 用 一 次 匹 配 的 release 方 法 。 注 意 , 尽 管 最 后 一 次 参 考 被 释 放 了 ,HUAWEI AR Engine 可能还继续保留一个指向 HUAWEI AR Engine 处置权的引用。参考类型又可以进一步分为:

华为机密,未经许可不得扩散 Page 6 , Total 37 第 6 页,共 37 页

Page 7: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书1) 长生存期对象类型。该类对象持久存在于帧间,甚至可能应用或者会话的整个生命周

期。若 HUAWEI AR Engine 状态不对,如不在跟踪状态,获得该对象会失败。从列表中获得总会成功,因为对象已经存在。

2) 短暂大数据类型。这些对象通常通过每帧获得。若资源耗尽,时间超出或者资源还未获取,acquire 方法调用可能会失败。

注意:列表是值类型,但是可以存储指向长生存期对象的参考。这意味着列表中的参考只有在列表被销毁或者另外一个 api重新调用时,才会被释放。例如,HwArAnchorList是一个值类型数据类型,它存储指向长生存期对象 Anchors 类型的参考。2.2.1.2. 位姿和坐标空间HwArPose 描述了从一个坐标空间到另外一个坐标空间的刚体变换。HUAWEI AR Engine 所有 的 api 中 ,Poses 一直用来描 述 从 对 象局部 坐 标 空 间到世 界 坐 标 空 间 的 变换。 所 以 ,HUAWEI AR Engine API 中 Poses 等价于 OpenGL 的模型的矩阵。这种变换用一个沿着原点的四元数旋转和随后一个平移来定义。坐标系统是右手坐标系,与OpenGL传统形式一致。平移的单位是米。2.2.1.3. 世界坐标空间HUAWEI AR Engine 可以理解环境的变化,所以它可以调整自身的世界模型来保持事物一致。当发生变化时,相机和瞄点的数值坐标会发生巨大的变化,以使它们相对于它们所代表的物理位置保持恒定。这些变化意味着每一帧都被当作一个完全独一无二的世界坐标空间。当它们被索引时,这些锚点和相机的数值坐标位置不应该在渲染帧外使用。如果一个位置需要被超出当前渲染的帧来考虑,可以通过创建锚点,或者利用临近存在的锚点相对位置。2.2.1.4. 关于HUAWEI AR Engine SDK联网的说明当 调 用 HUAWEI AR Engine SDK 的 HwArEnginesApk 类 的 HwArAvailability 和HwArEnginesApk_requestInstall 函数,HwArEnginesSelector 类的 HwArEnginesAvaliblity 函数时,会触发兼容性检查,当发现 HUAWEI AR Engine Server 未安装或者与当前运行的HUAWEI AR Engine SDK 版本不兼容时,触发通过网络连接华为云服务的配置服务,检查当前机型是否支持 HUAWEI AR Engine。

华为机密,未经许可不得扩散 Page 7 , Total 37 第 7 页,共 37 页

Page 8: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书此过程仅涉及下载临时数据,无任何用户个人数据的上传。请开发者在开发应用时,在适当的时机提示用户存在联网操作的权限要求。

2.2.2 模块介绍2.2.2.1. 通用数据类型定义

HwArTrackingState

说明:定义可跟踪对像的接口类,用于描述跟踪状态。 HwArTrackingState 描述HWAR_TRACKING_STATE_TRACKIN

G 正在跟踪,相关的数据是有效的

HWAR_TRACKING_STATE_PAUSED 暂停跟踪,相关的数据是不准确的,不应该被使用

HWAR_TRACKING_STATE_STOPPED 停止跟踪,相关的数据是无效的,可以被删除

HwArStatus

说明:状态返回值类型,用于表示一个方法的调用状态。枚举类型。HwArStatus 描述HWAR_SUCCESS 执行成功HWAR_ERROR_INVALID_ARGUMENT 某些参数不存在时返回该状态

HWAR_ERROR_FATAL

当 HUAWEI AR Engine遇到不能恢复的错误时,抛出

HWAR_ERROR_SESSION_PAUSED

当一个操作需要 HUAWEI AR

Engine 运行(而实际不处于该状态)时返回该状态

HWAR_ERROR_SESSION_NOT_PAUSED

当一个操作需要 HUAWEI AR

Engine 停止(而实际不处于该状态)时返回该状态

HWAR_ERROR_NOT_TRACKING

当一个操作需要某个对象处于TRACKING 状态(而实际不处于该状态)时返回该状态

华为机密,未经许可不得扩散 Page 8 , Total 37 第 8 页,共 37 页

Page 9: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书

HWAR_ERROR_TEXTURE_NOT_SET

当第一次调用HwArSession_update()前,没有调用Hw

ArSession_setCameraTextureNam

e()

时,返回该状态

HWAR_ERROR_MISSING_GL_CONTEXT

当线程缺少OpenGL ES上下文时抛出

HWAR_ERROR_UNSUPPORTED_CONFIGURATIO

N

当传入的配置不支持时返回该状态

HWAR_ERROR_CAMERA_PERMISSION_NOT_GR

ANTED 当前应用没有获得相机权限

HWAR_ERROR_DEADLINE_EXCEEDED

获取失败,因为正在获取的对象已经释放

HWAR_ERROR_RESOURCE_EXHAUSTED

获取失败,因为已经获取的对象太多

HWAR_ERROR_NOT_YET_AVAILABLE

由于获取的对象尚不可用,因此获取失败

HWAR_ERROR_CAMERA_NOT_AVAILABLE 表明当前相机为不可用状态HWAR_UNAVAILABLE_ARSERSERVICE_NOT_IN

STALLED

当检测到设备没有安装 Service

时HWAR_UNAVAILABLE_DEVICE_NOT_COMPATIB

LE

当检测到当前硬件设备不支持HUAWEI AR Engine 时

HWAR_UNAVAILABLE_APK_TOO_OLD

设备上安装的 Service 的版本低于应用使用的 HUAWEI AR

Engine SDK 要求的最小版本时

HWAR_UNAVAILABLE_SDK_TOO_OLD

应用中使用的 HUAWEI AR

Engine SDK 的版本低于当前安装的 Service 要求的最小版本时返回该状态

HWAR_UNAVAILABLE_USER_DECLINED_INSTA 在用户先前取消安装后调用 华为机密,未经许可不得扩散 Page 9 , Total 37 第 9 页,共 37 页

Page 10: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书LLATION requestInstall时返回该状态

HWAR_UNAVAILABLE_EMUI_NOT_COMPATIBL

E

当检测到当前 EMUI 版本不支持HUAWEI AR Engine 时返回该状态

2.2.2.2. HwArAnchor

描述:锚点是真实世界中的一个固定的位置和方向。为了保持这个物理空间的固定位置,HUAWEI AR Engine 会根据自己对于空间的理解,更新它的数值描述。

数据类型:HwArAnchor

说明:表示一个空间中的一个位置,依附于一个 trackable 类。ArAnchorList

说明:表示锚点的一个列表。 接口:

void HwArAnchorList_acquireItem(const HwArSession *session,const

HwArAnchorList *anchor_lis,int32_t index,HwArAnchor **out_anchor)

说明:根据列表中的索引项,获取一个参考。void HwArAnchorList_create(const HwArSession *session,HwArAnchorList

**out_anchor_list)

说明:创建一个锚点的列表对象。void HwArAnchorList_destroy(HwArAnchorList *anchor_list)

说明:释放一个锚点列表对象的内存,同时释放它所持有的所有锚点参考。void HwArAnchorList_getSize(const HwArSession *session,const HwArAnchorList

*anchor_list,int32_t *out_size)

说明:检索锚点列表中锚点的数量。void HwArAnchorList_addItem(const HwArSession *session,HwArAnchorList

*anchor_list, HwArAnchor *anchor)

说明:将创建的锚点加入锚点列表里。void HwArAnchor_detach(HwArSession *session,HwArAnchor *anchor)

说明:通知 HUAWEI AR Engine停止跟踪并忘记该锚点。但是该函数并不会释放该锚点,这需要通过 HwArAnchor_release()单独来实现。void HwArAnchor_getPose(const HwArSession *session,const HwArAnchor

*anchor,HwArPose *out_pose)

华为机密,未经许可不得扩散 Page 10 , Total 37 第 10 页,共 37 页

Page 11: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书说 明 : 获 取锚点在 世 界 坐 标 空 间 中 的 位 姿 , 这 个 位 姿信息可 能随每 一 次HwArSession_update() 的 调 用 而 变 化 。 并 且 , 该 位 姿 仅 能 在HwArAnchor_getTrackingState() 返 回 值 为 HWAR_TRACKING_STATE_TRACKING

时才能用于渲染。void HwArAnchor_getTrackingState(const HwArSession *session,const HwArAnchor

*anchor,HwArTrackingState *out_tracking_state)

说明:获取跟踪状态,确定是否跟踪。void HwArAnchor_release(HwArAnchor *anchor)

说明:释放指向一个锚点的参考。

2.2.2.3. HwArLightEstimate

描述:真实场景中光照估计信息。 数据类型:

ArLightEstimateState

说明: 跟踪光照估计的有效性。枚举类型。ArLightEstimateState 描述HWAR_LIGHT_ESTIMATE_STATE_NOT_VALID 光照估计无效HWAR_LIGHT_ESTIMATE_STATE_VALID 光照估计有效

ArLightEstimate

说明:一个真实世界光照的估计值(值类型)。 接口:

void HwArLightEstimate_create(const HwArSession *session,HwArLightEstimate

**out_light_estimate)

说明:分配一个光照估计对象。void HwArLightEstimate_destroy(HwArLightEstimate *light_estimate)

说明:释放光照估计对象。void HwArLightEstimate_getPixelIntensity(const HwArSession *session,const

HwArLightEstimate *light_estimate,float *out_pixel_intensity)

说明:获取当前相机视野的像素强度,其范围为 0.0~1.0,0代表黑,1代表白。void HwArLightEstimate_getState(const HwArSession *session,const

HwArLightEstimate *light_estimate,HwArLightEstimateState

*out_light_estimate_state)

华为机密,未经许可不得扩散 Page 11 , Total 37 第 11 页,共 37 页

Page 12: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书说明:获取光照估计的有效性。

2.2.2.4. HwArPlane

描述:保存 HUAWEI AR Engine识别到的真实世界中的平面信息。两个接近平面会被自动合并成一个平面。

数据类型:HwArPlaneType

说明:简单描述一个平面的法向量。枚举类型。HwArPlaneType 描述HWAR_PLANE_HORIZONTAL_UPWARD_FACING 水平面朝向上HWAR_PLANE_HORIZONTAL_DOWNWARD_FACING 水平面朝向下HWAR_PLANE_VERTICAL_FACING 垂直平面HWAR_PLANE_UNKNOWN_FACING 不支持的类型

HwArPlane

说明:描述一个检测到的平面,为长生存期参考类型。 接口:

void HwArPlane_acquireSubsumedBy(const HwArSession *session,const

HwArPlane *plane,HwArPlane **out_subsumed_by)

说明:获取平面的父平面(一个平面可能会被另一个平面合并)。void HwArPlane_getCenterPose(const HwArSession *session,const HwArPlane

*plane,HwArPose *out_pose)

说明:获取检测到的平面中心的位姿。平面局部坐标系为:原点在平面中心, Y+为平面法向量,X+与世界坐标系一致,Z+与世界坐标系一致。void HwArPlane_getExtentX(const HwArSession *session,const HwArPlane

*plane,float *out_extent_x)

说明:获取平面的矩形边界在平面局部坐标系下 X轴的长度。void HwArPlane_getExtentZ(const HwArSession *session,const HwArPlane

*plane,float *out_extent_z)

说明:获取平面的矩形边界在平面局部坐标系 Z轴的长度。void HwArPlane_getPolygon(const HwArSession *session,const HwArPlane

*plane,float *out_polygon_xz)

说明:获取检测平面凸多边形的二维顶点表达,如 [x1, z1, x2, z2, ...],这些值均在平面局部坐标系的 x-z平面中定义,须经 getCenterPose()转换到世界坐标系中。

华为机密,未经许可不得扩散 Page 12 , Total 37 第 12 页,共 37 页

Page 13: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书void HwArPlane_getPolygonSize(const HwArSession *session,const HwArPlane

*plane,int32_t *out_polygon_size)

说明:获取边界多边形的元素数量。顶点的数量为其的 1/2。void HwArPlane_getType(const HwArSession *session,const HwArPlane

*plane,HwArPlaneType *out_plane_type)

说明:获取平面的类型,水平向上或者水平向下。void HwArPlane_isPoseInExtents(const HwArSession *session,const HwArPlane

*plane,const HwArPose *pose,int32_t *out_pose_in_extents)

说明:设置*out_pose_in_extents 为非零值,如果一个指定的位姿在平面矩阵区段内。void HwArPlane_isPoseInPolygon(const HwArSession *session,const HwArPlane

*plane,const HwArPose *pose,int32_t *out_pose_in_polygon)

说明:设置*out_pose_in_polygon 为非零值,如果一个指定的位姿在平面多边形内。2.2.2.5. HwArPoint

描述:描述 HUAWEI AR Engine 跟踪范围内的一个点。 数据类型:

HwArPointOrientationMode

说明:描述 HwArPoint 的方向模式。枚举类型。HwArPointOrientationMode 描述HWAR_POINT_ORIENTATION_INITIALIZED_TO_I

DENTITY 初始值为单位值,随时间可能做略微调整

HWAR_POINT_ORIENTATION_ESTIMATED_SURF

ACE_NORMAL执行 HwArHitResult_getHitPose()

后方向HwArPoint

说明:代表空间中的一个点。 接口:

void HwArPoint_getOrientationMode(const HwArSession *session,const HwArPoint

*point,HwArPointOrientationMode *out_orientation_mode)

说明:获取一个点的方向模式。void HwArPoint_getPose(const HwArSession *session,const HwArPoint

*point,HwArPose *out_pose)

说明:获取一个点的方向。2.2.2.6. HwArPointCloud

描述:包含场景中观察到的三维点及其对应置信度的集合。 华为机密,未经许可不得扩散 Page 13 , Total 37 第 13 页,共 37 页

Page 14: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书 数据类型:

HwArPointCloud

说明:跟踪的三维可视特征点云。参考大数据类型。 接口:

void HwArPointCloud_getData(const HwArSession *session,const HwArPointCloud

*point_cloud,const float **out_point_cloud_data)

说明:获取点云数据的一个指针。点云中的每个点由缓冲中四个连续的值表示,分别为 x,y,z 的坐标位置和一个置信度值。其坐标值都在世界坐标系下。void HwArPointCloud_getNumberOfPoints(const HwArSession *session,const

HwArPointCloud *point_cloud,int32_t *out_number_of_points)

说明:获取点云中点的数量。void HwArPointCloud_getTimestamp(const HwArSession *session,const

HwArPointCloud *point_cloud,int64_t *out_timestamp_ns)

说明:获取检测到当前特征点云的时间,以纳秒为单位。void HwArPointCloud_release(HwArPointCloud *point_cloud)

说明:释放点云的参考。2.2.2.7. HwArPose

描述:位姿数据类,描述从一个坐标系到另一个坐标系的不可变的刚体变换。包含平移向量和旋转向量(四元组)。在 HUAWEI AR Engine 中,其用于描述物体从局部坐标系向世界坐标系的转换,局部坐标通过该类的对象转化成世界坐标系。

数据类型:HwArPose

说明:一个刚体变换的结构体类型。值类型。 接口:

void HwArPose_create(const HwArSession *session,const float

*pose_raw,HwArPose **out_pose)

说明:分配和初始化一个新的位姿对象。pose_raw 指向一个描述位姿中旋转和平移的7 个 浮 点 数 的 向 量 , 等 同 于 安 卓 传 感 器 的 前 7 个 元 素 。 元 素 顺 序 为qx,qy,qz,qw,tx,ty,tz。若 pose_raw 为空,则初始化为单位位姿。void HwArPose_destroy(HwArPose *pose)

说明:销毁一个位姿对象,释放内存。

华为机密,未经许可不得扩散 Page 14 , Total 37 第 14 页,共 37 页

Page 15: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书void HwArPose_getMatrix(const HwArSession *session,const HwArPose *pose,float

*out_matrix_col_major_4x4)

说明:将位姿转换为一个 4x4 变换矩阵。void HwArPose_getPoseRaw(const HwArSession *session,const HwArPose

*pose,float *out_pose_raw)

说明:从一个位姿对象中提取四元素旋转和平移参数。2.2.2.8. HwArTrackable

描述:任何可以被追踪,锚点可以被依附的对象。 数据类型:

HwArTrackableType

说明:异构查询或者更新列表的对象类型。枚举类型。HwArTrackableType 描述HWAR_TRACKABLE_BASE_TRACKABLE 可跟踪类型的基类HWAR_TRACKABLE_NOT_VALID 无效的可跟踪类型HWAR_TRACKABLE_PLANE ArPlane 可跟踪类型的亚型HWAR_TRACKABLE_POINT ArPoint 可跟踪类型的亚型

HwArTrackable

说明:可跟踪类型的基类。HwArTrackableList

说明:一个可跟踪类型的列表。值类型。 接口:

void HwArTrackableList_acquireItem(const HwArSession *session,const

HwArTrackableList *trackable_list,int32_t index,HwArTrackable **out_trackable)

说明:获取列表中对应索引条目的一个参考。void HwArTrackableList_create(const HwArSession *session,HwArTrackableList

**out_trackable_list)

说明:创建一个可跟踪的列表对象。void HwArTrackableList_destroy(HwArTrackableList *trackable_list)

说明:释放可跟踪列表对象的内存,同时释放它所持有的所有锚点参考。void HwArTrackableList_getSize(const HwArSession *session,const

HwArTrackableList *trackable_list,int32_t *out_size)

说明:获取列表中可跟踪对象的数量。

华为机密,未经许可不得扩散 Page 15 , Total 37 第 15 页,共 37 页

Page 16: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书HwArStatus HwArTrackable_acquireNewAnchor(HwArSession

*session,HwArTrackable *trackable,HwArPose *pose,HwArAnchor **out_anchor)

说明:在世界坐标空间的给定位姿处创建一个锚点,并且依附于该 trackable 对象,获得它的一个参考。void HwArTrackable_getAnchors(const HwArSession *session,const HwArTrackable

*trackable,HwArAnchorList *out_anchor_list)

说明:获取依附于该可跟踪对象的所有锚点的集合。void HwArTrackable_getTrackingState(const HwArSession *session,const

HwArTrackable *trackable,HwArTrackingState *out_tracking_state)

说明:获取该 trackable 对象的当前状态。void HwArTrackable_getType(const HwArSession *session,const HwArTrackable

*trackable,HwArTrackableType *out_trackable_type)

说明:获取 trackable 对象的类型。void HwArTrackable_release(HwArTrackable *trackable)

说明:释放一个 trackable 对象的参考。2.2.2.9. HwArEnginesSelector

描述:用于管理HUAWEI AR Engine 服务端。 数据类型:

HwArEnginesType

说明:引擎的类型。 HwArEnginesType 描述HWAR_NONE 无引擎,该值不能用于设定引擎,只能作为返回值HWAR_ENGINE 华为自研引擎 HUAWEI AR Engine

HwArEnginesAvaliblity

说明:设备可支持的引擎的类型。HwArEnginesAvaliblity 描述HWAR_NONE_ENGINES_SUPPORTED 设备不支持任何引擎HWAR_ENGINE_SUPPORTED 支持华为自研引擎 HUAWEI AR Engine

接口:HwArEnginesAvaliblity HwArEnginesSelector_checkAllAvailableEngines(void

*env,void *application_context)

华为机密,未经许可不得扩散 Page 16 , Total 37 第 16 页,共 37 页

Page 17: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书说明:检查设备支持的 AR 引擎的类型,并根据引擎支持的类型进行默认初始化。若无引擎支持,则抛出异常,结束程序。void HwArEnginesSelector_setAREngine(HwArEnginesType ar_options,

HwArEnginesAvaliblity enginesavailabile)

说明:根据 HwArEnginesSelector_checkAllAvailableEngines支持的类型,进行引擎的人为设定。HwArEnginesType HwArEnginesSelector_getCreatedEngine()

说明:返回当前使用的引擎类型。若调用该函数之前,还没有初始化引擎,则返回HWAR_NONE。

2.2.2.10. HwArFace

描述:用于人脸跟踪时返回人脸跟踪的结果,包含人脸位置、姿态、拓扑和微表情。 接口:

void HwArFace_getPose(const HwArSession *session, const HwArFace *face,

HwArPose *pose)

说明:获取人脸Mesh 中心的位姿。void HwArFace_acquireGeometry(const HwArSession *session, const HwArFace

*face, HwArFaceGeometry **geometry)

说明:获取人脸Mesh。void HwArFace_acquireBlendShapes(const HwArSession *session, const HwArFace

*face, HwArFaceBlendShapes **blendshapes)

说明:获取人脸微表情。2.2.2.11. HwArFaceGeometry

描述:用于描述人脸拓扑结构,即人脸Mesh。 接口:

void HwArFaceGeometry_release(HwArFaceGeometry *geometry)

说明:释放该数据。void HwArFaceGeometry_getPointCount(const HwArSession *session, const

HwArFaceGeometry *geometry, int32_t *count)

说明:获取人脸Mesh点的个数。void HwArFaceGeometry_getTriangleCount(const HwArSession *session, const

HwArFaceGeometry *geometry, int32_t *count)

说明:获取人脸Mesh三角面个数。 华为机密,未经许可不得扩散 Page 17 , Total 37 第 17 页,共 37 页

Page 18: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书void HwArFaceGeometry_getVerticesSize(const HwArSession *session, const

HwArFaceGeometry *geometry, int32_t *count)

说明:获取人脸Mesh顶点个数。void HwArFaceGeometry_acquireVertices(const HwArSession *session, const

HwArFaceGeometry *geometry, const float **data)

说明:获取人脸Mesh顶点数组。void HwArFaceGeometry_getTexCoordSize(const HwArSession *session, const

HwArFaceGeometry *geometry, int32_t *count)

说明:获取人脸Mesh纹理坐标点个数。void HwArFaceGeometry_acquireTexCoord(const HwArSession *session, const

HwArFaceGeometry *geometry, const float **data)

说明:获取人脸Mesh纹理坐标点数组。void HwArFaceGeometry_getIndicesSize(const HwArSession *session, const

HwArFaceGeometry *geometry, int32_t *count)

说明:获取人脸Mesh索引的个数。void HwArFaceGeometry_acquireIndices(const HwArSession *session, const

HwArFaceGeometry *geometry, const int32_t **data)

说明:获取人脸Mesh 的索引数组。2.2.2.12. HwArFaceBlendShapes

描述:用于描述微表情,包含若干个表情参数。 接口:

void HwArFaceBlendShapes_release(HwArFaceBlendShapes *blendshapes)

说明:释放该数据。void HwArFaceBlendShapes_acquireData(const HwArSession *session, const

HwArFaceBlendShapes *blendshapes, const float **data)

说明:获取所有表情参数。void HwArFaceBlendShapes_getCount(const HwArSession *session, const

HwArFaceBlendShapes *blendshapes, int32_t *count)

说明:获取表情的个数。void HwArFaceBlendShapes_acquireTypes(const HwArSession *session,

const HwArFaceBlendShapes *blendshapes, const HwArAnimojiBlendShape

**types)

说明:获取微表情的类型。该数组成员与 HwArFaceBlendShapes_acquireData 接口返回的数据成员一一对应。

华为机密,未经许可不得扩散 Page 18 , Total 37 第 18 页,共 37 页

Page 19: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书2.2.2.13. HwArHand

描述:用于人体手部跟踪时返回跟踪结果,包含手部骨骼数据和手势识别结果。 数据类型:

HwArHand

说明:表示一个手势对象,依附于一个 trackable 类。 接口:

void HwArHand_getGestureCoordinateSystem(const HwArSession *session,const

HwArHand *hand, int32_t* gestureCoordinateSystem)

说明:获取坐标系统类型。CoordinateSystemType 描述COORDINATE_SYSTEM_TYPE_2D_IMAGE 2D 图像坐标系COORDINATE_SYSTEM_TYPE_3D_WORLD 3D 世界坐标系

void HwArHand_getHandId(const HwArSession *session,const HwArHand *hand,

int32_t* handId)

说明:获取手的 ID。void HwArHand_getGestureType(const HwArSession *session,const HwArHand

*hand, int32_t* gestureType)

说明:获取手势类型,取值如下表:手势类型 数

值不开启深度流,是否支持 开启深度流,是否支持

手势 0(握拳的手势) 0 支持 支持手势 1(竖食指) 1 支持 不支持手势 2(食指中指张开) 2 不支持 支持手势 5(五指张开) 5 支持 支持手势 6(打电话手势) 6 支持 支持手势 7(love手势) 7 支持 支持手势 8(拇指食指张开) 8 不支持 支持手势 10(比心) 10 支持 不支持其他手势 -1 -- --

华为机密,未经许可不得扩散 Page 19 , Total 37 第 19 页,共 37 页

Page 20: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书

手势 0 手势 1 手势 2 手势 5

手势 6 手势 7 手势 8 手势 10

void HwArHand_getHandType(const HwArSession *session,const HwArHand *hand,

int32_t* handType)

说明:获取手类型,0 表示右手,1 为左手。void HwArHand_getGestureHandBox(const HwArSession *session,const HwArHand

*hand, const float **vct)

说明:获取包裹手部的盒子,基于 OpenGL 坐标系。void HwArHand_getGestureCenter(const HwArSession *session,const HwArHand

*hand, const float **vct)

说明:获取手部中心点坐标。void HwArHand_getGestureActionSize(const HwArSession *session, const

HwArHand *hand, int32_t *count)

说明:获取手势动作的个数。void HwArHand_getGestureAction(const HwArSession *session,const HwArHand

*hand, const int32_t **vct)

说明:获取手势动作(例如左挥、右挥)。void HwArHand_getGestureOrientation(const HwArSession *session, const

HwArHand *hand, const float **vct)

说明:获取手势动作的朝向。

华为机密,未经许可不得扩散 Page 20 , Total 37 第 20 页,共 37 页

Page 21: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书void HwArHand_getSkeletonCoordinateSystem(const HwArSession *session, const

HwArHand *hand, int32_t* skeletonCoordinateSystem)

说明:获取手骨的坐标系统。void HwArHand_getHandSkeletonType(const HwArSession *session,const

HwArHand *hand, int32_t* handType)

说明:获取手骨的类型。void HwArHand_getHandSkeletonCount(const HwArSession *session,const

HwArHand *hand, int32_t *count)

说明:获取手骨的个数。void HwArHand_getHandSkeletonArray(const HwArSession *session,const

HwArHand *hand, const float **vct)

说明:获取手部骨骼点坐标数据。void HwArHand_getHandSkeletonConnectionCount(const HwArSession

*session,const HwArHand *hand, int32_t *count)

说明:获取联接关系个数,一个联接关系表示为两个骨骼点的下标。void HwArHand_getHandSkeletonConnection(const HwArSession *session,const

HwArHand *hand, const int32_t **vct)

说明:获取人体骨骼点联接关系数据,数据序列为:[p0,p1;p0,p3;p0,p5;p1,p2;…]。2.2.2.14. HwArBody

描述:用于人体骨骼跟踪时返回跟踪结果,包含人体骨骼数据。 数据类型:

HwArBody

说明:表示一个肢体对象,依附于一个 trackable 类。 接口:

void HwArBody_getCoordinateSyetemType(const HwArSession *session,const

HwArBody *body, int32_t *out_coordinateSystemType)

说明:获取坐标系统类型。CoordinateSystemType 描述COORDINATE_SYSTEM_TYPE_3D_BODY 相对于人体的 3D 坐标系COORDINATE_SYSTEM_TYPE_3D_WORLD 3D 世界坐标系

void HwArBody_getBodyId(const HwArSession *session,const HwArBody *body,

int32_t *out_personId)

说明:获取人体 ID。 华为机密,未经许可不得扩散 Page 21 , Total 37 第 21 页,共 37 页

Page 22: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书void HwArBody_getSkeletonPointCount(const HwArSession *session,const

HwArBody *body, int32_t *out_pointCount)

说明:获取人体骨骼点个数。void HwArBody_getSkeletonTypes(const HwArSession *session,const HwArBody

*body, const HwArBodySkeletonType **out_skeleton_types)

说明:获取骨骼类型。void HwArBody_getSkeletonPointIsExist2D(const HwArSession *session,const

HwArBody *body, const int32_t **out_skeletonPintIsExist_2D)

说明:获取的人体骨骼点的 2D 坐标是否有效,返回一个 0,1 数组。0 说明骨骼点数据无效,1 说明骨骼点数据有效。void HwArBody_getSkeletonPointIsExist3D(const HwArSession *session,const

HwArBody *body, const int32_t **out_skeletonPintIsExist_3D)

说明:获取的人体骨骼点的 3D 坐标是否有效,返回一个 0,1 数组。0 说明骨骼点数据无效,1 说明骨骼点数据有效。void HwArBody_getSkeletonPoint2D(const HwArSession *session,const HwArBody

*body, const float **out_point2D)

说明:获取二维骨骼跟踪算法下,人体骨骼点坐标数据。void HwArBody_getSkeletonPoint3D(const HwArSession *session, const HwArBody

*body, const float **out_point3D)

说明:获取三维骨骼跟踪算法下,人体骨骼点坐标数据。void HwArBody_getSkeletonConnectionCount(const HwArSession *session, const

HwArBody *body, int32_t *out_connetionCount)

说明:获取联接关系个数,一个联接关系表示为两个骨骼点的下标。 void HwArBody_getSkeletonConnection(const HwArSession *session,const

HwArBody *body, const int32_t **out_skeletonConnection)

说明:获取人体骨骼点联接关系数据。void HwArBody_getSkeletonConfidence(const HwArSession *session,const

HwArBody *body, const float **out_confidence)

说明:获取每一个骨骼点检测的置信度。与骨骼点个数一致的数组,每一个元素为[0,1]范围的置信度值。void HwArBody_getBodyAction(const HwArSession *session, const HwArBody

*body, int32_t *out_bodyAction)

说明:获取人体姿态类型。

华为机密,未经许可不得扩散 Page 22 , Total 37 第 22 页,共 37 页

Page 23: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书void HwArBody_getMaskConfidence(const HwArSession *session, const HwArBody

*body,const float **out_confidence)

说 明 : 获 取遮挡条件下的人体图像置信度, 数组 size 即 CameraConfig 中TextureDimension 的宽*高,每一位值取 0到 1之间。void HwArBody_getMaskDepth(const HwArSession *session, const HwArBody

*body,const short **out_depth)

说明:获取 BodyMask 的深度, size即 TextureDimensions 的宽*高,排序行优先,每 一 位 数 据按照 Depth16 解析(参照 https://developer.android.com/reference/

android/graphics/ImageFormat#DEPTH16)2.2.2.15. HwArEnginesApk

描述:用于管理HUAWEI AR Engine 服务端。 数据类型:

HwArAvailability

说明:描述本设备上 AR 引擎的状态。HwArAvailability 描述HWAR_AVAILABILITY_UNKNOWN_ERROR 未知错误HWAR_AVAILABILITY_UNKNOWN_CHECKING 未知检查类型HWAR_AVAILABILITY_UNKNOWN_TIMED_OUT 超时HWAR_AVAILABILITY_UNSUPPORTED_DEVICE_NOT_C

APABLE设备不兼容

HWAR_AVAILABILITY_SUPPORTED_NOT_INSTALLED 设备支持但是没有安装引擎

HWAR_AVAILABILITY_SUPPORTED_APK_TOO_OLD apk 的版本太老需要更新HWAR_AVAILABILITY_SUPPORTED_INSTALLED 支持并且已经安装

HwArInstallStatus

说明:HwArApk_requestInstall 的返回结果类型。HwArInstallStatus 描述HWAR_INSTALL_STATUS_INSTALLED 已经安装HWAR_INSTALL_STATUS_INSTALL_REQUESTED 未安装

HwArInstallBehavior

说明:控制安装时UI 的行为。 华为机密,未经许可不得扩散 Page 23 , Total 37 第 23 页,共 37 页

Page 24: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书HwArInstallBehavior 描述HWAR_INSTALL_BEHAVIOR_REQUIRE

D引擎是必须项

HWAR_INSTALL_BEHAVIOR_OPTIONAL 引擎对于应用是可选项 接口:

void HwArEnginesApk_checkAvailability(void *env, void *application_context,

HwArAvailability *out_availability)

说明:检查设备是否支持该引擎。bool HwArEnginesApk_isAREngineApkReady(void *env, void *application_context)

说明:检查设备是否已安装华为 AREngine,并且版本与 AREngine SDK兼容。HwArStatus HwArEnginesApk_requestInstall(void *env, void *application_activity,

bool user_requested_install, HwArInstallStatus *out_install_status)

说明:在需要安装的情况下,初始化安装功能。user_requested_install 为 1时,该方法会调用。

2.2.2.16. HwArConfiguration

描述:用于配置 session,设置 LightingMode、PlaneFindingMode、UpdateMode。华为自有引擎还支持 CameraLensFacing,HwArType 的设置。

数据类型:HwArLightEstimationMode

说明:设定光照估计系统的模式。枚举类型。 HwArLightEstimationMode 描述HWAR_LIGHT_ESTIMATION_MODE_AMBIENT_INTENSITY 光照估计允许状态,

能够产生一个单值的强度估计时

HWAR_LIGHT_ESTIMATION_MODE_DISABLED 光照估计无效HwArPlaneFindingMode

说明: 设定平面检测系统的模式。 枚举类型。HwArPlaneFindingMode 描述HWAR_PLANE_FINDING_MODE_DISABLED 平面检测功能无

效HWAR_PLANE_FINDING_MODE_HORIZONTAL 可以检测水平面

华为机密,未经许可不得扩散 Page 24 , Total 37 第 24 页,共 37 页

Page 25: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书HWAR_PLANE_FINDING_MODE_VERTICAL 可以检测垂直面HWAR_PLANE_FINDING_MODE_HORIZONTAL_AND_VERTICA

L可以检测垂直和水平面

HwArUpdateMode

说明:设定 HwArSession_update()的模式,即每一帧更新的更新模式。枚举类型。HwArUpdateMode 描述HWAR_UPDATE_MODE_BLOCKING session 的 update 在新的帧可用

时才返回HWAR_UPDATE_MODE_LATEST_CAMERA_IMAGE update立刻返回,如果没有新

的帧,就返回上一帧HwArType

说明:华为自有引擎支持不同模式的 AR。目前仅一种:HWAR_TYPE_WORLD 为后置基于 SLAM 能力的 AR 能力。HwArCameraLensFacing

说明:描述前后置摄像头的设置。枚举类型。HwArCameraLensFacing 描述HWAR_CAMERA_FACING_REAR 后置摄像头HWAR_CAMERA_FACING_FRONT 前置摄像头

HwArPowerMode

说明:描述省电模式。枚举类型。PowerMode 描述HWAR_POWER_MODE_NORMAL 普通模式HWAR_POWER_MODE_POWER_SAVING 省电模式HWAR_POWER_MODE_ULTRA_POWER_SAVIN

G超级省电模式

HwArFocusMode

说明:描述对焦模式。枚举类型。FocusMode 描述HWAR_FOCUS_MODE_FIXED 固定对焦模式HWAR_FOCUS_MODE_AUTO 自动对焦模式

HwArConfig

说明:一个不透明的会话设置对象。值类型。 接口:

华为机密,未经许可不得扩散 Page 25 , Total 37 第 25 页,共 37 页

Page 26: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书void HwArConfig_create(const HwArSession *session,HwArConfig **out_config)

说明:创建一个配置对象,并且使用一个合理的默认配置进行初始化。void HwArConfig_destroy(HwArConfig *config)

说明:销毁一个配置对象。void HwArConfig_setArType(const HwArSession *session,HwArConfig *config,

HwArType type)

说明:设置 AR 的模式。void HwArConfig_getArType(const HwArSession *session, const HwArConfig

*config,

HwArType *type)

说明:获取当前使用的 AR 模式。void HwArConfig_setCameraLensFacing(const HwArSession *session, HwArConfig

*config, HwArCameraLensFacing facing)

说明:设置摄像头的朝向。void HwArConfig_getCameraLensFacing(const HwArSession *session,

const HwArConfig *config, HwArCameraLensFacing *facing)

说明:获取当前摄像头的朝向。void HwArConfig_getLightEstimationMode(const HwArSession *session,const

HwArConfig *config,HwArLightEstimationMode *light_estimation_mode)

说明:获取当前的光线估计模式。void HwArConfig_setLightEstimationMode(const HwArSession *session,HwArConfig

*config,HwArLightEstimationMode light_estimation_mode)

说明:设置当前的光线估计模式。void HwArConfig_getPlaneFindingMode(const HwArSession *session,const

HwArConfig *config,HwArPlaneFindingMode *plane_finding_mode)

说明:获取当前的平面检测模式。void HwArConfig_setPlaneFindingMode(const HwArSession *session,HwArConfig

*config,HwArPlaneFindingMode plane_finding_mode)

说明:设置当前的平面检测模式。void HwArConfig_getUpdateMode(const HwArSession *session,const HwArConfig

*config,HwArUpdateMode *update_mode)

说明:获取当前 ARSession 的更新模式。void HwArConfig_setUpdateMode(const HwArSession *session,HwArConfig

*config,HwArUpdateMode update_mode)

说明:设置当前 ARSession 的更新模式。 华为机密,未经许可不得扩散 Page 26 , Total 37 第 26 页,共 37 页

Page 27: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书void HwArConfig_getAugmentedImageDatabase(const HwArSession *session, const

HwArConfig *config, HwArAugmentedImageDatabase

*out_augmented_image_database);

说明:获取当前设置的图片数据库。void HwArConfig_getEnableItem (const HwArSession* session, const HwArConfig*

config, uint64_t * item);

说明:获取当前相机支持的能力void HwArConfig_getPowerMode(const HwArSession *session, const HwArConfig

*config, HwArPowerMode *power_mode);

说明:获取当前的省电模式。void HwArConfig_setAugmentedImageDatabase(const HwArSession *session,

HwArConfig *config,const HwArAugmentedImageDatabase

*augmented_image_database);

说明:设置需要识别的图片数据库。void HwArConfig_setEnableItem(const HwArSession* session, HwArConfig* config,

uint64_t * item);

说明:设置相机支持的能力Item值含义 描述ENABLE_NULL = 0 无能力ENABLE_DEPTH = 1 << 0 使能深度能力,默认使能ENABLE_MASK = 1 << 1 使能 Mask 能力

void HwArConfig_setPowerMode(const HwArSession *session, HwArConfig *config,

HwArPowerMode power_mode);

说明:设置省电模式。void HwArConfig_getFocusMode(const HwArSession *session, const HwArConfig

*config, HwArFocusMode *focus_mode);

说明:获取当前的对焦模式void HwArConfig_setFocusMode(const HwArSession *session, HwArConfig

*config,HwArFocusMode focus_mode);

说明:设置对焦模式。2.2.2.17. HwArSceneMesh

描述:用于环境 Mesh 跟踪时返回跟踪结果的类, 结果包括 Mesh顶点坐标,三角形下标等。

接口: 华为机密,未经许可不得扩散 Page 27 , Total 37 第 27 页,共 37 页

Page 28: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书void HwArSceneMesh_getVerticesSize(const HwArSession *session, const

HwArSceneMesh *sceneMesh, int32_t *size)

说明:获取当前环境 mesh 的顶点对应的数组长度。void HwArSceneMesh_ acquireVertices(const HwArSession *session, const

HwArSceneMesh *sceneMesh,const float **data)

说明:获取当前环境 mesh 的顶点数组。void HwArSceneMesh_ getTriangleIndicesSize(const HwArSession *session, const

HwArSceneMesh *sceneMesh, int32_t *size)

说明:获取当前环境 mesh 的三角形面对应的数组长度。void HwArSceneMesh_ acquireTriangleIndices(const HwArSession *session, const

HwArSceneMesh *sceneMesh,const float **data)

说明:获取当前环境 mesh 的三角形面顶点下标的数组。HwArStatus HwArSceneMesh_getSceneDepth(const HwArSession *session,

const HwArSceneMesh *sceneMesh,

const uint16_t **data,

uint32_t *width,

uint32_t *heigth)

说明:获取当前环境 mesh 对应的深度图数据。void HwArSceneMesh_getSceneDepthHeight(const HwArSession *session,

const HwArSceneMesh *sceneMesh,

uint32_t *height)

说明:单独获取当前环境 mesh 对应的深度图高度void HwArSceneMesh_getSceneDepthWidth(const HwArSession *session,

const HwArSceneMesh *sceneMesh,

uint32_t *width)

说明:单独获取当前环境 mesh 对应的深度图宽度void HwArSceneMesh_release(HwArSceneMesh *sceneMesh)

说明:释放当前环境 mesh占用的资源。2.2.2.18. HwArSession

描述:该类管理 HUAWEI AR Engine 的系统状态,是 HUAWEI AR Engine NDK 的重要API。通过该类,开发者可以创建会话,配置会话,启动,暂停和停止,还可以获取每一帧的数据。

数据类型:HwArSession

华为机密,未经许可不得扩散 Page 28 , Total 37 第 28 页,共 37 页

Page 29: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书说明:会话类型。实值类型。

接口:HwArStatus HwArSession_acquireNewAnchor(HwArSession *session,const

HwArPose *pose,HwArAnchor **out_anchor)

说 明 :根据 位 姿 在物理世 界 添 加 一 个 新 的 跟 踪锚点, 该 pose 通 常是来自 于frame.hitTest。HwArStatus HwArSession_checkSupported(const HwArSession *session,const

HwArConfig *config)

说 明 : 测 试 当 前 设 备 是 否 支 持 提 供 的 所 有 配 置 。 若 返 回 值 为HWAR_ERROR_UNSUPPORTED_CONFIGURATION 说明部分配置不支持。HwArStatus HwArSession_configure(HwArSession *session,const HwArConfig

*config)

说明:根据指定的配置来设定会话的设置。注意,一个会话始终会使用默认配置进行初始化,如果配置项与默认选项不同,一定要调用该函数。HwArStatus HwArSession_create(void *env,void *application_context,HwArSession

**out_session_pointer)

说明:试图创建一个新的会话。void HwArSession_destroy(HwArSession *session)

说明:释放会话的所有资源。void HwArSession_getAllAnchors(const HwArSession *session,HwArAnchorList

*out_anchor_list)

说明:获取所有锚点,包括 TrackingState 为 PAUSED,TRACKING 和 STOPPED。void HwArSession_getAllTrackables(const HwArSession

*session,HwArTrackableType filter_type,HwArTrackableList *out_trackable_list)

说明:返回所有可跟踪对象的列表。HwArStatus HwArSession_pause(HwArSession *session)

说明:暂停会话,停止相机预览流,并释放相机,否则其他应用无法使用相机服务。HwArStatus HwArSession_resume(HwArSession *session)

说明:根据输入的配置项恢复或重启会话。有两种使用场景:初始时,启动服务;服务被暂停后重启。void HwArSession_setCameraTextureName(HwArSession *session,uint32_t

texture_id)

华为机密,未经许可不得扩散 Page 29 , Total 37 第 29 页,共 37 页

Page 30: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书说 明 : 设 置 可 用 于 存储相 机预览流数 据 的 openGL textureId , APP 调 用ARSession.update 后 , HUAWEI AR Engine 会 更 新 相 机预览到纹理 textureId 中 。textureId 是 由 glGenTextures 函 数 产 生 , 使 用 时 需 要 指 定GL_TEXTURE_EXTERNAL_OES , 访 问 该 纹 理 的 着 色 器 需 使 用samplerExternalOES采样器。void HwArSession_stop(HwArSession *session)

说明:停止HUAWEI AR Engine ,停止相机预览流,清除平面和锚点数据,并释放相机,终止本次会话。调用后,如果要再次启动,需要新建 ARSession。void HwArSession_setDisplayGeometry(HwArSession *session,int32_t

rotation,int32_t width,int32_t height)

说明:设置相机预览流的比例,坐标缩放比例,旋转角度。HwArStatus HwArSession_update(HwArSession *session,HwArFrame *out_frame)

说明:更新会话的系统状态,包括:接收新的 Camera 帧,更新设备的位置,更新锚点的位置,更新检测到的平面等。该函数的调用有可能影响幕后 OpenGL活动。为了避免不必要的帧缓存溢出或重载,请不要再在渲染一个帧过程中和幕后缓存时调用该函数。如果 ARConfig.UpdateMode 为 BLOCKING,那么该函数会阻塞至有新的帧可用。void HwArSession_getCameraConfig(const HwArSession *session,

HwArCameraConfig *out_camera_config)

说明:获取当前会话的相机配置。2.2.2.19. HwArCamera

描述:提供相机的信息。 数据类型:

HwArCamera

说明:虚拟和物理的相机。长生存期参考类型。 接口:

void HwArCamera_getDisplayOrientedPose(const HwArSession *session,const

HwArCamera *camera,HwArPose *out_pose)

说明:返回当前相机状态下,用户设备在世界坐标空间中的姿态。姿态的位置定义在设备相机位置,然而,其旋转方向匹配显示旋转的方向。使用 OpenGL 相机的约定(+x 为右,+y 为上,-z 为相机观察方向)。

华为机密,未经许可不得扩散 Page 30 , Total 37 第 30 页,共 37 页

Page 31: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书void HwArCamera_getPose(const HwArSession *session,const HwArCamera

*camera,HwArPose *out_pose)

说明:返回当前相机状态下,用户设备在世界坐标空间中的姿态。姿态的平移和旋转不受显示旋转的影响,跟随设备的物理相机。使用 OpenGL 相机的约定(+x 为右,+y

为上,-z 为相机观察方向)。void HwArCamera_getProjectionMatrix(const HwArSession *session,const

HwArCamera *camera,float near,float far,float *dest_col_major_4x4)

说明:计算投影矩阵。void HwArCamera_getTrackingState(const HwArSession *session,const

HwArCamera *camera,HwArTrackingState *out_tracking_state)

说 明 : 返 回 相 机 当 前 姿 态 的 状 态 。 只 有 在 状 态 值 为HWAR_TRACKING_STATE_TRACKING时,相机的姿态才可以正常使用。void HwArCamera_getViewMatrix(const HwArSession *session,const HwArCamera

*camera,float *out_col_major_4x4)

说明:返回当前帧的视口矩阵。void HwArCamera_release(HwArCamera *camera)

说明:释放相机的参考。2.2.2.20. HwArCameraConfig

描述:提供相机的配置信息。 数据类型:

HwArCameraConfig

说明:虚拟和物理的相机配置。长生存期参考类型。 接口:

void HwArCameraConfig_create(const HwArSession *session, HwArCameraConfig

**out_camera_config)

说明:创建当前相机的配置。void HwArCameraConfig_destroy(HwArCameraConfig *camera_config)

说明:释放相机配置使用到的物理内存。void HwArCameraConfig_getImageDimensions(const HwArSession *session, const

HwArCameraConfig *camera_config, int32_t *out_width, int32_t *out_height)

说明:获取相机送到CPU流处理的图像帧尺寸。void HwArCameraConfig_getTextureDimensions(const HwArSession *session, const

HwArCameraConfig *camera_config, int32_t *out_width, int32_t *out_height)

华为机密,未经许可不得扩散 Page 31 , Total 37 第 31 页,共 37 页

Page 32: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书说明:获取相机送到GPU流处理的图像帧尺寸。

2.2.2.21. HwArFrame

描述:由 ARSession.update 创建,每一帧的状态。 数据类型:

HwArFrame

说明:一次更新后的世界状态。值类型。 接口:

void HwArFrame_acquireCamera(const HwArSession *session,const HwArFrame

*frame,HwArCamera **out_camera)

说明:返回会话中的相机对象。void HwArFrame_acquireCameraImage(const HwArSession *session,const

HwArFrame *frame,HwArCamera **out_image)

说 明 : 获 取 当 前 帧 对 应 的 图 像 。 返 回 图 像 格 式 为AIMAGE_FORMAT_YUV_420_888。void HwArFrame_acquireDepthImage(const HwArSession *session,const

HwArFrame *frame,HwArCamera **out_image)

说明:获取当前帧对应的深度图像。返回图像格式为 DEPTH16。HwArStatus HwArFrame_acquireImageMetadata(const HwArSession *session,const

HwArFrame *frame,HwArImageMetadata **out_metadata)

说明:从当前相机图像获得相机的元数据。HwArStatus HwArFrame_acquirePointCloud(const HwArSession *session,const

HwArFrame *frame,HwArPointCloud **out_point_cloud)

说明:获取当前三维点云的集合。void HwArFrame_create(const HwArSession *session,HwArFrame **out_frame)

说明:分配一个新的 ArFrame 对象,并将其指针保存在*out_frame。void HwArFrame_destroy(HwArFrame *frame)

说明:释放一个 ArFrame 对象及其所持有的参考。void HwArFrame_getDisplayGeometryChanged(const HwArSession *session,const

HwArFrame *frame,int32_t *out_geometry_changed)

说明:检测与前一个 Frame 相比,设备屏幕是否发生旋转或者视口几何是否发生变化。如果变化了 , 应 用需要重新 调 用 getProjectionMatrix 获 取 新 的投影矩阵, 调 用transformDisplayUvCoords 获取新的纹理矩阵。

华为机密,未经许可不得扩散 Page 32 , Total 37 第 32 页,共 37 页

Page 33: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书void HwArFrame_getLightEstimate(const HwArSession *session,const HwArFrame

*frame,HwArLightEstimate *out_light_estimate)

说明:返回光照估计值。void HwArFrame_getTimestamp(const HwArSession *session,const HwArFrame

*frame,int64_t *out_timestamp_ns)

说明:获取当前帧的时间戳(以纳秒为单位)。void HwArFrame_getUpdatedAnchors(const HwArSession *session,const

HwArFrame *frame,HwArAnchorList *out_anchor_list)

说明:获取被会话更新后的锚点。void HwArFrame_getUpdatedTrackables(const HwArSession *session,const

HwArFrame *frame,HwArTrackableType filter_type,HwArTrackableList

*out_trackable_list)

说明:获取会话更新后,指定类型的可跟踪对象的集合。HwArstatus HwArFrame_acquireSceneMesh(const HwArSession *session,const

HwArFrame *frame,HwArSceneMesh **out_scene_mesh)

说明:获取当前帧对应的环境 mesh 对象。void HwArFrame_hitTest(const HwArSession *session,const HwArFrame

*frame,float pixel_x,float pixel_y,HwArHitResultList *hit_result_list)

说明:从摄像头发射一条射线,该射线的方向由屏幕上的点 (pixel_x, pixel_y)确定。射线与系统跟踪的平面或者是点云中的点碰撞(如果有的话),从而产生交点。按照交点与设备的距离从近到远进行排序。void HwArFrame_transformDisplayUvCoords(const HwArSession *session,const

HwArFrame *frame,int32_t num_elements,const float *uvs_in,float *uvs_out)

说 明 : 调 整纹理坐 标 , 以便可 以正确地显示相 机捕捉到的背景图片。 如果HwArFrame_hasDisplayGeometryChanged()返回 true,就需要更新纹理坐标,使用新纹理坐标进行贴图;否则不需要更新。void HwArFrame_getMappingState(const HwArSession *session,const HwArFrame

*frame,HwArWorldMappingState *out_mapping_state)

说明:返回当前平面地图的构建状态,如果当前地图处于初始化或者不可用状态,地图是无法保存的。

HwArWorldMappingState 平面构建状态HWAR_WORLD_MAPPING_NOT_AVAILABL

E初始化状态

HWAR_WORLD_MAPPING_LIMITED 地图未可用 华为机密,未经许可不得扩散 Page 33 , Total 37 第 33 页,共 37 页

Page 34: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书HWAR_WORLD_MAPPING_EXTENDING 附近区域地图已建好,当前位置地图

正在建HWAR_WORLD_MAPPING_MAPPED 当前视角范围内的局部地图已建好

void HwArFrame_getAlignState(const HwArSession *session,const HwArFrame

*frame,HwArAlignState *out_align_state)

说明:返回当前坐标系与所加载地图的坐标系的对齐状态,只有对齐成功之后,才能正确加载联机锚点。

HwArAlignState 坐标系对齐状态HWAR_ALIGN_NONE 初始化状态HWAR_ALIGN_FAILED 对齐失败HWAR_ALIGN_PROCESSING 正在对齐HWAR_ALIGN_SUCCESS 对齐成功

2.2.2.22. HwArHitResult

描述:定义了射线与真实世界的碰撞交点。 数据类型:

HwArHitResult

说明:单个可跟踪碰撞。HwArHitResultList

说明:一个碰撞测试结果的列表。 接口:

void HwArHitResultList_create(const HwArSession *session,HwArHitResultList

**out_hit_result_list)

说明:创建一个碰撞结果的列表对象。void HwArHitResultList_destroy(HwArHitResultList *hit_result_list)

说明:释放碰撞结果列表对象,及其持有的所有可跟踪参考。void HwArHitResultList_getItem(const HwArSession *session,const

HwArHitResultList *hit_result_list,int32_t index,HwArHitResult *out_hit_result)

说明:从碰撞结果列表中复制特定索引的对象。void HwArHitResultList_getSize(const HwArSession *session,const

HwArHitResultList *hit_result_list,int32_t *out_size)

说明:获取碰撞结果列表中碰撞结果的数量。HwArStatus HwArHitResult_acquireNewAnchor(HwArSession

*session,HwArHitResult *hit_result,HwArAnchor **out_anchor)

华为机密,未经许可不得扩散 Page 34 , Total 37 第 34 页,共 37 页

Page 35: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书说明:在碰撞位置创建一个新的锚点。void HwArHitResult_acquireTrackable(const HwArSession *session,const

HwArHitResult *hit_result,HwArTrackable **out_trackable)

说明:获取可跟踪的碰撞的参考。void HwArHitResult_create(const HwArSession *session,HwArHitResult

**out_hit_result)

说明:分配一个空的碰撞结果对象。void HwArHitResult_destroy(HwArHitResult *hit_result)

说明:销毁一个碰撞结果对象,及其持有的任何可跟踪参考。void HwArHitResult_getDistance(const HwArSession *session,const HwArHitResult

*hit_result,float *out_distance)

说明:返回相机与碰撞点的距离。单位为米。void HwArHitResult_getHitPose(const HwArSession *session,const HwArHitResult

*hit_result,HwArPose *out_pose)

说明:获取交点的位姿。其平移向量是点在真实世界中的坐标,其旋转分量根据其碰撞的点的不同类型(与平面的交点、与点云的交点)定义不同。当射线与平面碰撞时,局部坐标系为:X+垂直于射线,平行于跟踪平面;Y+是跟踪平面的法向量;Z+平行于平面,大致指向摄像头。当射线与点云中的点碰撞时,局部坐标系为: X+垂直于射线,指向右侧(从设备的角度观察),Y+向上,Z+大致指向摄像头。

2.2.2.23. HwArImageMetadata

描述:提供对相机图像捕获结果metadata 的访问。 数据类型:

HwArImageMetadata

相机捕获的原始数据。 接口:

HwArStatus HwArFrame_acquireImageMetadata(const HwArSession *session,

const HwArFrame *frame, HwArImageMetadata **out_metadata)

说明:获取相机的 Metadata。void HwArImageMetadata_getNdkCameraMetadata(const HwArSession *session,

const HwArImageMetadata *image_metadata, const HwACameraMetadata

**out_ndk_metadata)

说明:获取当前相机图像的元数据。ACameraMetadata是 Android NDK 的结构体。包含 NdkCameraMetadata.h,可以使用该类型。

华为机密,未经许可不得扩散 Page 35 , Total 37 第 35 页,共 37 页

Page 36: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书void HwArImageMetadata_release(HwArImageMetadata *metadata)

说明:释放指向元数据的参考。2.2.2.24. HwArAugmentedImage

描述:用于 Image 图像识别和跟踪时返回跟踪结果,派生自 ARTrackableBase。 接口:

void HwArAugmentedImage_getCenterPose(const HwArSession *session, const

HwArAugmentedImage *augmented_image, HwArPose *out_pose);

说明:获取识别到图片中心点在世界坐标系中的位置信息void HwArAugmentedImage_getExtentX(const HwArSession *session, const

HwArAugmentedImage *augmented_image, float *out_extent_x);

说明:获取以图像为中心的坐标系沿 X轴测试物理图片的估计宽度(以米为单位)void HwArAugmentedImage_getExtentZ(const HwArSession *session, const

HwArAugmentedImage *augmented_image, float *out_extent_z);

说明:获取以图像为中心的坐标系沿 Z轴测试物理图片的估计高度(以米为单位)void HwArAugmentedImage_getIndex(const HwArSession *session, const

HwArAugmentedImage *augmented_image, int32_t *out_index);

说明:获取识别到图片配置的 Index(以 0 开始,通过 ImageDatabase 配置顺序增加)void HwArAugmentedImage_acquireName(const HwArSession *session, const

HwArAugmentedImage *augmented_image, char **out_augmented_image_name);

说明:获取识别到图片配置的名字2.2.2.25. HwArAugmentedImageDatabase

描述:包含一系列用于识别和跟踪的 Image 图像,图像数据库可以使用随 SDK 包发布的命 令 行 工 具 生 成 , 也 可 以 在 apk 运 行 时 动 态 添 加 image 图 片 到AugmentedImageDatabase 数据库中。

接口:void HwArAugmentedImageDatabase_create(const HwArSession *session,

HwArAugmentedImageDatabase **out_augmented_image_database);

说明: 创建一个图片数据库HwArStatus HwArAugmentedImageDatabase_deserialize(const HwArSession

*session, const uint8_t *database_raw_bytes, int64_t database_raw_bytes_size,

HwArAugmentedImageDatabase **out_augmented_image_database);

说明:使用图片数据流创建图片数据库 华为机密,未经许可不得扩散 Page 36 , Total 37 第 36 页,共 37 页

Page 37: Huawei Technologies Coobs.cn-north-1.myhwclouds.com/consumer/docattach… · Web view手势6 手势7 手势8 手势10 void HwArHand_getHandType(const HwArSession *session,const HwArHand

HuaweiAR SDK 接口说明书void HwArAugmentedImageDatabase_serialize(const HwArSession *session, const

HwArAugmentedImageDatabase *augmented_image_database, uint8_t

**out_image_database_raw_bytes, int64_t *out_image_database_raw_bytes_size);

说明:获取数据库中图片的数据流HwArStatus HwArAugmentedImageDatabase_addImage(const HwArSession

*session, HwArAugmentedImageDatabase *augmented_image_database, const

char *image_name, const uint8_t *image_grayscale_pixels, int32_t

image_width_in_pixels,

int32_t image_height_in_pixels, int32_t image_stride_in_pixels, float

image_width_in_meters, int32_t *out_index);

说明:添加一个未知物理大小的 Bitmap 图片到数据库中void HwArAugmentedImageDatabase_getNumImages(const HwArSession *session,

const HwArAugmentedImageDatabase *augmented_image_database, int32_t

*out_num_images);

说明:获取数据库中图片的数目void HwArAugmentedImageDatabase_destroy(HwArAugmentedImageDatabase

*augmented_image_database);

说明:销毁一个图片数据库

华为机密,未经许可不得扩散 Page 37 , Total 37 第 37 页,共 37 页