tencent cloud

腾讯特效 SDK

动态与公告
产品动态
关于腾讯特效 SDK V3.5 版本更新公告
关于腾讯特效 SDK V3.0 版本相关接口及素材变更公告
产品简介
产品概述
产品功能
基本概念
产品优势
应用场景
购买指南
价格总览
购买流程
欠费退费说明
新手指引
Demo 体验
免费测试
License 指引
移动端 License 新增与续期
PC 端 License 新增与续期
Web端 License 新增与续期
常见问题
SDK 下载
功能说明
SDK 下载
版本历史
SDK 集成指引(无 UI)
通用集成腾讯特效
原子能力集成指引
SDK 集成指引(含 UI)
通用集成腾讯特效
直播 SDK 集成腾讯特效
TRTC SDK 集成腾讯特效
短视频 SDK 集成腾讯特效
Avatar 虚拟人集成指引
API 文档
iOS
Android
Flutter
Web
功能实践
SDK 包瘦身
SDK 集成问题排查
性能调优
效果调优
素材使用
美颜参数说明
美颜场景推荐参数
短视频企业版迁移指引
第三方推流接入美颜(Flutter)
小程序美颜特效实践
素材制作工具使用
Web 美颜特效
产品概述
快速上手
SDK 接入
API 文档
控制台指南
Demo 体验
内置素材总览
实践教程
常见问题
常见问题
通用类相关
技术类相关
License 相关
旧版文档
美颜场景推荐参数
美颜参数表
一分钟集成 TRTC
一分钟集成直播
TE SDK 政策
隐私协议
数据处理和安全协议
联系我们

Android

PDF
聚焦模式
字号
最后更新时间: 2023-05-18 16:33:57

功能说明

输入相机的 openGL 纹理,实时输出身体3D数据。您可以利用这些3D数据做一进步的开发,例如传到 Unity 中驱动您的模型。

Android 集成指引

首先需要集成腾讯特效SDK,具体请参见 独立集成腾讯特效

接口调用

1. 打开功能开关(XmagicApi.java)。
public void setFeatureEnableDisable(String featureName, boolean enable);
featureName 填 XmagicConstant.FeatureName.BODY_3D_POINT
2. 设置数据回调(XmagicApi.java)。
2.6.0及之前版本使用如下方法
void setYTDataListener(XmagicApi.XmagicYTDataListener ytDataListener)

public interface XmagicYTDataListener {
void onYTDataUpdate(String data)
}

onYTDataUpdate 返回 JSON 结构的 string 数据,其示例如下:
"face_info" 里是人脸相关的数据,与身体 3D 数据无关,可以忽略。
"body_3d_info" 里各字段说明见下文。
3.0.0版本使用如下方法
void setAIDataListener(XmagicApi.OnAIDataListener aiDataListener)

public interface OnAIDataListener {
void onFaceDataUpdated(List<TEFaceData> faceDataList);
void onHandDataUpdated(List<TEHandData> handDataList);
void onBodyDataUpdated(List<TEBodyData> bodyDataList);
void onAIDataUpdated(String data); //此方法是3.0.0版本新增方法,数据结构和之前XmagicYTDataListener接口的数据保持一致
}

onAIDataUpdated 返回 JSON 结构的 string 数据,其示例如下:
"face_info" 里是人脸相关的数据,与身体 3D 数据无关,可以忽略。
"body_3d_info" 里各字段说明见下文。

身体点位及点位数据说明

标准 SMPL 点位定义



标准 SMPLX 手部骨骼点位定义




SDK 输出的 JSON 数据示例如下:



body_3d_info 里各个字段说明如下:
imageWidth,imageHeight:输入给SDK的图像的宽高
items:数组,目前只有一个元素
index:保留位,目前可以忽略它
pose:
(1) [0,2]位置,人体位置,以相机为中心,人体根骨骼的3D位置xyz
(2)[3,12]位置,人体形态,10个float数,以标准SMPL的10套不同mesh为基底,组合得到人体型的估计
(3)[13]位置,Focal_length,固定值为5000
(4)[14,29]位置,OpenGL投影矩阵,基于focal_length得到的在3D空间中渲染物体的投影矩阵。4X4投影矩阵在算法内部计算方式:
matrix={
2 * focal_length / img_wid, 0, 0, 0,
0, 2 * focal_length / img_hei, 0,0,
0,0, (zf + zn) / (zn - zf), -1,
0, 0, (2.0f * zf * zn) / (zn - zf), 0};
}
(5)[30,33]位置,接地数据,脚是否踩地,左脚跟、左脚尖、右脚跟、右脚尖
position_x,position_y,position_z:
(1)[0,23]位置,人体2D点位,见上文的图1, 2D点的 position_z 都是0
(2)[24,47]位置,人体3D点位,见上文的图1
rotation
(1)[0,23]位置,人体骨骼旋转四元数,每个四元数的属性顺序是 wxyz
(2)[25,54]位置,手部骨骼旋转四元数,左手15个,右手15个,每个四元数的属性顺序是 wxyz

骨骼的不同命名方式及对应关系

序号
Bone Names
Bone Names 2
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
"pelvis",
"left_hip",
"right_hip",
"spine1",
"left_knee",
"right_knee",
"spine2",
"left_ankle",
"right_ankle",
"spine3",
"left_foot",
"right_foot",
"neck",
"left_collar",
"right_collar",
"head",
"left_shoulder",
"right_shoulder",
"left_elbow",
"right_elbow",
"left_wrist",
"right_wrist",
"left_hand"
"right_hand"
"Hips"
"LeftUpLeg"
"RightUpLeg"
"Spine"
"LeftLeg"
"RightLeg"
"Spine1"
"LeftFoot"
"RightFoot"
"Spine2"
""
""
"Neck"
"LeftShoulder"
"RightShoulder"
"Head"
"LeftArm"
"RightArm"
"LeftForeArm"
"RightForeArm"
"LeftHand"
"RightHand"
""
""
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
"left_index1"
"left_index2"
"left_index3"
"left_middle1"
"left_middle2"
"left_middle3"
"left_pinky1"
"left_pinky2"
"left_pinky3"
"left_ring1"
"left_ring2"
"left_ring3"
"left_thumb1"
"left_thumb2"
"left_thumb3
IndexFinger1_L
IndexFinger2_L
IndexFinger3_L
MiddleFinger1_L
MiddleFinger2_L
MiddleFinger3_L
PinkyFinger1_L
PinkyFinger2_L
PinkyFinger3_L
RingFinger1_L
RingFinger2_L
RingFinger3_L
ThumbFinger1_L
ThumbFinger2_L
ThumbFinger3_L
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
"right_index1"
"right_index2"
"right_index3"
"right_middle1"
"right_middle2"
"right_middle3"
"right_pinky1"
"right_pinky2"
"right_pinky3"
"right_ring1"
"right_ring2"
"right_ring3"
"right_thumb1"
"right_thumb2"
"right_thumb3"
IndexFinger1_R
IndexFinger2_R
IndexFinger3_R
MiddleFinger1_R
MiddleFinger2_R
MiddleFinger3_R
PinkyFinger1_R
PinkyFinger2_R
PinkyFinger3_R
RingFinger1_R
RingFinger2_R
RingFinger3_R
ThumbFinger1_R
ThumbFinger2_R
ThumbFinger3_R


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