Гость dv1 Опубликовано 27 июня, 2019 Поделиться Опубликовано 27 июня, 2019 Доброго времени суток! Нашел видовую матрицу такого вида: 0.71 -0.04 0.70 34.49 -0.88 -0.04 0.48 -519.52 -0.05 -0.93 0.36 -144.25 -0.07 0.88 0.47 -198.54 Находится по статичному адресу и больше похожих структур от [-1,1] в первых трех столбцах не нашлось , циферки меняются при перемещении камеры все как надо, пытаюсь переводить в экранные координаты с помощью: Цитата public ScreenVector WorldToScreen(float xPos, float yPos, float zPos) { float m11 = BitConverter.ToSingle(matrix, 0), m12 = BitConverter.ToSingle(matrix, 16), m13 = BitConverter.ToSingle(matrix, 32), m14 = BitConverter.ToSingle(matrix, 48); float m21 = BitConverter.ToSingle(matrix, 4), m22 = BitConverter.ToSingle(matrix, 20), m23 = BitConverter.ToSingle(matrix, 36), m24 = BitConverter.ToSingle(matrix, 52); float m31 = BitConverter.ToSingle(matrix, 8), m32 = BitConverter.ToSingle(matrix, 24), m33 = BitConverter.ToSingle(matrix, 40), m34 = BitConverter.ToSingle(matrix, 56); float m41 = BitConverter.ToSingle(matrix, 12), m42 = BitConverter.ToSingle(matrix, 28), m43 = BitConverter.ToSingle(matrix, 44), m44 = BitConverter.ToSingle(matrix, 60); float screenX = (m11 * xPos) + (m21 * yPos) + (m31 * zPos) + m41; float screenY = (m12 * xPos) + (m22 * yPos) + (m32 * zPos) + m42; float screenW = (m14 * xPos) + (m24 * yPos) + (m34 * zPos) + m44; float camX = rct.Right - rct.Left; float camY = rct.Bottom - rct.Top; float x = camX + (camX * screenX / screenW); float y = camY - (camY * screenY / screenW); if (screenW > 0.001f //not behind us && rct.Left + x > rct.Left && rct.Left + x < rct.Right //not off the left or right of the window && rct.Top + y > rct.Top && rct.Top + y < rct.Bottom) //not off the top of bottom of the window { return new ScreenVector() { Result = true, X = x, Y = y }; } return new ScreenVector() { Result = false, X = x, Y = y }; } Вместо x y z ставлю 0 0 0 центр карты,но координаты получаются рандомными в основном за пределами окна в чем может быть проблема??адрес матрицы неправильный ? или возможно она нестандартная какая-то? Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения