StainBerg
> Не свет не в префабе. Но как это сделать если у меня префабов 5 штук ?
Ну вот тут-то и проблема. Юнити-лайт должен знать, что он в режиме шадоумаски, и на какой её канал он влияет. Поэтому лайты, которые часть префаба, будут работать, а какие-то левые лайты из другой сцены - нет.
В принципе ты можешь маленьким скриптом изменить свой лайт в главной сцене. Если допустить, что это у тебя солнце, скорее всего у него первый (красный) канал.
См. light.bakingOutput: https://docs.unity3d.com/ScriptReference/Light.html
Создаём структуру LightBakingOutput: https://docs.unity3d.com/ScriptReference/LightBakingOutput.html
Ставим
isBaked = true
lightmapBakeType = LightmapBakeType.Mixed
mixedLightingMode = MixedLightingMode.Shadowmask
occlusionMaskChannel = 0 // это номер канала, на который влияет лайт
И суём заполненную структуру лайту.
...
Также если ты просто в главной сцене запечешь хотя бы что-то с шадоумаской (кубик там), то лайт должен настроиться сам и работать с префабами нормально.
Mr F
Спасибо за ответ) В целом помогло запекания кубика на мэйн сцене. Вроде все ок заработало !
Свет при запекании имеет множественные артефакты в виде белых пятен.
На форуме Unity описана данная проблема:
https://forum.unity.com/threads/bakery-gpu-lightmapper-v1-9-rtpre… 6008/page-121
Но я не понимаю, как ее исправить. Не могли бы вы мне в этом помочь. Заранее большое спасибо)
Настройки рендера на скрине.
Andy_Walker
Это Open Image Denioser мылит лайтмапу, попробуй попереключать на другие денойсеры.
Andy_Walker
Если это импортнутая моделька, то как раз adjust uv padding (вместо remove adjustments) должен твикнуть расстояния между юв островами, чтобы такого не было. Либо руками на ассете задать pack margin. По дефолту он в юнити слишком тоненький (для 1024+ лайтмапы). Это если развертка генерируемая юнити. Если же своя самодельная, то у себя в юв редакторе делать шире паддинг)
Добрый день. Есть ли способ запечь одну сцену в 1) FullLighting, NonDirectional и 2) Shadowmask, DominantDirection, чтобы потом на старте сцены или в рантайме можно было переключаться между этими запечками и режимами освещения сцены? Это требуется для изменения уровней графики в мобильной игре.
EuphoriaGames
Ну т.к. в случае с шадоумаской, прямой свет от источников должен будет пропасть с основного лайтмапа, проще всего делать 2 бейка по очереди, но в разный output path (можно это вывести в одну кнопку - скриптовое апи разъяснено в мануале).
После каждой запечки сохранять себе в какой-нибудь ScriptableObject содержимое LightmapSettings.lightmaps и LightmapSettings.lightmapsMode. Затем, в зависимости от уровня настроек, загружать это из своего файла назад.
Не забыть в настройках проекта / graphics, отключить shader stripping нужных версий шейдера.
Mr F
Спасибо за ответ.
А можно ли запечь одну сцену с разными объектами, чтобы затем переключение лайтмап работало?
Для низкой графики хотели бы скрывать некоторые статические объекты в сцене. Сейчас при переключении карты сползают, если сцены при запечке не идентичные.
EuphoriaGames
> А можно ли запечь одну сцену с разными объектами, чтобы затем переключение
> лайтмап работало?
Можно несложным скриптингом (есть и готовые решения): https://geom.io/bakery/wiki/index.php?title=How_do_I...#How_do_I_… at_runtime.3F
Тема в архиве.