Проблемы с мышью XNA
Я тащу свои волосы за то, что собирает мышь. Я не знаю, заключается ли проблема в моих вычислениях лучей или в моих BoundingSpheres, в любом случае вот код для моих вычислений лучей:
public Ray CalculateRay(InputManager input)
{
Vector3 nearSource = new Vector3(input.CurrentMousePosition, 0f);
Vector3 farSource = new Vector3(input.CurrentMousePosition, 1f);
Vector3 nearPoint = Engine.Device.Viewport.Unproject(nearSource, _projectionMatrix,
_viewMatrix, Matrix.Identity);
Vector3 farPoint = Engine.Device.Viewport.Unproject(farSource,
_projectionMatrix, _viewMatrix, Matrix.Identity);
Vector3 direction = farPoint - nearPoint;
direction.Normalize();
return new Ray(nearPoint, direction);
}
и для проверки пересечения:
public bool RayIntersectsModel()
{
foreach (ModelMesh mesh in _model.Meshes)
{
BoundingSphere sphere = mesh.BoundingSphere;
sphere.Center = _position;
Ray ray = Engine.Camera.CalculateRay(Engine.Input);
if (sphere.Intersects(ray) != null)
{
return true;
}
}
return false;
}
Это не так, как будто это совсем не работает, но, похоже, очень неточно... или что-то в этом роде. Модели - это просто сферы, очень простые. Любая помощь или понимание будет принята с благодарностью! Спасибо!
1 ответ
Ну, когда я трансформировал свою ограничивающую сферу, я сначала применил матрицу мира, а затем трансформировал кость. Кажется, это ставит ограничивающую сферу не на то место. Переключение на первое применение костей трансформирует ТОГДА в мировую матрицу.