как засунуть результат работы нода glare в альфаканал png ?

Список разделов Blender 3D Другие возможности Blender

Описание: Обсуждение остальных возможностей Blender
Модератор: exooman

Сообщение #21 СамСуCам » 11.02.2017, 13:12

Levitanus, привет, математик)
Levitanus писал(а):За неспособность умножить яркость пикселя на его альфу.
Тоже самое выходит, почти. Хотя, если в чб переводить не обычным методом, а с раздлением каналов, чтобы красный канал тоже учитывался, то наверно результат изменится.
Да, сделаем альфа-канал из яркости пикселя.
И я смотрю, тебя не удивляет разница между 2 и 3. Там микс тех же файлов! Вот где ещё непонятки.
И разница между 1 и 2, ибо там одно и то же, только в случае 2 мы миксуем сохранённые изображения.
Проблема с миксом меня больше напрягает.
Вот :)
В любой непонятной ситуации спи, кушай и улыбайся. SATtva
Моя галерея Ежедневный конкурс моделирования в Blender
СамСуCам M
то добрый, то злой админ
Аватара
Откуда: Русь, Китеж
Сообщения: 3412



Сообщение #22 Levitanus » 11.02.2017, 17:51

Ну вот, ленивцы-заказчики наконец-то заплатили, теперь могу подробно описать, почему мы были не правы.
graphite писал(а):где в файле получается изображение которое картинка Б
Это логическая ошибка из разряда задачек на дебет-кредит.
Что такое альфа? это значение прозрачности на которое умножаеются каналы пикселя.
Года мы имеем дело с любым эффектом свечения, то что мы имеем?
К примеру, условный градиент 255 255 255 (1) - 0 0 0 (1). В середине соответственно, будет 125 125 125 (1)
Теперь мы, руководствуясь умозаключением что чем ярче свечение тем менее оно прозрачно - умножаем цвет свечения на само себя, чтобы получить плавно угасающую альфу.
В итоге по краям мы имеем логичные точки: 255 255 255 (1) - 0 0 0 (0), но в середине происходит беда:
125 125 125 (0,5). То-есть, в этой точке имеем реальную яркость каждого канала не 125, а 63. Изменяется кривая спада яркости свечения. я говорю о яркости, т.к. мы накладываем на черный, но с любым другим задником эффект будет примерно равноценен, мы просто теряем цвет пропорционально его яркости.

Как этого избежать? (за исключением редких случаев)
Если основной объект требует быть непрозрачным, то-есть с альфой 1, надо отделить объект от свечения, что реализуется разделением изображения Б на два: Б1 - оригинальный рендер и Б2 - свечение. Б1 накладывается на фон через альфу, а Б2 через screen или add (какой лучше сработает).

Когда этот метод не работает? когда мы имеем дело с платформами вроде интерфейсов программ, не умеющих накладывать как-то по-другому, нежели простым смешиванием через альфу. Появилась идея, как заставить это работать на практике, но увы, не. Тут равенства достичь не получилось.

Добавлено спустя 3 минуты 40 секунд:
Да и принципе, если уж пошла пьянка по наложению через альфа - дальше встает только вопрос настройки композитинга и свечения, учитывая механику накладывания через альфу. То-есть, перед выходом изображения ставить еще один color mix с любым фоном, который будет смешивать по коэффициенту альфы.

Добавлено спустя 17 минут 27 секунд:
оппа! Ан нет, блендер с png что-то косячит.
Не, все что я описал выше абсолютно релевантно. Но, исходя из этой логике я сейчас сделал то, что делают в 2в для эффекта свечения (цвет неизменен, альфа угасает): смешал белый цвет с выходом glare по каналу цвет, потом отправил на выход с уже известно как полученной альфой. То-есть, в теории в центре должно было получиться 255.255.255 (0,5), т.е. приближенно те же самые 125 125 125 (1) в смешанном с черным по альфе картинке.
Но вышло чисто белое свечение еще и жуткими пятнами. Либо баг, либо тоже просчет. Скорее всего просчет, т.к. хрен его знает как он смешивает по каналу цвет. Когда экспортирую в exr все пучком, что имеем на входе - то же и на выходе. Но вот в gyu? видимо, все упирается в то, что значения на выходе ноды с цветом превышают 255, как числа с плавающей точкой. При сокращении получаем тупо белое свечение. И вот как это нормально сделать в композиторе - надо подумать

