2013-08-11 1 views
2

Я только начал работать над проектом трассировки лучей. И вот один очень простой вопрос: у меня есть положение камеры в мировой координате. Как определить положение плоскости обзора? Чтобы сделать это ясно: информация о камере уже предоставлена: моя камера находится на (0,1,10), указывая на (0,0, -1) с направлением вверх (0,1,0). Для перспективного вида: gluPerspective (45,1.0,0.1,100). Я смущен, если положение камеры используется в качестве плоскости обзора или точки обзора. Благодарю.Как выбрать фокусную длину в трассировке лучей?

ответ

1

Вы хотите 45 FOV и соотношение сторон 1 это означает, что фокусное расстояние f является

f = (w/2)/tan(45/2) = (h/2)/tan(45/2) 

, где w и h ширина и высота вашей плоскости пленки.

Если ваш самолет нормирован (в [-1,1]^2) f просто:

f = 1/tan(45/2) 

В правшах системы координат вашего луч происхождение будет (0,0,f).

Камера не зависит от фокусного расстояния. Вы можете преобразовать свой луч в мировое пространство путем преобразования камеры или трансформировать свой мир в пространство камеры с помощью инверсии камеры.

+0

Можете ли вы быть более конкретным, что в этот случай, где должна быть плоскость обзора? У меня все еще есть проблемы с преобразованием. – user2390930

+0

Это зависит от вас, но хорошее место для размещения вашей плоскости обзора находится в плоскости z = 0 в пространстве изображений с центром в (0,0,0) и нормировано в [-1,1]^2. Посмотрите на некоторый трассировочный код луча или учебные пособия, чтобы увидеть, как устанавливаются лучи и плоскость просмотра, есть много ресурсов в Интернете. Например, у Szirmay-Kalos есть несколько хороших бесплатных книг по этому вопросу (http://sirkan.iit.bme.hu/~szirmay/book.html) –

+0

О, я просто понял, что могу вручную преобразовать координату пикселя в координату мира после Я установил плоскость обзора. Спасибо за помощь. – user2390930

Смежные вопросы