У меня проблема с тенями в моем raytracer.Задача Raytraced Shadows
Пожалуйста, обратите внимание на следующие две картины
3D Smax:
alt text http://neo.cycovery.com/shadow_problem.gif
Мои Raytracer:
alt text http://neo.cycovery.com/shadow_problem2.jpg
Сцена освещается очень яркий свет , сияющий со спины. Он настолько яркий, что в затенении нет градиента, просто белого или темного (из-за передержки).
оба изображения были визуализированы с использованием 3DStudioMax, и оба используют ту же самую геометрию, как раз в одном случае нормали интерполируются по треугольникам.
Теперь рассмотрим красную точку на поверхности. В случае с нерасширенной версией он находится в темной области. это означает, что источник света не виден из этого треугольника, так как он обращен от него. Однако в сглаженной версии он находится в освещенной области, потому что интерполированный нормаль предполагает, что свет будет видимым в этой точке (хотя фактическая геометрия треугольника обращена от источника света).
Моя проблема теперь в том, когда появляются яркие тени, если из красной точки вырисовывается тень, чтобы проверить, является ли источник света видимым или нет (чтобы определить затенение), shadowray вернет пересечение, независимо от того, интерполированы ли нормали или нет (поскольку пересечения зависят только от геометрии). Поэтому пиксель будет затенен темным.
3dsamx правильно обрабатывает футляр - рендеринговое изображение было сгенерировано с включенными лучами Raytraced. Тем не менее, мой собственный Raytracer точно выполняет эту проблему, когда я включаю raytraced тени (в моем raytracer, в обоих случаях точка темная, потому что raytraced тени определяют точку, лежащую в тени), и я не знаю, как решить Это.
Я надеюсь, что кто-то знает эту проблему, и как бороться с ним ..
спасибо!
Вы делаете нормальное сглаживание. Позиция - это пространство, основанное на геометрии, но состояние тени основано от угла к источнику света, это основано на нормальной поверхности, поэтому, если вы не сглаживаете нормали, у вас будет одинаковый нормальный треугольник. –
Что значит? как я сказал, я интерполирую нормаль через треугольник! проблема НЕ является затенением! проблема - это лучшая тень! Если я отключу тени с тенями, все будет выглядеть отлично (за исключением, конечно, без теней!) – Mat
Мат, можете ли вы прикрепить еще два изображения: только RT-тень без затенения и только RT-shading без тени? – avp