#opengl #graphics #raytracing
#opengl #графика #трассировка лучей
Вопрос:
несколько вопросов, касающихся алгоритма трассировки лучей:
- Кто-нибудь может сказать мне, пожалуйста, правильно ли я понял алгоритм трассировки лучей?
он получает первый объект, который пересекается с лучом
(если пересечений нет, он отключается)
затем, если объект является отражающим, он рекурсивно отправляет отражающий луч и вычисляет его цвет.
если объект прозрачен, он рекурсивно отправляет преломляющий луч и вычисляет его цвет.
какая последняя строка?:
return shade(reflactColor, refractColor,p,obj)
вычисляет ли он цвет, выполняя среднее значение reflectColor и refractColor или что-то в этом роде?
2. где находится теневой луч? разве это не часть алгоритма
3 . и последнее.. зачем нам нужно, чтобы он был рекурсивным?
Ответ №1:
Кажется, вы хорошо разбираетесь в алгоритме.
Последняя строка действительно выглядит так, как будто она вычисляет какую-то взвешенную комбинацию отраженных и преломленных цветов.
Кроме того, вы правы в том, что трассировка теневых лучей не включена в базовый алгоритм, который вы прикрепили к своему сообщению. Однако его легко добавить, направив луч на источник света и определив, есть ли пересечение между объектом, на который вы попали, и источником света. Если есть, то индикатор закрыт, и объект не должен быть освещен в этой точке.
Чтобы объяснить рекурсию, можно представить себе пару зеркал, обращенных друг к другу. Вы бы получили эффект бесконечного зеркала (в реальной жизни). Если бы вы не повторяли и отбрасывали отражающие / преломляющие лучи только один раз, ваши виртуальные зеркала (или отражающие поверхности в целом), казалось бы, отражали бы только другие объекты, а не отражения других объектов. (Итак, никаких бесконечных зеркальных эффектов. 🙁 )
Комментарии:
1. если есть теневой луч …. объект не должен быть освещен или мы просто не принимаем во внимание этот конкретный источник света?
2. В простейшем случае (один источник света) объект вообще не освещается в этой точке. При использовании нескольких источников света вы можете использовать среднее значение, средневзвешенное значение или другие методы, чтобы выяснить, каким должен быть вклад.