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

沿Y轴旋转翻转精灵朝向时X轴输入反向及渲染位置偏移问题

问题原因

你遇到的异常是模型变换矩阵的构造顺序颠倒导致的:
你当前使用的是列主序矩阵,矩阵对向量的运算为右乘规则(矩阵 * 向量),构造矩阵时后执行的矩阵方法,会优先作用于顶点。

你现在的代码构造顺序是:缩放 → X轴旋转 → Y轴旋转 → Z轴旋转 → 平移
对应到顶点实际变换顺序为:平移 → Z轴旋转 → Y轴旋转 → X轴旋转 → 缩放
相当于你先把模型移动到了世界坐标位置,再对整个坐标系做旋转,自然会把模型的世界位置也跟着旋转方向反转,就出现了输入方向反转、精灵渲染位置和逻辑位置相反的问题。

解决方案

调整getTransformationMatrix的变换顺序,先执行平移,再执行旋转,最后执行缩放即可:

public Matrix4f getTransformationMatrix() {
    Matrix4f matrix = new Matrix4f();
    // 平移最先调用,最后作用于顶点,将旋转缩放后的模型移动到世界坐标
    matrix.translate(position);
    matrix.rotateX((float) Math.toRadians(rotation.getX()));
    matrix.rotateY((float) Math.toRadians(rotation.getY()));
    matrix.rotateZ((float) Math.toRadians(rotation.getZ()));
    // 缩放最后调用,最先作用于顶点,仅修改模型本地大小
    matrix.scale(scale);
    return matrix;
}

调整后Y轴旋转只会作用于模型本身的朝向,不会影响模型的世界坐标位置,输入方向和渲染位置都会恢复正常。


内容的提问来源于stack exchange,提问作者Amaury Le Roux Dupeyron

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 00:24:01