У меня проблема с теневыми лучами в моем трассировщике лучей.
Пожалуйста, взгляните на следующие две картинки
3D sMax:
http://neo.cycovery.com/shadow_problem.gif
Мой Raytracer:
http://neo.cycovery.com/shadow_problem2.jpg
Сцена освещена очень ярким светом, падающим сзади. Он настолько яркий, что в штриховке нет градиента, только белый или темный (из-за передержки).
оба изображения были визуализированы с использованием 3DStudioMax, и оба используют одну и ту же геометрию, только в одном случае нормали интерполируются по треугольникам.
Теперь рассмотрим красную точку на поверхности. В случае несглаженной версии он находится в темной области. это означает, что источник света не виден из этого треугольника, поскольку он направлен от него. Однако в сглаженной версии он находится в освещенной области, потому что интерполированная нормаль предполагает, что свет будет виден в этой точке (хотя фактическая геометрия треугольника направлена в сторону от источника света).
Моя проблема теперь в том, когда появляются тени с трассировкой лучей. Если теневой луч попадает в сцену из красной точки, чтобы проверить, виден ли источник света или нет (для определения затенения), теневой луч вернет пересечение, независимо от интерполированы ли нормали или нет (поскольку пересечения зависят только от геометрии). Поэтому пиксель будет темным.
3dsamx обрабатывает этот случай правильно - визуализированное изображение было сгенерировано с включенными тенями с трассировкой лучей. Однако мой собственный Raytracer сталкивается именно с этой проблемой, когда я включаю тени с трассировкой лучей (в моем трассировщике лучей точка темная в обоих случаях, потому что тени с трассировкой лучей определяют точку, лежащую в тени), и я не знаю, как решить Это.
Надеюсь, кто-то знает эту проблему и как с ней бороться ..
Благодарность!