Как я могу решить проблему с перевернутым светом в трассировке лучей?


person niley    schedule 16.04.2019    source источник


Ответы (1)


Вы не указали то, что считаете неправильным. Где находится свет по отношению к сферам на первом изображении? Это выше и немного позади них? Если да - изображение выглядит правильно. Предполагая, что приведенные выше утверждения верны, второе изображение выглядит правильно. Причина, по которой свет находится в нижней части сфер, заключается в том, что нормаль теперь указывает «внутрь», поэтому знак произведения dot() будет противоположен знаку на первом изображении. Обратите внимание, что в вашем примере кода не похоже, что у вас есть какая-либо обработка теневых лучей. Другими словами - все объекты будут освещены так, как будто все остальные объекты прозрачны. Никакие объекты не будут отбрасывать тени на другие объекты. Это также объясняет, почему вы можете видеть нижнюю часть сфер, когда свет падает сверху. Если бы у вас были правильные теневые лучи, то на самом деле не имело бы значения, в какую сторону указывает нормаль (я бы удалил функции max() в этой точке).

person Slartybartfast    schedule 28.04.2019
comment
Я обнаружил, что моя функция пересечения сфер имеет ошибку. Таким образом, значение m неверно. Спасибо за ответ!! - person niley; 30.04.2019