Добавлено спустя 33 секунды:
P.S. Но способ с двумя изображениями Б остается правильным для более чем половины случаев.

Добавлено спустя 25 минут 39 секунд:
ну вот, теперь я однозначно уверен, что проблема в преобразовании чисел с плавающей точкой в более низкие порядки. Умножил каждый канал результирующего однородно-яркого изображения на 0,5 - фрагментарно появился цвет. Дальше - дело техники.
Изображение

Добавлено спустя 1 час 9 минут:
Ха-ха-ха. Вьювер сломан, поэтому не сохраняйте результаты ноды glare в png, используйте exr. Собаки)
http://blender.stackexchange.com/questions/57816/ ... nt-instead-of-black-background

Блин, ну тут проще всего, выходит, взять вот такую штуку
https://www.reaconverter.com/convert/exr_to_png.html
И перевести разом exr в png.

Тут уж с чем проще возиться, с двумя секвенциями для разного смешивания, или с конвертером....
А сейчас я осознал, что в интерфейсах отлично у меня работал blur, потому что я всегда машинально подсветку делал им. А glare дальше композера у мя не ходил) Прошу прощения за дезу.
пишу музыку, примеры тут
Levitanus M
Аватара
Откуда: Новосибирск
Сообщения: 858



  • 1

Сообщение #23 graphite » 11.02.2017, 20:28

понаписал то понаписал :)

я вот так пытался делать. с зелёного нода выходит то что нужно.
Спойлер
Изображение
там нет значений за пределами единицы , я проверял математическими нодами greater than 1 и less than 0

при сохранении результата в пнг и последующем его открытии в композиторе он даёт правильный результат при смешивании с чёрным фоном через alpha over с включенным premultiplied

при сохранении в openEXR и последующем открытие в композиторе он даёт правильный результат при смешивании с чёрным фоном через alpha over без включения premultiplied

разные результаты только из-за типа файла....
даже если открыть в композиторе exr и сохранить в png, то png будет аналогичен сохранённому из зелёного нода...

казалось бы exr то что надо, сохранял бы в exr и не создавал бы эту тему, да?

