2010-12-28 5 views
2

Я пытаюсь реализовать raytracer, который использует произвольную позицию камеры и перспективную проекцию. У меня есть положение камеры, взгляд на положение, угол поля зрения, но я не могу понять направление, которое я должен снимать лучи, чтобы каждый луч соответствовал пикселю. Если бы я мог найти способ найти координаты плоскости изображения или векторы направления, которыми должны обладать лучи, то оттуда это будет вниз. Любая помощь приветствуется.Поиск координат плоскости изображения OpenGL

ответ

2

Я бы сделал следующее: представьте, что перед вашим глазом есть прямоугольная сетка. Сетка определяется одной точкой (точкой (0; 0) сетки) и двумя (трехмерными) базовыми векторами (x, y); с этим вы можете рассчитать луч как (происхождение + Xкоординат * x + Yкоординат * y) - глаз. Регулируя расстояние между точкой вашего глаза и источником; или путем регулировки длины базовых векторов вы можете получить желаемый угол обзора.

+0

+1 Прямо к делу! – Rekin

+0

Благодарим вас за ответ, который действительно имеет смысл. Но я думаю, что нашел решение, которое проще реализовать: http://www.opengl.org/resources/faq/technical/selection.htm (pick ray) Конечно, я буду использовать пиксельные координаты вместо мыши координаты. – kusmukator