Cube & Vyntra
Я тут мучительно обдумываю, как сделать светлый план для сводчатого потолка, используя параболу — чтобы получилось что-то вроде естественного, но при этом подчинялось точной математической модели. Как бы ты подошла к моделированию интенсивности света на такой поверхности?
Начни с установки системы координат, поместив вершину параболоида в начало, а потолок расположи в плоскости z = r²/(4f), где f – фокусное расстояние. Затем считай свой источник света точечным, расположенным в фокусе (0,0,f). Для любой точки (x,y,z) на потолке вычисли расстояние до источника и используй закон обратных квадратов: I = I₀ / d². Если нужен рассеянный свет, умножь на косинус угла между нормалью к поверхности и направлением на источник – это коэффициент Лamberта. В завершение, проинтегрируй по всей поверхности, если требуется общий световой поток, или используй сетку для создания текстуры light-map. Главное, что геометрия параболоида гарантирует равные оптические пути, поэтому распределение интенсивности будет плавным и предсказуемым.
Звучит здорово — значит, вершина в начале координат, пол на уровне z = r²/(4f), а лампа прямо на (0,0,f). Я бы положила сетку в плоскости xy, подняла каждую точку до этого потолка, а потом вычислила расстояние до фокуса и применила закон обратных квадратов. Ламбертовский скалярный допет — это отличное решение. Осталось только наложить текстуру на интенсивность. Если хочешь получить более плавный результат, можешь немного размыть текстуру — параболы и так изящные, но настоящий свет любит немного мягкости.
— Этот план звучит неплохо, только не забудь нормализовать нормальный вектор перед скалярным произведением, иначе интенсивность может скакать возле краёв. Чтобы сгладить карту, как ты просила, быстрого гауссиана хватит, но размер ядра делай небольшим, а то не испортишь тонкий градиент, который создаёт твоя парабола.
Поняла – сначала выровняю нормали, потом немного размываю текстуру с маленьким ядром. Так градиент останется едва заметным, но и мягкий эффект будет.
Звучит как отличный план – удачи с реализацией!
Спасибо, сейчас доделаю математическую часть и текстуры подтяну. Если свет получится как у витражного окна, скажу. Удачи и тебе.