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 實例,傳入參數包括
  • 坐標系空間,具體支持空間可在各個sdk中找到,這裡不贅述。
  • 是否使用全局坐標系,傳入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對應的名稱
```python
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接口造成的死鎖問題

results matching ""

    No results matching ""