Why does RayIntersect return wrong values?

Started by
0 comments, last by plusnoir 12 years, 2 months ago
[color=#333333]I'm trying to implement Object picking. My BasicModel.cs has a function:

[color="#333333"]
public bool CheckRayIntersection(Ray ray)
{
//Where aabb is the BasicModel's BoundingBox
if (ray.Intersects(aabb) != null)
{ return true; }
else
{
[color="#333333"] return false;
}
}


[color=#333333]I create the Ray in my Camera.cs:

[color=#333333]public Ray GetMouseRay(Vector2 mousePosition, Viewport viewport)
{
Vector3 near = new Vector3(mousePosition, 0);
Vector3 far = new Vector3(mousePosition, 1);
[color=#333333] near = viewport.Unproject(near, projection, view, Matrix.Identity);
far = viewport.Unproject(far, projection, view, Matrix.Identity);
[color=#333333] return new Ray(near, Vector3.Normalize(far - near));
}


[color=#333333]And finally in game1.cs I check for Intersection in every BasicModel and write "Intersects" to Console:

[color=#333333]foreach(BasicModel model in assetManager._modelsOnscreen)
{
if(model.CheckRayIntersection(camera.GetMouseRay(mouseLocation,viewport)))
{
winForm.ConsoleWrite = "intersects";
}
}


[color=#333333]Somehow it always returns true for intersection with offset (to the right) to the actual Boundingbox. I also don't have any clue how I could visualize the problem or step through it. Actually the Boundingbox is drawn correctly as seen here, so I don't think that aabb causes the problem.
[color=#333333]

Any advice is welcome,
[color=#333333]

noir

Advertisement
Fugured out, the offset is caused by the viewport being drawn into a PictureBox in a WinForm. Still don't know how to fix it.
Figured out, the offset is caused by the viewport being drawn into a PictureBox in a WinForm. Still don't know how to fix it.

This topic is closed to new replies.

Advertisement