You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过UE Remote Control插件与Python控制MetaHuman的Control Rig骨骼

UE5 通过 Remote Control 插件用 Python 控制 MetaHuman 指定骨骼解决方案

一、UE 端前置配置

  • 确认 MetaHuman Actor 下的骨骼网格体组件(一般命名为Body_SKM_Matchmove或Face_SKM_Matchmove)已开启Allow Runtime Bone Transform Modification属性
  • 项目设置中开启 Remote Control 插件的 Web API 服务,确认端口、局域网访问权限正常,防火墙放行对应端口
  • 提前记录要控制的骨骼准确名称,可在 Persona 编辑器的骨骼树中直接复制,比如右肩锁骨为clavicle_r、左肩为clavicle_l
  • 若调用后骨骼无变化,优先检查动画蓝图是否覆盖了骨骼变换:可在动画蓝图中添加对应骨骼的 Modify Bone 节点,或临时将骨骼网格体组件的动画模式改为「无动画」验证调用是否生效

二、核心调用代码

你之前的代码是调用 Actor 级别的位移方法,控制骨骼需要调用骨骼网格体组件的SetBoneRotationByName(控制旋转)或SetBoneLocationByName(控制位移)方法,示例代码如下:

import requests

# 请替换为你实际的UE端配置
UE_IP = "192.168.1.100"  # 运行UE的设备局域网IP
UE_PORT = "30010"        # Remote Control设置的Web API端口
# 路径格式:/Game/[关卡资源路径]:PersistentLevel.[MetaHuman Actor名].[骨骼网格体组件名]
OBJECT_PATH = "/Game/Map/TestLevel:PersistentLevel.MH_TestChar.Body_SKM_Matchmove"
TARGET_BONE = "clavicle_r"  # 要控制的骨骼名

# 动捕获取的旋转值,注意适配UE和OpenCV的坐标系映射
pitch = 12.0
yaw = 4.5
roll = 0.0

to_send = {
    "objectPath": OBJECT_PATH,
    "functionName": "SetBoneRotationByName",
    "parameters": {
        "BoneName": TARGET_BONE,
        "NewRotation": {"Pitch": pitch, "Yaw": yaw, "Roll": roll},
        "BoneSpace": 2,  # 0=世界坐标系, 1=组件坐标系, 2=骨骼本地坐标系
        "bTeleport": True
    },
    "generateTransaction": False
}

response = requests.put(f"http://{UE_IP}:{UE_PORT}/remote/object/call", json=to_send)
# 可打印返回值排查调用错误
print(response.status_code, response.text)

三、关键注意事项

  • objectPath必须指向骨骼网格体组件,不能直接指向MetaHuman Actor,路径可通过UE编辑器开发者工具或Remote Control的对象查询接口确认正确性
  • 旋转/位移的轴向映射需要和你之前控制Actor位移的逻辑保持一致,适配UE左手坐标系和OpenCV右手坐标系的差异
  • 高频调用时可以把generateTransaction设为False,减少UE端性能消耗

内容的提问来源于stack exchange,提问作者SolveItPlanet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:45:04