Итак, я пытаюсь реализовать алгоритм отображения фотонов, чтобы имитировать глобальное освещение в моей программе трассировки лучей. Тем не менее, я сталкиваюсь с несколькими проблемами, которые затрудняют реализацию.Photon Mapping - Несколько вопросов
Моя программа уже успешно отслеживает фотоны по всей сцене, сохраняет их в сбалансированном KD-Tree и может собирать k ближайших фотонов вблизи любой точки p, поэтому большая часть работы завершена. Проблема в основном, когда приходит время для оценки сияния.
Во-первых, я не могу заставить косвенное освещение быть достаточно ярким, чтобы сделать заметную разницу в моей сцене. Если мой источник света испускает 100 000 фотонов, тогда мощность каждого сохраненного фотона (который для 100 000 испускаемых фотонов будет примерно около 500 000 сохраненных фотонов в моей программе) должен быть уменьшен в 100 000, что делает их очень тусклыми. Я думал, что могу уменьшить это при делении на область, если инкапсулирующий круг (pi * rad^2), если у меня есть радиус поиска, намного меньше 1, но уменьшая радиус поиска до такого небольшого числа, оставляет меня с очень небольшим количеством фотонов для Оцените, и если я использую большой радиус, я могу получить достаточно фотонов, но я не получаю дополнительный «импульс силы» от использования небольшого радиуса и может закончиться, включая неправильные фотоны. Поэтому я не знаю, что делать.
Кроме того, моя другая проблема заключается в том, что если бы я искусственно увеличил мощность фотонов для увеличения вклада косвенного освещения, то получившееся освещение было бы пятнистым, неравномерным и уродливым и не выглядело бы абсолютно реалистичным. Я знаю, что эта проблема неясна, но я не знаю, почему это выглядит так, потому что я уверен, что правильно делаю оценки яркости и brdf.