Я выбрал тестовый уровень и заметил, что экспортированная модель очень неоптимальна и занимает несколько сотен МБ. Оказалось, это происходит потому, что модули из которых собрана сцена сохранены как отдельные объекты, а не инстансы. Чтобы это исправить, я написал скрипт Link Similar Meshes для blender который перебирает все объекты, сравнивает число вершин, материалов, и других параметров, и позволяет быстро отыскать идентичные элементы, а затем обобщить их, превратив в инстансы. Это позволило сократить объем модели уровня с 200мб до 15мб, а также задействовать инстансинг геометрии во время рендеринга и повысить фреймрейт который очень важен при оценке ощущения от управления.
Огнище. Молодец. ТруЪ реверс инжиниринг. Побольше бы такого на ДТФ.
2) ... Эта проблема есть и в оригинале, но тени там как-то плавно исчезают, и проблема почти незаметна.
Советую посмотреть в решение похожей истории из Геншин Импакта:
https://www.artstation.com/blogs/bjayers/9oOD/blender-npr-recreating-the-genshin-impact-shader
Там они стреляют рэйкастом от середины капсулы персонажа в направлении дирекшенал лайта сцены. И если рэйкаст сталкивается с коллизией, то они аккуратным лерпом материал полностью в тень переводят. У них, правда сам шейдер в этом плане попроще - там только дирекшенал лайт на него влияет, вроде.
В овере придется чуть больше помудрить и убирать только влияние дирекшенал лайта, оставляя работать остальные источники (чтобы оно продолжало бликовать от всяких лампочек и взрывов, когда орудие находится в тени). Благо, у Unity больше свободы по Light-функциям, чем в каком-нибудь УЕ. И это можно будет реализовать.
Вот это мега вложенные условия, чтобы точно движок понял что ты не шаришь ничего)
Вот для этого мат логику в универах и учат, чтобы такой хуйни не писать
буквально 90% кода в проде в любой компании, потому что всем плевать, главное побыстрее сделать
Да пофиг вообще, это не сказывается ни на функционале, ни на производительности. Один раз выполнил и дальше побежал. Но обильная критика подтолкнула меня написать полноценный плагин, так что вот пользуйтесь: https://gist.github.com/dnnkeeper/b6858b3dd04b3231c10e17f9e1d2247e
Кто тебя так код писать учил? If if if if if
Это результат итеративного поиска простого разового решения на коленке. Вообще не стояло задачи делать из этого утилиту, так что пофиг на стиль. Был бы чатгпт тогда, скормил бы ему. Можно так и поступить чтобы сделать прикольный плагин для оптимизации сцен с копиями объектов