0 / 0 / 0
Регистрация: 21.01.2015
Сообщений: 85
|
|||||||||||
1 | |||||||||||
Перевод из оконных координат в мировые01.05.2018, 07:14. Показов 6505. Ответов 6
Метки нет (Все метки)
Знаю, что конечная матрица, выходящая на экран, формируется следующим образом
MVPmatrix = projection * view * model; Пытаюсь преобразовать экранные координаты в мировые. Нашёл в интернете функцию, которая возвращает координаты пересечения с плоскостью, но он написана на ES, в принципе, там ничего такого сверхъестественного нет, но вот функцию getViewMatrix() не видит. Поэтому вопрос, как мне получить видовую матрицу? И вообще имеет ли смысл данный код? P.S.: Я не использую шейдеры
вот всё, что производилось с матрицами, которые есть в моей программе
0
|
01.05.2018, 07:14 | |
Ответы с готовыми решениями:
6
Преобразование координат мыши в мировые координаты Получение оконных координат мыши (C++) Преобразование оконных координат в левые Перевод в мировые координаты |
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
|
|
01.05.2018, 14:39 | 2 |
У тебя камера - это уже модельновидовая матрица.
gluProject and gluUnProject code. Вот пример по gluUnproject.
0
|
61 / 58 / 11
Регистрация: 25.04.2017
Сообщений: 509
|
||||||
01.05.2018, 20:29 | 3 | |||||
a mat4 camMat = projection * view; Не по теме: Вот эта тема уже сто раз поднималась.
1
|
0 / 0 / 0
Регистрация: 21.01.2015
Сообщений: 85
|
|||||||||||||||||||||
01.05.2018, 21:49 [ТС] | 4 | ||||||||||||||||||||
EVP, Почему-то функция возвращает совсем не то значение
1. В чем проблема с этой функцией? 2. Мне нужно найти координаты пересечения с плоскостью. Допустим, я решил повернуть камеру, как показано на второй пикче. Координаты ( предположим это мировые) из формулы(1) не меняют положения, независимо от того под каким углом я эту камеру повернул или в какую сторону переместил. То есть в коде, который я скинул в самый первый раз, вроде как первые две строчки работают нормально, а стальные, где начинается матрица m_camera - некорректно.
0
|
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
|
|
02.05.2018, 11:10 | 5 |
Я же тебе пример специально дал, чтобы ты посмотрел. Пример работает правильно.
Функция простая и понятная - в ней нет ошибки. Если у тебя эта функция не работает как ожидается, то проверь свои ожидания. Пересчитай матрицы вручную, возми обратные, проведи прямой расчёт и обратный, сравни результаты. Посмотри на данные, которые ты даёшь функции, сравни с ожидаемыми.
0
|
97 / 11 / 1
Регистрация: 14.03.2017
Сообщений: 196
|
|
02.05.2018, 19:32 | 6 |
В примере выше умножается перспективная матрица на видовую, потом инвертируется и умножается на ScreenSpace координаты мыши
Ты же инвертировал только перспективную, плюс в ScreenSpace ты не указал z координату. Плюс не поделил на гомогенную. Читайте внимательно.
0
|
0 / 0 / 0
Регистрация: 21.01.2015
Сообщений: 85
|
||||||
02.05.2018, 20:15 [ТС] | 7 | |||||
Diochrome, Функция, которую я приводил в самом начале, работает, но только в перспективной проекции, а я до этого все с орографической возился.
0
|
02.05.2018, 20:15 | |
02.05.2018, 20:15 | |
Помогаю со студенческими работами здесь
7
Перевод из экранных координат (от -1 до +1) Перевод координат модели в растровые Перевод координат в другую систем координат Перевод координат Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |