Диапазон PBRT Spectrum toRGB

Для академических целей я адаптировал PBRT так, чтобы он записывал данные о пересечениях и общие данные, связанные с траекторией (я использовал интегратор поверхности траектории).

Однако существует некоторая трудность в получении значения RGB спектра на определенном пересечении. Совершенно очевидно, что я должен использовать ToRGB(float* rgb) в классе Spectrum, сгенерированном на пересечении, но данные, полученные впоследствии, немного странные. Было бы целесообразно, чтобы значения RGB находились в диапазоне 0-1. Кажется, это часто случается, но иногда я вижу триплеты, такие как

(1.851088, 0.882869, 0.772866)

При ближайшем рассмотрении выясняется, что максимальные значения RGB для моего набора из примерно 400 000 пересечений составляют 3,77, 2,00 и 1,76. Нижняя граница кажется правильной, поскольку они близки к нулю. Таким образом, вопрос в том, какой диапазон использует PBRT, чтобы я мог преобразовать его в 0.0 - 1.0.

Спасибо

1 ответ

Решение

Я еще не читал PBRT и не изучал его исходный код подробно, но я не совсем верю, что ваша предпосылка

Было бы целесообразно, чтобы значения RGB находились в диапазоне 0-1.

В действительности, интенсивность света в любой точке может быть в значительной степени произвольно большой; Солнце, безусловно, ярче, чем самый яркий пиксель, который может отображать ваш монитор. Поэтому я предполагаю, что спектры PBRT могут быть сколь угодно интенсивными. В этом случае, чтобы сопоставить его с ограниченной моделью освещения, вы можете либо уменьшить масштаб значений, либо ограничить их до 1,0 (или некоторой комбинации обоих).

Уменьшение масштаба аналогично уменьшению апертуры камеры или сужению ваших зрачков.

Ограничение значений позволяет "размыть" цвета, так же как цифровая фотография солнца может иметь много пикселей, привязанных к 1.0, 1.0, 1.0,

Другие вопросы по тегам