Я только начал работать над проектом трассировки лучей. И вот один очень простой вопрос: у меня есть положение камеры в мировой координате. Как определить положение плоскости обзора? Чтобы сделать это ясно: информация о камере уже предоставлена: моя камера находится на (0,1,10), указывая на (0,0, -1) с направлением вверх (0,1,0). Для перспективного вида: gluPerspective (45,1.0,0.1,100). Я смущен, если положение камеры используется в качестве плоскости обзора или точки обзора. Благодарю.Как выбрать фокусную длину в трассировке лучей?
2
A
ответ
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
Я бы посоветовал вам посмотреть на этот урок из scratchapixel который является хранилищем методов программирования CG:
http://scratchapixel.com/lessons/3d-basic-lessons/lesson-6-rays-cameras-and-images/
также:
http://scratchapixel.com/lessons/3d-advanced-lessons/cameras-advanced-techniques/
Смежные вопросы
- 1. камера в трассировке лучей
- 2. Генерация преломленных лучей в трассировке лучей
- 3. Простой учебник по трассировке лучей?
- 4. Правильная модель для затенения в трассировке лучей
- 5. Есть ли действительно хорошая книга о трассировке лучей?
- 6. Как выбрать длину kendoDropDownList
- 7. глянцевое отражение в трассировке луча
- 8. Перекрестки перекрестных лучей Ray
- 9. Как выбрать различную длину подстроки в XPath
- 10. Как найти текущую фокусную внутреннюю рамку?
- 11. Как создать многолетнюю фокусную задачу из MVC
- 12. Как насмехаться или вызвать фокусную функцию javascript?
- 13. Эффективность перспективной проекции против трассировки лучей/лучей
- 14. Как выбрать нулевую или нулевую длину?
- 15. Трассировка лучей: «размер» поля глубины
- 16. Преобразование лучей для пересечения лучей-треугольников
- 17. Как добавить текст в центр диаграммы солнечных лучей D3
- 18. Как реализовать проверку попадания лучей AABB-лучей на iPhone
- 19. ?? в OpenMP трассировке
- 20. Что такое термин 't' в определении луча? Трассировка лучей
- 21. Как сделать трассировку лучей в современном OpenGL?
- 22. Как использовать текстурирование в простой трассировщик лучей?
- 23. Как включить фрагмент кода в презентацию лучей?
- 24. Какие визуальные эффекты могут быть визуализированы в трассировке лучей, которые трудно или не могут быть выполнены в современных растровых двигателях.
- 25. 2D-трассировка оптических лучей
- 26. Пароль как аргумент, отображаемый в трассировке стека
- 27. Как найти причину сбоя в трассировке стека
- 28. Как уменьшить вывод в трассировке стека?
- 29. Как номера строк в трассировке стека ошибочны?
- 30. Как отключить информацию о трассировке в ASP.NET?
Можете ли вы быть более конкретным, что в этот случай, где должна быть плоскость обзора? У меня все еще есть проблемы с преобразованием. – user2390930
Это зависит от вас, но хорошее место для размещения вашей плоскости обзора находится в плоскости z = 0 в пространстве изображений с центром в (0,0,0) и нормировано в [-1,1]^2. Посмотрите на некоторый трассировочный код луча или учебные пособия, чтобы увидеть, как устанавливаются лучи и плоскость просмотра, есть много ресурсов в Интернете. Например, у Szirmay-Kalos есть несколько хороших бесплатных книг по этому вопросу (http://sirkan.iit.bme.hu/~szirmay/book.html) –
О, я просто понял, что могу вручную преобразовать координату пикселя в координату мира после Я установил плоскость обзора. Спасибо за помощь. – user2390930