我正在使用 LWJGL 开发 Java 游戏,我试图让它旋转以查看 3D 空间中的一个点。我已经尝试了我在互联网上可以找到的所有“lookAt”方法,但我就是无法让它工作(相机只是没有朝正确的方向看)。
你能帮我弄清楚怎么做吗?
编辑:
想通了,只需要反转矩阵。如果您遇到相同的问题,这是最终代码:
public static Matrix4f lookAt(Vector3f eye, Vector3f center, Vector3f up) {
Vector3f forward = new Vector3f(0, 0, 0);
Vector3f.sub(center, eye, forward);
forward.normalise();
Vector3f side = new Vector3f(0, 0, 0);
Vector3f.cross(forward, up, side);
side.normalise();
Vector3f.cross(side, forward, up);
Matrix4f matrix = new Matrix4f();
matrix.m00 = side.x;
matrix.m01 = side.y;
matrix.m02 = side.z;
matrix.m10 = up.x;
matrix.m11 = up.y;
matrix.m12 = up.z;
matrix.m20 = -forward.x;
matrix.m21 = -forward.y;
matrix.m22 = -forward.z;
matrix.invert();
return matrix;
}