пятница, 15 июня 2018 г.

Фейковое освещение в БГЕ.

    Опять долго не писал, причина - перефразируя шутку из КВН - "беспробудное пьянство победило природную лень". И даже не буду обещать писать часто, хотя бы потому что BGE вроде как того... заменяется другим движком, который Armory3d - лично для меня довольно - таки демотивирующая новость, потому что для перехода на этот движок мне надо новый комп покупать, а я еще BGE толком не изучил. В общем одно не слишком стабильное изделие заменяется на другое, тоже не слишком стабильное. Мимо UPBGE я так же пролетаю, по той же причине. "О, на этом месте мы горько плачем и не можем писать в рифму!.."(с)


    И вот на фоне печали и уныния, сквозь асфальтовую корку серой безнадежности, в безнадежном противостоянии черным цветам энтропии, именуемым в народе ленью, зародился в моем разуме некий шепоток: "Поделиться ты должен примером этим, с игроделами юными, в движках многих работать он будет..." Понятия не имею, как там в других движках, голосу виднее, но как выяснилось BGE умеет в фейковое освещение. Для тех, кто в танке - BGE не любит большого количества источников света в игровой сцене и плохо отрабатывает границы освещенной зоны. Но на помощь может прийти текстура, так сказать фейковая карта освещения, в которой будет записана информация о силе и цвете источника света, хотя правильно было бы сказать - зарисована. Как и положено текстурам, карта освещения подразумевает статичность, однако её вполне можно во время игры перерисовывать, по мере надобности - лампочку(и) там зажгли, скажем. Есть еще проблема небольшого несоответствия размеров, а так же разрешения текстуры, поэтому на большие площади такую карту без потери качества не кинешь, плюс сама зона освещения представляет собой экструдированные в плюс и минус бесконечность по оси Z "столбы пламенные"(с). Однако использование небольших по габариту сцен, перерисовывание карт и отказ от подъема(спуска) на большие значения Z "помогут отцу русской демократии"(с). И для начала КДПВ:


    Трапецевидное нечто, освещенное зеленоватым светом, это вроде как персонаж. У этого самого персонажа в материале две текстуры - одна "глобального освещения", другая - собственно текстура этого самого персонажа, я не стал ломать голову и кинул на него обычную ColorGrid, которую Блендер генерирует, что два пальца об асфальт. В "зоне белого света" оно выглядит так:



Вторая текстура представляет из себя картинку, наложенную в глобальной системе координат и растянутую на необходимый размер. Про наложение и растягивание текстуры распишу подробнее. Глобальная текстура по умолчанию виртуально натягивается на плейн , который расположен в мировых нулевых координатах и имеет размер стороны, равный двум. То есть левый нижний угол текстуры будет в координате X(-1), Y(-1), а правый верхний - X(+1), Y(+1), Z во всех случаях равен 0. Однако если изменить параметр Size в свитке Mapping (во вкладке самой текстуры, если что), то можно растянуть текстуру до нужных нам размеров. Например, разделив на 2, мы получим глобальную текстуру со сторонами от -2:-2 до +2:+2 по всем осям. Параметр Offset позволяет сместить текстуру по XY осям, в нужную сторону. Кстати, в ноде Mapping это параметры Location и Scale, только последний надо не делить, а умножать. В примере я сначала создал плейн нужного размера (от балды), затем наложил на него текстуру и с помощью вышеуказанных параметров добился более-менее нужного наложения текстуры, затем просто перенес полученные настройки в настройки той же текстуры в материале персонажа. Затем настраиваем наложение текстур в персонаже - карта освещения верхняя, кроме параметра Color, включен так же параметр Emit, потому что карта освещения же, в остальном как обычно (про размер и смещение текстуры не забываем). Текстура самого объекта расположена в слоте текстур ниже, наложена на объект по UV - развертке, галочка установлена напротив только Color, и режим применения текстуры выставлен Darken. В основном, в принципе объяснил, дальше смотрите файл:

Управление - WSAD, если как...

    И еще - экспериментируйте с типом наложения текстур, и прочим. вполне возможно вы найдете что-то полезное для себя. Например вот это освещенное не белым, а прозрачным цветом, эксперимента ради:

Комментариев нет:

Отправить комментарий