Флеш шейдер

Список разделов Геймдев в Blender Игровой движок Blender

Описание: Все вопросы и обсуждения, касающиеся BGE
Модераторы: exooman, denis8424

  • 3

Сообщение #1 Николас » 20.03.2017, 19:06

Здарова всем.
Хотел создать светошумовую гранату на шейдере (2d фильтре), а она еще кс 1.6 шейдерная, но такого фильтра и примера не нашёл. Потом мне один товарищ подкинул пример простого шейдера, но вот управление затенением из клавиатуры и ручками. И добавил, мол дальше сам разбирайся, можно ещё через проперти и цвет задавать.
И вот как то не идёт у меня, туплю трындец как. Может кто шарит в этой теме, помогите неуку поставить таймер, с задержкой убывание, ну если осилите и цвет затенения, вааще круто будет.
Этот шейдер так же планировал ставить при старте гейм левела, и конце, что бы не тупо уровень появлялся сразу, а от белого к нормальному затенению, и в конце на оборот. Как бы пример не только мне может стать интересным.
Файл примера, затенение стрелками вверх и низ:

Добавлено спустя 2 часа 58 минут:
Ого, произошло чудо - не успел создать тему, как сам (с Божьей помощью) нашел решение с таймером.
Вот пример с флеш стартом, флешем при столкновении с фиолетовым кубом и флешем при выходе.
Смотрите во вложении, обновил пример.
Вложения
flash example.blend.zip
(123.77 КБ) Скачиваний: 10
Николас M
Сообщения: 40

Сообщение #2 Bibo » 21.03.2017, 10:15

Если все на мази, закинь в тему примеров, будет кстати начинающим шейдерописцам.
Bibo
Аватара
Сообщения: 386

Сообщение #3 Николас » 21.03.2017, 15:27

Bibo, как флеш гранату пока рано, все флешится во всех направлениях, а вот как флеш старт и флеш выход - уже можно.
Николас M
Сообщения: 40

Сообщение #4 Николас » 22.03.2017, 15:37

Кто понимает Python, прошу помощи в решении, как мне кажется, не сложной для программиста задачи. Я создаю объект "гранату", флеш шейдер уже есть, теперь надо лишь написать (адаптировать) скрип, при котором при отворачивании от гранаты будет меняться заданное игровое свойство с 1, на 0. Дальше я сам доделаю и выложу готовый пример. В выложенном мною примере шейдера Lensflare (Blender Game Engine примеры) есть такая функция. Там при отворачивании от солнца или когда перед камерой препятствие, свойство sundirect меняется на 0, и обратно на 1 при повороте к нему. То есть, код есть, его осталось адаптировать под гранату, но не с моими познаниями в python (хоть там и пару строк).
Давайте как то вместе осилим такую тему. Я уже и шейдер нашел, и логику сделал (доделаю), смоделю гранату нормальную (если надо, текстуры в трех разрешениях)... осталось лишь с отворачиванием решить вопрос.
Может кто нибудь захочет создать игру по типу КС, а тут уже и решение с гранатой будет.
Вот основа для экспериментов - правой кнопкой мыши бросать гранату. Все работает, осталось только отключение при отворачивании сделать...

Отключения шейдера для последующей гранаты я потом устраню, энто сейчас не критически.
Вложения
flash_grenade_TMP.blend.zip
(122.96 КБ) Скачиваний: 3
Последний раз редактировалось Николас 22.03.2017, 17:07, всего редактировалось 3 раз(а).
Николас M
Сообщения: 40

Сообщение #5 dron » 22.03.2017, 16:06

логикой сделай) все проперти которые есть у объекта с 2d фильтром попадут в сам фильтр как uniform int name или uniform float name
Данный контент распространяется под лицензией "Creative Commons BY-SA" если не указанно иного.
http://creativecommons.org/licenses/?lang=ru
dron M
Аватара
Сообщения: 25

Сообщение #6 Николас » 22.03.2017, 17:00

dron, в предыдущем сообщении я приложил рабочий файл (доложил) , покажи как. Надо сделать так - если я вижу гранату, меня слепит, если пропала из обзора куда либо - не слепит.

...как uniform int name или uniform float name...
- и больше так не издевайся...

Добавлено спустя 21 минуту 55 секунд:
И еще вопрос - можно ли в Блендере сделать так, что бы шейдер срабатывал только на одну выбранную камеру?
Например, если назначить шейдер на одну камер, а вторая будет без него, во второй сработает шейдер?
Последний раз редактировалось Николас 22.03.2017, 20:49, всего редактировалось 1 раз.
Николас M
Сообщения: 40

