跳到主要内容

SDK 接口说明

目前DLL整体对外暴露8个端口,各个SDK是对DLL接口的封装,可自行查看 cpp sdk中的 include/rebocap_ws_sdk/rebocap_ws_sdk.h 头文件查看。

SDK 输出的数值类型为四元数,可以支持多种坐标空间输出【默认的 opengl右手坐标系、blender、unity、ue】,输出的位移单位是 米。

其中python暂未接入 rebocap_ws_sdk_calculate_foot_vertex 接口

接口说明​

  • rebocap_ws_sdk_new
创建 sdk 实例,传入参数包括
1. 坐标系空间,具体支持空间可在各个sdk中找到,这里不赘述。
2. 是否使用全局坐标系,传入0则使用局部坐标系,局部坐标系是相对于父骨骼的坐标系,所有的旋转均是相对于 tpose 的旋转,如对旋转不清楚,可参考 blender、unity、以及ue的源码,其中unity的旋转相对更容易理解。

返回值:
返回 sdk 对象实例指针
  • rebocap_ws_sdk_release
释放 sdk 实例对象,传输参数为 实例指针
  • rebocap_ws_sdk_open
开启websocket client,连接到 websocket 端口,具体用法和返回值说明请查看 sdk 代码
  • rebocap_ws_sdk_close
关闭websocket client,并断开连接,具体用法见sdk
  • rebocap_ws_sdk_set_pose_msg_callback
注册消息回调,这里只有用户进行动作校准以后,websocket才会有数据吐出,帧率为 60帧每秒,具体用法见 sdk 代码
关节顺序请参考24个骨骼名称
  • rebocap_ws_sdk_set_exception_close_callback
websocket 异常关闭回调注册,具体用法见 sdk 代码
  • rebocap_ws_sdk_get_last_msg
除了回调的形式,这里也可以直接获取最后一条动作消息,数据格式和回调保持一致。
  • rebocap_ws_sdk_calculate_foot_vertex
这个接口主要用于注册脚底的接触点以及身体骨架到rebocap中
需要传入身体骨架数据(各个关节点的位置,具体顺序和smpl顺序保持一致)
如果需要dll自动计算接触点位置,那么需要传入脚底mesh,也可以自行传入脚底接触点位置信息(每只脚前后3个点位,共计12个点位),那么dll将不会自动计算而是采用传入数值
注意,这里的单位是米,坐标是全局坐标,另外需要采用 opengl 坐标系,如果不是需要传入转换参数,具体用法请参考 unity demo 以及 ue 插件的使用

这个接口相对比较复杂,请具备足够开发能力或者能够完全理解 unity demo中的代码或者能够完全理解 UE 插件代码用户使用,python版本不暴露这个接口,如有需要,可以自行从 cpp sdk 中或者原始 dll 中,封装 python 接口即可。

大部分用户,开发插件可以自行上传 vrm 模型到 rebocap 客户端中,效果一样。对于脚底接触点位的理解,可以参考 blender 接入中,导出骨架的说明。

24个骨骼名称​

对应 mixamo 和 smpl 规范名称如下,共计24个骨骼,参考如下,比如第0号下标骨骼即为屁股,也就是对应腰部节点。 其中,左右脚趾、左右手指对应的关节由于没有对应跟踪器节点,因此输出 local 旋转为0,如果采用 global 旋转,那么输出的旋转值和父节点保持一致。

  • mixamo对应的名称
joints_mixamo = [
"mixamorig:Hips",
"mixamorig:LeftUpLeg",
"mixamorig:RightUpLeg",
"mixamorig:Spine",
"mixamorig:LeftLeg",
"mixamorig:RightLeg",
"mixamorig:Spine1",
"mixamorig:LeftFoot",
"mixamorig:RightFoot",
"mixamorig:Spine2",
"mixamorig:LeftToeBase",
"mixamorig:RightToeBase",
"mixamorig:Neck",
"mixamorig:LeftShoulder",
"mixamorig:RightShoulder",
"mixamorig:Head",
"mixamorig:LeftArm",
"mixamorig:RightArm",
"mixamorig:LeftForeArm",
"mixamorig:RightForeArm",
"mixamorig:LeftHand",
"mixamorig:RightHand",
"mixamorig:LeftHandIndex1",
"mixamorig:RightHandIndex1"
]
  • smpl 规范对应的名称为
joints_smpl = [
"Pelvis",
"L_Hip",
"R_Hip",
"Spine1",
"L_Knee",
"R_Knee",
"Spine2",
"L_Ankle",
"R_Ankle",
"Spine3",
"L_Foot",
"R_Foot",
"Neck",
"L_Collar",
"R_Collar",
"Head",
"L_Shoulder",
"R_Shoulder",
"L_Elbow",
"R_Elbow",
"L_Wrist",
"R_Wrist",
"L_Hand",
"R_Hand"
]

SDK 下载

python SDK​

适用于 python3.6~python3.12

download python sdk v2

python sdk v2 更新内容:

修复get_last_msg接口造成的死锁问题 增加所有python版本

C# SDK​

具体请查看下载文件中的 README.md

用法上,可以参考 Unity 项目

download csharp sdk v2

c# sdk v2 更新内容:

修复get_last_msg接口造成的死锁问题

CPP SDK​

具体请查看下载文件中的 README.md

用法上,可以参考 UE 项目

download cpp sdk v3

c++ sdk v3 更新内容:

修复get_last_msg接口造成的死锁问题