如何通过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
相关产品推荐
相关产品推荐

