const light1 = new THREE.PointLight(0xffffff, 0.4); // было
const light1 = new THREE.PointLight(0xffffff, 1, 0, 0); // стало
Пишут, что свет стал более реальным, привязанным к размерам, я так понял.
Все ровно наоборот. Но чем гадать, лучше посмотреть документацию
PointLight, чтобы понять смысл параметров.
Последний параметр decay, затухание, непосредственно связан как раз с физикой распространения света. Обычно мы стараемся его никогда не трогать, потому что меняя физику мы себе усложняем дальнейшую разработку в 99% случаев. По умолчанию этот параметр равен 2. Не 0.
Предпоследний параметр distance - расстояние, на котором рассчитывается свет. Если оно равно 0, как по умолчанию, то все рассчитывается без ограничений на расстояния, используя физически корректное затухание. Если его поменять, то в каком-то месте свет будет обрезаться. Это иногда полезно для оптимизаций, но физика будет сломана. Поэтому в целом этот параметр имеет смысл трогать только если мы что-то оптимизируем и понимаем, что и зачем. В остальных случаях можно оставить его в покое.
В подавляющем большинстве случаев достаточно менять только второй параметр - интенсивность. Измеряется в канделах. Реалистичные значения для бытовых источников света - от 0 до нескольких сотен.
Если у вас с реалистичными значениями получается что-то не то - стоит уточнить размеры объектов. Чтобы физика работала, у нас 1 условная единица пространства WebGL должна соответствовать 1 метру. Если вы случайно сделали себе размер коробки в 600 метров, а не 0.6, то физика могла дать не тот визуальный эффект, который вы ожидали. Позиция камеры на расстоянии в сотни километров от коробки тоже намекает на то, что нужно проверить размеры.