代码之家  ›  专栏  ›  技术社区  ›  karamazovbros

如何在加工过程中找到applyMatrix之后的新x,y,z?

  •  1
  • karamazovbros  · 技术社区  · 6 年前

    我有一个模型,它的关节可以旋转。模型被转换到中心。矩阵应用于 applyMatrix() 是基于四元数值的旋转矩阵,因此它可以在没有万向节锁的情况下旋转。

    但是我想围绕一个关节点平移和旋转,这个关节点使用模型的偏移,所以我可以找到那个点,因为它只是 model.x/y/z + offset.x/y/z . 但是,这并没有考虑到 applyMatrix() ,但我想能够计算出关节点的位置 (x,y,z) 无论它在什么旋转。

    translate(width/2, height/2, 0);
    applyMatrix(m[1][1],m[1][2],m[1][0],0,
                m[2][1],m[2][2],m[2][0],0,
                m[0][1],m[0][2],m[0][0],0,
                0,0,0,1);
    pushMatrix();
    // rotate around this joint point
    translate(offsetX, offsetY, offsetZ);
    // !!!!
    // WHAT is the new x,y,z right here??
    // !!!!
    rotate(amt);
    translate(-offsetX, -offsetY, -offsetZ);
    shape(component)
    popMatrix();
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Kevin Workman    6 年前

    查看 协调 部分 the reference .

    特别是,听起来你在找 screenX() screenY() 功能。或者你可以用 modelX() modelY() 函数以另一种方式将屏幕坐标转换为模型坐标。