Сообщение #7 dron » 22.03.2017, 17:55

нужно логику с фильтром перенести на камеру, а мне лень на самом деле да и времени нет)
Николас писал(а):а вторая будет без него, во второй сработает шейдер
фильтры применяются к экранной области, а не к камере (после отрисовки сцены перед камерой рисуется прямоугольник к которому и применяется этот шейдер) так что нужно будет отключать их
Данный контент распространяется под лицензией "Creative Commons BY-SA" если не указанно иного.
http://creativecommons.org/licenses/?lang=ru
dron M
Аватара
Сообщения: 25

Сообщение #8 Николас » 22.03.2017, 22:07

dron,
нужно логику с фильтром перенести на камеру, а мне лень на самом деле да и времени нет)
как бы, вроде сделано. Добавил даже свойство grenade_direct - если на 0, то логика сработает, а вот шейдер не включится.
Вложения
flash_grenade_TMP_01.blend.zip
(123.3 КБ) Скачиваний: 3
Николас M
Сообщения: 40

Сообщение #9 Николас » 23.03.2017, 22:36

Здарова всем.
Вот уже сделал почти что все, осталось только сделать так, что бы при отворачивании или когда граната за преградой, менялось игровое свойство grenade_direct на 0 и флеш не срабатывал.
Может кто знает как решить такую проблему?
Файл (описание во внутреннем текстовом файле) - Пример гранаты
Николас M
Сообщения: 40

Сообщение #10 Bibo » 24.03.2017, 10:39

Послать луч из положения камеры в направления гранаты в момент взрыва. Если между камерой и гранатой есть преграда - шейдер не срабатывает. Иначе, взять полученный вектор луча и измерить угол между ним и вектором взятым из локальной матрицы ориентации камеры по оси Z. Если угол больше определённого значения - шейдер не срабатывает.

Добавлено спустя 43 секунды:
Николас писал(а):Файл (описание во внутреннем текстовом файле) - Пример гранаты
В примере FPS превышает 600, все слишком быстро.
Bibo
Аватара
Сообщения: 386

Сообщение #11 Николас » 24.03.2017, 14:51

Bibo,
Послать луч из положения камеры в направления гранаты в момент взрыва. Если между камерой и гранатой есть преграда - шейдер не срабатывает.
и это я понял, но как такое сделать?
В примере FPS превышает 600, все слишком быстро.
в примере отключена вертикальная синхронизация, и отключена функция - использовать частоту кадров (свойства/визуализация/система), все можно обратно включить.
Вот, даже реализовал за счет сенсора радар отворачивание - Пример (частота и синхронизация по умолчанию) конечно лучше бы скрипт, который при условии попадания гранаты в вид камеры, активировал включение шейдера...
Теоретически, то что видит камера, за счет скрипта можно перевести в действие - вижу гранату, смена игрового свойства на 1, не вижу на 0. Вот только как такое сделать? Хороший бы скрипт получился, универсальный. Его можно было бы использовать для других атмосферных эффектов...
Николас M
Сообщения: 40

Сообщение #12 Bibo » 25.03.2017, 10:17

Что-то я перемудрил со своим прошлым ответом :facepalm:
Николас писал(а):, то что видит камера, за счет скрипта можно перевести в действие - вижу гранату, смена игрового свойства на 1, не вижу на 0.
KX_Camera.sphereInsideFrustum, проверяет наличие сферы внутри области камеры.
Bibo
Аватара
Сообщения: 386

Сообщение #13 Николас » 25.03.2017, 16:52

Bibo,
KX_Camera.sphereInsideFrustum, проверяет наличие сферы внутри области камеры.
- я синтаксиса python пока не знаю, там еще и к свойству надо обратится... Да и чего то я не понял, зачем проверять наличие сферы внутри области камеры - по такому принципу действует сенсор "рядом" - фиксируется все что внутри заданного радиуса?
Короче, лучше возьми пример и сделай сам, а то я в этом баран - прям стишок получился. :rofl:
Николас M
Сообщения: 40

Сообщение #14 Николас » 05.04.2017, 22:38

Здарова всем!
Вот, все уже готово.

https://cloud.mail.ru/public/L3L8/2UHpPzNyR
Николас M
Сообщения: 40


Вернуться в Игровой движок Blender

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 1 гость