Камера Ray Tracer - от орфографической до перспективной проекции - PullRequest
0 голосов
/ 22 сентября 2018

Я использую трассировщик лучей, и в настоящее время он имеет ортографическую проекцию.Я хочу сделать это в перспективной проекции.Я знаю, что в орфографии вы посылаете луч от каждого пикселя и проверяете на пересечения.В перспективной проекции начальная позиция луча постоянна, а не начинается с каждого пикселя.

Итак, я предполагаю, что в перспективной проекции начальное положение луча должно быть положением камеры.Проблема в том, что я не думаю, что когда-либо явно устанавливал камеру, поэтому я не знаю, как изменить исходное положение моего луча.

Как определить, где находится моя камера?Я попытался (0,0,0), но это просто оставляет меня с пустым изображением, поэтому я не думаю, что это правильно.

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Вы можете триангулировать расстояние от камеры до вашего объекта, сначала выбрав угол для перспективной проекции.Простой пример: выбрать угол 60 ° для вертикального поля зрения (FOV) и предположить, что центр вашего объекта равен (0,0,0), и вы хотите разместить камеру так, чтобы она смотрела вниз по оси Z в направлении центраваш объект.Это формирует треугольник, где вы можете триангулировать расстояние с помощью тригонометрической формулы: distance = (objectHeight / 2) / tan (60/2).Таким образом, вы помещаете камеру в (0,0, расстояние).Вы можете использовать ту же концепцию для вашего фактического местоположения объекта.

0 голосов
/ 11 октября 2018

В ортографической проекции лучи, проходящие через каждый пиксель, будут иметь то же направление, как если бы лучи исходили от камеры за экраном, расположенным на бесконечном расстоянии.

Для перспективной проекции,камера должна быть расположена на конечном расстоянии позади экрана.Каждый луч должен исходить от камеры и проходить через каждый пиксель экрана.Расстояние между экраном и камерой зависит от угла обзора.

...