Xnamath с DirectX11 выбирает луч неправильно

Я пытаюсь реализовать выбор в моем приложении, но я просто не могу заставить его работать. Я испробовал 3 разных способа создания моего комплектующего луча, но в каждом из них проблема сохраняется. Это тот, с которым я наконец-то пошел:

    XMVECTOR screenpoint = XMVectorSet(x, y, 1.0f, 0.0f);
XMVECTOR dirvec = XMVector3Unproject(screenpoint, 0.0f, 0.0f, mClientWidth, mClientHeight, 0.0f, 1.0f, mCam.Proj(), mCam.View(), XMMatrixIdentity());
XMVECTOR RayDir = dirvec - mCam.GetPositionXM();
RayDir = XMVector3Normalize(RayDir);

и используйте это для проверки столкновения треугольников в кубе:

XNA::IntersectRayTriangle(mCam.GetPositionXM(), RayDir, v0, v1, v2, &t);

Во всех случаях он будет выбирать треугольники, которые в некоторых случаях покрыты другими треугольниками. Когда камера находится прямо перед одной из граней куба и нацелена на правую половину этой грани, она получает вид справа, но когда она нацелена на левую сторону, она выбирает лицо слева от него.

Моя трансформация мира — это просто matrixIdentity, и я не делаю ничего особенного. Я не уверен, какую часть своего кода я должен публиковать, поэтому, пожалуйста, спросите, не достаточно ли это ясно для решения проблемы. Я загружаю свои вершины из простого файла .obj и проверяю содержимое в буфере, где нет ни одного перевода или преобразования.

Любая помощь будет принята с благодарностью.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]