а вот хрен ;-(
при наложении через альфу(alfa over) в видеоредакторе на чёрный фон, совсем не такой результат как должен быть и в premultiplied и в straight режиме.
Последний раз редактировалось graphite 11.02.2017, 21:08, всего редактировалось 1 раз.
graphite M
Аватара
Сообщения: 1053

Сообщение #24 Levitanus » 11.02.2017, 20:43

а вот чего я не понимаю, это почему здесь все равобает?

Добавлено спустя 6 минут 22 секунды:
graphite писал(а):а вот хрен ;-(
при наложении через альфу(alfa over) в видеоредакторе на чёрный фон, совсем не такой результат как должен быть и в premultiplied и в straight режиме.

и правда. хрень какая-то
Вложения
alpha test.rar
(113.61 КБ) Скачиваний: 47
пишу музыку, примеры тут
Levitanus M
Аватара
Откуда: Новосибирск
Сообщения: 858



Сообщение #25 graphite » 11.02.2017, 23:37

Levitanus, я всё никак не могу понять что показывают ноды которые к render layer прикручены,
и что за файлы Apng и Bpng.
поясни плиз

и ещё не пойму где что работает?
вот попробовал наложил в видеоредакторе блендера через альфу, ну такая же разница что и у меня была с самого начала.
Спойлер
Изображение
я никак не пойму что я упускаю.

Добавлено спустя 1 час 36 минут:
решил сделать ход конём :)
наложил exr, ту что правильный результат в композиторе даёт, на плоскость
смешал в суслике через альфу шейдеры эмишн и холдаут включил прозрачность и...
в превьюхе как надо, в композиторе тоже пойдёт, сохранил пнг.., таже хрень что и раньше, альфа изменилась свечение уменьшилось.

вот теперь я окончательно убедился что пользоваться пнг для сохранения картинок с альфой в блендере как то сомнительно то ли блендер тупит то ли пнг .
надо искать чем заменить...
graphite M
Аватара
Сообщения: 1053

  • 1

Сообщение #26 Levitanus » 12.02.2017, 01:39

graphite, Как я понял, это глюк блендера с экспортом некоторых вещей с прозрачностью. (скажем, emission на ноде volume, не дополненный volume scatter. Или нода glare, с нодой blur все отлично), связанный с тем, что в png альфа должна быть предумноженна, а блендер ее выпускает непредумноженной.
Описанный мной способ с наложением screen все еще релевантен и дает достаточно близкий реультат в gimp и идентичный в blender. В видеоредакторе блендера не пробовал, ни разу им не пользовался...
graphite писал(а):вот попробовал наложил в видеоредакторе блендера через альфу, ну такая же разница что и у меня была с самого начала.
composite выводит картинку А
первый вьювер выводит картинку Б
сохраняем обе, потом вставляем в ноды image соответственно названию, А сверху, Б снизу.
Блендер производит полное вычитание наложения Б на черный фон в обоих комбинациях (а вычитаем из Б, и Б вычитаем из А). НО гимп этого уже не делает, хотя казалось бы, действия проделанны одни и те же.

Добавлено спустя 2 минуты 35 секунд:
кстати, graphite, не пробовал конвертить EXR в png сторонним конвертером? Вряд ли блендер с системной неспособностью правильно экспортировать сабж в PNG вдруг умудрится сохранить снимок правильно...
пишу музыку, примеры тут
Levitanus M
Аватара
Откуда: Новосибирск
Сообщения: 858



  • 1

Сообщение #27 graphite » 12.02.2017, 01:56

Levitanus, а терь вроде понятно , спс.
но вот мне надо через альфа овер, он работает как наложение в других программах( да и в том же видеоредакторе блендера), ну или очень похоже.
в композиторе подмешать свечение потом вообще никаких проблем не составляет, там просто нужно выход с нода glare c микс равный 1 сохранить на чёрном фоне. а потом в любой момент просто наложить на изображение (add).
для композитора с альфой мучится вообще смысла нет.

для меня вот загадка почему правильную exrку видеоредактор не так воспринимает. в материалах суслика её альфа работает как надо, в композиторе тоже, в фотошопе тоже всё ок. чё это вдруг видеоредатор то выпендриться решил...

Добавлено спустя 6 минут 46 секунд:
Levitanus писал(а):кстати, graphite, не пробовал конвертить EXR в png сторонним конвертером?

слушай, вот не подумал. сейчас экспортнул фотошопом, свечение уменьшилось как и в блендере.
graphite M
Аватара
Сообщения: 1053

Сообщение #28 Тарас-прогер » 06.11.2017, 19:13

Levitanus писал(а):Это логическая ошибка из разряда задачек на дебет-кредит.
Что такое альфа? это значение прозрачности на которое умножаеются каналы пикселя.
Года мы имеем дело с любым эффектом свечения, то что мы имеем?
К примеру, условный градиент 255 255 255 (1) - 0 0 0 (1). В середине соответственно, будет 125 125 125 (1)
Теперь мы, руководствуясь умозаключением что чем ярче свечение тем менее оно прозрачно - умножаем цвет свечения на само себя, чтобы получить плавно угасающую альфу.
В итоге по краям мы имеем логичные точки: 255 255 255 (1) - 0 0 0 (0), но в середине происходит беда:
125 125 125 (0,5). То-есть, в этой точке имеем реальную яркость каждого канала не 125, а 63. Изменяется кривая спада яркости свечения. я говорю о яркости, т.к. мы накладываем на черный, но с любым другим задником эффект будет примерно равноценен, мы просто теряем цвет пропорционально его яркости.
На самом деле ошибка в не понимании того, а что вообще хотите. Если альфа определяется свечением, то само свечение и должно убывать квадратично от исходной функции убывания, которая без альфы. То есть там и должно быть 63. Не нравится? Что нибудь одно. Или добиваетесь, чтоб понравилось, или верите результату. Определитесь с постановкой для начала. Хотите получить определённую картинку? Или смешать по альфе, зависящей от одной из смешиваемых картинок, причём, так, как эту зависимость описали?
Тарас-прогер
Сообщения: 91

Пред.

Вернуться в Другие возможности Blender

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

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

cron