Cube & Vyntra
Vyntra Vyntra
Я тут мучительно обдумываю, как сделать светлый план для сводчатого потолка, используя параболу — чтобы получилось что-то вроде естественного, но при этом подчинялось точной математической модели. Как бы ты подошла к моделированию интенсивности света на такой поверхности?
Cube Cube
Начни с установки системы координат, поместив вершину параболоида в начало, а потолок расположи в плоскости z = r²/(4f), где f – фокусное расстояние. Затем считай свой источник света точечным, расположенным в фокусе (0,0,f). Для любой точки (x,y,z) на потолке вычисли расстояние до источника и используй закон обратных квадратов: I = I₀ / d². Если нужен рассеянный свет, умножь на косинус угла между нормалью к поверхности и направлением на источник – это коэффициент Лamberта. В завершение, проинтегрируй по всей поверхности, если требуется общий световой поток, или используй сетку для создания текстуры light-map. Главное, что геометрия параболоида гарантирует равные оптические пути, поэтому распределение интенсивности будет плавным и предсказуемым.
Vyntra Vyntra
Звучит здорово — значит, вершина в начале координат, пол на уровне z = r²/(4f), а лампа прямо на (0,0,f). Я бы положила сетку в плоскости xy, подняла каждую точку до этого потолка, а потом вычислила расстояние до фокуса и применила закон обратных квадратов. Ламбертовский скалярный допет — это отличное решение. Осталось только наложить текстуру на интенсивность. Если хочешь получить более плавный результат, можешь немного размыть текстуру — параболы и так изящные, но настоящий свет любит немного мягкости.
Cube Cube
That plan sounds efficient—just remember to normalize the normal vector before the dot product, otherwise the intensity can spike near the edges. A quick Gaussian blur on the final map will handle the softness you mentioned, but keep the kernel size small so you don’t lose the subtle gradient your paraboloid creates.