如何计算LWJGL中的武器线

如何计算LWJGL中的武器线,lwjgl,Lwjgl,我试图计算另一个实体的命中率 我有我目前的职位和实体职位 我想问我如何计算显示器中间到实体的线 我想如果这条行>1那么它一定会很成功 有人知道我是如何从监视器的2D中间到3D部分的线以及这条线有多长吗?从您的问题中,我假设您想要取消投影2D视口坐标(在您的示例中是视口/窗口的中心)进入3D世界空间中的光线,并将该光线与世界中表示“实体”的几何形状相交 如果是这样,假设您说您使用LWJGL/Java,那么您可以使用JOML这样做: /* Given the view-projection matr

我试图计算另一个实体的命中率

我有我目前的职位和实体职位

我想问我如何计算显示器中间到实体的线

我想如果这条
行>1
那么它一定会很成功


有人知道我是如何从监视器的2D中间到3D部分的线以及这条线有多长吗?

从您的问题中,我假设您想要取消投影2D视口坐标(在您的示例中是视口/窗口的中心)进入3D世界空间中的光线,并将该光线与世界中表示“实体”的几何形状相交

如果是这样,假设您说您使用LWJGL/Java,那么您可以使用JOML这样做:

/* Given the view-projection matrix, obtain the "view ray"
   at the center of the viewport/window/screen */
Matrix4f viewProjectionMatrix = ...;
Vector3f rayOrigin = new Vector3f();
Vector3f rayDir = new Vector3f();
int mouseX = 400;    // <- viewport pixel X coordinate
int mouseY = 300;    // <- viewport pixel Y coordinate
int winWidth = 800;  // <- viewport pixel width
int winHeight = 600; // <- viewport pixel height
viewProjectionMatrix.unprojectRay(mouseX, mouseY,
    new int[] { 0, 0, winWidth, winHeight }, rayOrigin, rayDir);

/* Intersect the ray with your entity (here a simple AABB) */
Vector3f aabbMin = new Vector3f(-1,-1,-1); // <- min corner of the AABB
Vector3f aabbMax = new Vector3f(+1,+1,+1); // <- max corner of the AABB
Vector2f minMaxHit = new Vector2f();
if (Intersectionf.intersectRayAab(rayOrigin, rayDir, aabbMin, aabbMax, minMaxHit)) {
    Vector3f hitPosition = new Vector3f(rayDir).mul(minMaxHit.x).add(rayOrigin);
    System.out.println("Hit was here: " + hitPosition);
}
/*给定视图投影矩阵,获取“视图光线”
在视口/窗口/屏幕的中心*/
Matrix4f viewProjectionMatrix=。。。;
Vector3f光线原点=新Vector3f();
Vector3f rayDir=新的Vector3f();
int mouseX=400//