3D对象转换会扭曲对象

时间:2016-06-30 21:14:12

标签: python 3d

我正在使用本教程创建3D引擎:https://www.davrous.com/2013/06/13/tutorial-series-learning-how-to-write-a-3d-soft-engine-from-scratch-in-c-typescript-or-javascript/

每当我乘以平移矩阵时,它总是像这样扭曲图像:

之前

Before

Before

程序太长所以这里我乘以翻译矩阵,我使用euclid.py库进行所有矩阵计算:

worldMatrix = Matrix4().rotate_euler(
                mesh.rotation.y, mesh.rotation.x, mesh.rotation.z).translate(
                    mesh.position.x, mesh.position.y, mesh.position.z)
transformMatrix = worldMatrix*viewMatrix*projectionMatrix

这里是翻译方法(euclid.py库的一部分):

def translate(self, x, y, z):
    self *= Matrix4.new_translate(x, y, z)
    return self

def new_translate(cls, x, y, z):
    self = cls()
    self.d = x
    self.h = y
    self.l = z
    return self

有没有人知道任何可能的原因?

1 个答案:

答案 0 :(得分:1)

矩阵乘法不是可交换的,请确保以正确的顺序对矩阵进行乘法。