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

Blender导出关键帧至Unreal Engine旋转不匹配问题求助

Blender旋转数据导出到UE5不匹配的解决方案

核心差异说明

Blender用右手坐标系,Z轴向上,向前方向是-Y;UE5是左手坐标系,Z轴向上,向前是X轴,这是旋转效果不符的根本原因,单纯翻转轴没用,得对应调整旋转数据的映射和顺序。

具体解决方法

1. 欧拉角的正确转换

  • 不能只简单翻转坐标系,要调整轴映射+旋转顺序:
    • Blender的欧拉角(X,Y,Z)对应UE5的(-X, Y, -Z),同时Blender默认旋转顺序是ZYX,UE5默认是XYZ,导出和加载时要统一旋转顺序
    • Blender导出时的处理代码示例:
      import math
      import mathutils
      
      # 获取物体世界空间欧拉角
      euler = obj.rotation_euler
      # 转换为UE5兼容的角度值(转弧度,同时翻转X、Z轴)
      ue_x = math.radians(-math.degrees(euler.x))
      ue_y = math.radians(math.degrees(euler.y))
      ue_z = math.radians(-math.degrees(euler.z))
      # 导出时记录旋转顺序为XYZ
      
    • UE加载时,用Make Rotator节点输入转换后的X/Y/Z值,确保旋转顺序设为XYZ。

2. 四元数转换方案

  • 四元数直接导出会因为左右手坐标系差异反向,转换规则如下:
    • Blender四元数(w,x,y,z)转UE5四元数:(w, -x, y, -z)
    • Blender导出代码示例:
      quat = obj.rotation_quaternion
      ue_quat = (quat.w, -quat.x, quat.y, -quat.z)
      
    • UE中用Make Quat节点创建四元数,再转成Rotator应用到物体上。

3. 世界矩阵完整转换

  • 用世界矩阵的话,要先做坐标系转换:
    import mathutils
    
    # 构建Blender转UE的坐标系转换矩阵(翻转X、Z轴)
    convert_mat = mathutils.Matrix([
        [-1, 0, 0, 0],
        [0, 1, 0, 0],
        [0, 0, -1, 0],
        [0, 0, 0, 1]
    ])
    # 转换世界矩阵
    ue_world_mat = convert_mat @ obj.matrix_world
    # 提取旋转四元数
    ue_rot_quat = ue_world_mat.to_quaternion()
    
    • UE中可直接从转换后的矩阵提取旋转,或者将矩阵应用到物体Transform。

导出前必做检查

  • Blender里应用所有变换后,确认模型原点在中心,避免旋转偏移
  • 导出世界空间的旋转数据,别用局部空间,否则UE要额外处理父物体变换
  • UE导入模型时,在导入设置里把Transform > Rotation设为0,0,0,避免自动添加旋转偏移

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:35:42