tencent cloud

文档反馈

最后更新时间: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
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持