为什么yaw_angle 和 roll_angle都是0
时间: 2024-02-18 13:02:26 浏览: 82
非常抱歉,我的回答有误。由于我之前没有完整的了解您的需求,导致我的回答存在问题。在此向您道歉。
如果您的 Mediapipe 计算得到的角度是肩部到肘部到手臂的角度,您需要确定需要旋转的骨骼节点,以及该骨骼节点的坐标系。如果您需要将该角度应用于 UE4 中的骨骼节点,您需要将该角度转换为 UE4 中骨骼节点的旋转角度。
在 UE4 中,骨骼节点的旋转角度使用四元数(FQuat)来表示,而不是欧拉角。因此,您需要将通过 Mediapipe 计算得到的角度值转换为四元数,然后将其赋值给 UE4 中的骨骼节点的旋转属性。
以下是一个可能的 C++ 代码示例,用于将 Mediapipe 计算得到的角度转换为 UE4 中的骨骼节点的旋转属性:
```c++
// 假设您已经获取了mediapipe计算得到的肩部到肘部到手臂的角度值,存储在shoulder_elbow_wrist_angle变量中
// 假设您需要对名为"right_upper_arm"的骨骼节点进行旋转,节点指针存储在right_upper_arm_bone变量中
// 将角度转换为弧度
float angle_in_radians = shoulder_elbow_wrist_angle * PI / 180.0f;
// 根据需要旋转的骨骼节点的坐标系来确定每个分量的旋转角度
float pitch_angle = 0.0f; // 俯仰角
float yaw_angle = angle_in_radians; // 偏航角
float roll_angle = 0.0f; // 翻滚角
// 将欧拉角转换为四元数
FQuat rotation_quat = FQuat(FRotator(pitch_angle, yaw_angle, roll_angle));
// 将计算出的四元数赋值给骨骼节点的旋转属性
right_upper_arm_bone->SetRelativeRotation(rotation_quat);
```
需要注意的是,以上代码示例仅供参考,具体的实现方式可能会因为您的具体场景和需求而有所不同。
阅读全文