2013-10-05 4 views
1

Итак, я пытаюсь реализовать алгоритм отображения фотонов, чтобы имитировать глобальное освещение в моей программе трассировки лучей. Тем не менее, я сталкиваюсь с несколькими проблемами, которые затрудняют реализацию.Photon Mapping - Несколько вопросов

Моя программа уже успешно отслеживает фотоны по всей сцене, сохраняет их в сбалансированном KD-Tree и может собирать k ближайших фотонов вблизи любой точки p, поэтому большая часть работы завершена. Проблема в основном, когда приходит время для оценки сияния.

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

Кроме того, моя другая проблема заключается в том, что если бы я искусственно увеличил мощность фотонов для увеличения вклада косвенного освещения, то получившееся освещение было бы пятнистым, неравномерным и уродливым и не выглядело бы абсолютно реалистичным. Я знаю, что эта проблема неясна, но я не знаю, почему это выглядит так, потому что я уверен, что правильно делаю оценки яркости и brdf.

ответ

0

Не зная точных расчетов, которые вы делаете в своей системе рендеринга, никто не сможет сказать вам, почему ваше косвенное освещение настолько слабое. Может быть, ваши материалы достаточно темные, что просто не так много косвенного света. Может быть, вы теряете коэффициент pi в вычислении косвенного освещения где-то, или вы можете пропустить разделение на pi в вашем прямом подсчете освещения, поэтому косвенное значение уменьшается в сравнении.

Что касается splotchiness, то это то, что картирование фотонов выглядит без тонны фотонов. Попробуйте 100 миллионов фотонов (или, по крайней мере, 10 миллионов) вместо этого, и посмотрите, сохраняется ли проблема.

Смежные вопросы