What I'm seeing :

- It detects that I'm looking in the right direction, but only at a distance of approx. 1 from the plane.

- It only detects that I'm lloking in the right direction when I'm looking in between -45 and 45 degrees on the x axis (looking up/down)

- I never get the "collision" result...

Here's the bit of code where I check for a plane intersection with the line :

public final class Plane { // o = origin (camera/eye position) // n = normalized vector for the direction the player is looking to // p = plane point (in this case the A point of a triangle) // pn = plane normalized vector public static Vector3f intersect(Vector3f o, Vector3f n, Vector3f p, Vector3f pn) { //tests if the line is perpendicular to the plane if ((n.x * pn.x + n.y * pn.y + n.z * pn.z) != 0) { // calculate t for the plane+line intersection float t = (p.x*pn.x + p.y*pn.y + p.z*pn.z - pn.x*pn.x - pn.y*o.y - pn.z*o.z) / (n.x*pn.x + n.y*pn.y + n.z*pn.z); //tests if the line intersects IN FRONT of the player if (t > 0) //returns the position of the collision return new Vector3f(o.x + t*n.x, o.y + t*n.y, o.x + t*n.z); else return null; } else { return null; } } }

... And here's the part where I check if the point is in the triangle :

public class Triangle { public Vector3f a, b, c, n; public Triangle(Vector3f a, Vector3f b, Vector3f c, Vector3f n) { this.a = a; this.b = b; this.c = c; this.n = n; } public boolean intersect(Vector3f p) { if (SameSide(p, a, b, c) && SameSide(p, a, b, c) && SameSide(p, a, b, c)) { Vector3f vc1 = new Vector3f(); Vector3f.cross(sub(a, B)/>, sub(a, c), vc1); if (Math.abs(Vector3f.dot(sub(a, p), vc1)) <= .01f) return true; } return false; } private boolean SameSide(Vector3f p1, Vector3f p2, Vector3f A, Vector3f B)/> { Vector3f cp1 = new Vector3f(); Vector3f.cross(sub(B, A), sub(p1, A), cp1); Vector3f cp2 = new Vector3f(); Vector3f.cross(sub(B, A), sub(p2, A), cp2); return Vector3f.dot(cp1, cp2) >= 0; } private Vector3f sub(Vector3f a, Vector3f B)/> { Vector3f result = new Vector3f(); Vector3f.sub(a, b, result); return result; } public void draw() { glColor3f(1, 1, 1); glBegin(GL_TRIANGLES); glNormal3f(n.x, n.y, n.z); glVertex3f(a.x, a.y, a.z); glVertex3f(b.x, b.y, b.z); glVertex3f(c.x, c.y, c.z); glEnd(); } }¸

If anyone see what I'm doing wrong, please help!

Thank you so much!