Что не так с моим проектом и непроектированными функциями? - PullRequest
3 голосов
/ 20 августа 2010

Я использую OpenTK для игры в C #, и она не поставляется с проектом и не проектируемыми функциями, которые конвертируют между мировыми и экранными координатами.Ну, это так, но они устарели, и я не мог заставить их работать.Я попытался реализовать их самостоятельно, основываясь на спецификации opengl (см. Меню слева, gluProject и gluUnProject, и просмотр в FF, а не в Chrome).Посмотрите эти формулы, я пытаюсь соответствовать им.Мои функции вообще не работают, все точки, возвращаемые Project, находятся близко к центру моего экрана и очень близко друг к другу, хотя я перемещаю свою точку мира повсюду.

Обратите внимание, чтоМатематическая библиотека OpenTK не включает в себя функции для умножения матрицы на вектор, поэтому я просто сделал матрицу строк на векторной точки для каждой записи в результирующем векторе (это правильно, не правда ли?)

Ответы [ 2 ]

2 голосов
/ 22 августа 2010

Я разобрался - мои матрицы нужно было транспонировать. Не знаю почему, но функции OpenTK вернули мои матрицы моделей не так, как собственные вызовы.

2 голосов
/ 20 августа 2010

Я не совсем уверен, но, по крайней мере, порядок умножения матриц в вашей функции Project может быть неправильным. Взгляните на http://www.opengl.org/wiki/GluProject_and_gluUnProject_code для кода C, где временный вектор (v_prime в вашем коде) рассчитывается сначала путем умножения на матрицу просмотра модели, а затем результат в свою очередь умножается на матрицу проекции. *

Еще один хороший источник для реализации gluProject / gluUnProject - http://www.mesa3d.org/.

...