Здравствуйте, у меня возникла проблема на этапе сравнения двух AddSub - сравнение получается с артефактами, т.е. карты не одинаковые, хотя визуально 1 в 1. Мне кажется, что это из-за разрядности. У меня почему-то все ноды pixel processor с разрядностью L8 получаются, хотя у вас в видео L16. Не очень понимаю, что это за параметр и как его изменить. Получается я сравниваю ноду blend L16 и pixel processor L8 и на выходе артефакт. Не знаете, как это поправить?
Добрый день. Нажми на ноду пиксель процессора - и в base parameters измени output format на absolute. Тогда появится выбор битности ноды. В нем поставь 16 бит. Но может это тоже не решить ситуацию. Это все изза того что когда ты создавал проект ты по умолчанию его оставил 8битным. Это исправляется также.. Только нажимается на пустом месте графа 2 раза левой кнопкой мышки. Но если остались еще вопросы пиши в телегу - ник androfroll
Очень круто! Более подробных видео нет вообще! Благодарю!!! Просто даром для всех, вы добрый человек ! Кинула на донат развитие канала! Ребята, кто смотрит тоже, не игнорируйте, пишите комменты. шлите донаты, таких курсов нет нигде !!
Слушай, может ты мошешь помочь допедрить. В общем возникла задача, на вход пиксель процессора я подаю изображение. на котором есть некоторое количество белых линий на чёрном фоне. И пытаюсь сделать так, чтобы пиксель процессор в каждой строке изображения нашёл первый белый пиксель, двигаясь слева направо, и все пиксели в этой строке. которые правее окрасил белым, а все, что левее оставил чёрным. И так для каждой строки. если белого пикселя на исходном изображении не встретилось, то все пиксели в строке оставить чёрными. Что я делал. Создал отдельную входную переменную coordinate типа Float. На вход пиксель процессора подал ей начальное значение 1. В самом пиксель процессоре я сделал while Loop который работает, пока координата y из $pos меньше размера из $size. В тело цикла я засунул второй цикл. но он уже перебирает координату X. Далее я уже в тело этого вложенного цикла вставил проверку IfElse, для которой проверял яркость текущего пикселя из Sample gray, больше ли она чем 0.5, в if помещал значение x из $pos в else значение coordinate, далее выход этой ноды подавал на вход ноды Set где присваивал входное значение переменной coordinate всё это помещал в первый вход sequence. а во второй вход помещал IF Else, который проверял больше ли значение x из поз чем значение coordinate и если больше, то выводил 1, если меньше, то 0. Всё это уже подавал на вход тела того while loop который перебирал X. выходной нодой поставил первый while loop. Но ничего не получается. На выходе чисто чёрная картинка. Очень не хватает возможности писать кастомные ноды на языке программирования, любом. Там я понимаю, как это реализовать, а тут мне не хватает привычных инструментов.
Good afternoon. I added English subtitles here and in part 2... I'm not sure that it's all transferred very well. It might be better to use AI for automatic translation. Test it. If my version of the subtitles is adequate, then this way I will add subtitles to the rest of the parts.
@@artflow5769oh man that's really enough to understand what's going on in there. Thank you, I really appreciate your effort to put translate for us ❤❤
Hi! I have silly questions(I might delete this comment if I figure things out before you reply me, I love your contents but I don't want to bother you so much), I understand there is a malfunction(like something went on as we slide up and down the number of noise) on the function editor you created for the noise node. but why do we have to change it from linear to non-linear? and why do we have to change the curve kinda upside down at the timeline 1:34:16 / 1:39:46?
Круто!!! Жду уроки по этой странной ноде! Я вот так и не понял, как она работает: поток вроде сверху вниз, но одновременно и снизу вверх, где то там что-то зацикливается и снова отправляется вниз. Слоты никак не обозначены, только из некоторых видео понятно, что левый слот у цикла работает только один раз, а правый несколько. Короче, ничего не понятно. А ноды скачивать не интересно, всё равно не понятно, как внутри это работает :)))
Не совсем в тему видео, но в тему рандома. Гуглил, но не нашёл. Не знаешь можно ли сделать scatter который бы мог варьировать определённые параметры входящей ноды для каждого экземпляра, на основании random node. Что я делаю, у меня есть нода, в которой генерируется лист дерева, у неё экспознут набор параметров, которыми задаётся его форма. Я хочу, например, распределить эти листья по ветке случайным образом, мне нужно чтобы переменные отвечающие за форму каждого листа в некоторых пределах варьировались для каждого нового экземпляра на ветке. Конечно можно взять в scatter просто 3, 6, 10 или сколько ещё входов, но это не очень то гибко, хотелось бы сделать что-то универсальное, что будет работать для любого количества экземпляров одного листа. И в принципе жду не дождусь твоих уроков по FX node. пытался дома сделать при помощи ноды Scatter on spline распределять листья хотя бы одинаковые (пытался сделать из простых листьев составной. по типу как у папоротника, но понял, что она не умеет варьировать расстояние между экземплярами в зависимости от их масштаба, а масштаб мне нужно варьировать и я задаю его градиентом. Вот и расстояние между экземплярами мне нужно варьировать таким же градиентом.
По скаттеру с листьями - нее так пока дизайнер не умеет, чтоб входила составная нода листа с несколькими параметрами и он их распределял рандомно... Только кол-вом входящих форм можно разнообразить. Но там помоему ограничение по стоит на 6 форм. Но можно залезть в ноду и добавить больше. Или сделать свой скаттер (но это все на fxmap надо делать).. а по второму случаю - даа. я тоже столкнулся с такой проблемой что scatter on spline не умеет варьировать расстояние относительно масштаба формы. Тоесть просто бусы с рандомными шариками уже не сделать, хотя кажется простой задачей... Хотел переделать его под себя - чтоб можно было такую функцию добавить.. Но не хватило времени пока что. Вообщем пока ничем не помог) Но я работаю над всем этим)
@@artflow5769 в общем в любом случае нужно будет ботать fx ноды) Я пытался их сам ковырять почти ничего не понял, кроме того, что они явно мне понадобятся)) так что буду ждать ролики))
@@artflow5769 чем больше я пользуюсь дизайнером, тем больше одновременно с осознаванием его крутости и удобства для кучи фишек мне не хватает стандартных штук из ООП)) СОздать бы класс листьев, и на его основе генерить процедурно экземпляры этого класса с рандомизацией параметров. Эххх...
Что-бы прогресс не стоял на месте, пока я не выложил уроки п fx-map, могу порекомендовать вот этот канал. www.youtube.com/@andreizelenco4164 Тут в последнем видео фх-мап затрагивается. А так - три последних видео - это обучение. Очень рекомендую. Можно через яндекс баузер с переводчиком смотреть. Все в принципе понятно ;)
И еще один мини курс по fx-map есть годный - вот он www.artstation.com/learning/courses/lmq/intro-to-tool-creation-creating-a-tool-using-the-pixel-processor/chapters/w1po/intro Тут в первой части пиксель процессор можно пропустить. А вторая часть - fx-map
Просто обалденная информация и очень качественно всё преподнесено и разобрано буквально по косточкам!!! Спасибо огромное!!! Ещё бы по FX-map разобрать подробнее.
Фильтр смешивания, с появившимся в дизайнере While Loop и используя ноду sequence (чтобы параллельно с телом цикла ещё счётчик увеличивать на 1) получается теперь можно сделать с любым количеством сэмплов.
А почему вместо сравнивания случайно сгенерированного числа со всеми целыми из диапазона по очереди, не сделать ему Ceil и не не подать на вход ноде Switch Float 8 inputs?
@@artflow5769 да я сам узнал о нём, только ковыряя дизайнер под это видео, чисто такой "так есть же multi switch для обычных нод, может и внутри функций будет аналог, ну должен же быть! О, отлично вот он"
Вопрос возник. После создания пиксель процессора, умеющего вращать, он тайлит картинку, независимо от того, включён или отключён тайлинг у ноды. Можно ли от этого как-то избавиться? Я собственно пытаюсь сделать ноду. которая вращает и масштабирует некий шейп, относительно заданного центра трансформации. PS: с прочими преобразованиями то же самое. Пиксель процессор вообще умеет не тайлить изображения?
А если If/else делать не после вычисления ширины плитки, а сразу после перевода количества плитки во флоат. можно было бы избавиться от дополнительного деления 1 на ширину плитки по Y.
@@artflow5769 и это, кстати, плюс этих видео. потому что у смотрящего возникает и возможность и стимул оптимизировать показанные в видео алгоритмы. а это полезно для усвоения материала)
Долго я мучился, проверяя значения. и мучаясь в них. чтобы создать для ноды Transform 2d возможность экспозить угол и скейл, и таки смог. Правда надо будет переделывать таки под пиксель процессор, потому что я хочу сдвигать центр преобразований. Я делал себе до этого нужную ноду. совмещая всякий Non-uniform rotation и прочее, и оно работало именно так, как мне надо, но я тогда решил. что это костыли, хотя рабочие, но надо будет на пиксель-процессоре подобное провернуть..
Ну чтож. После отдыха и маниакального создания террейнов в тисяча и одной проге, я вернулся. Возникла мысль. Сначала подумал, что раз карта Position преобразует ювишные координаты в свои координаты, то было решил, что её может можно будет использовать, чтобы накладывать декали, но потом понял, что с её помощью, мы по сути рисуем не круг, а шар, который окрашивает модель внутри себя. Идею с проецированием двумерной текстуры таким образом пришлось отложить))
Привет! А не подскажешь, каким образом можно сделать один универсальный input для grayscale и color, чтобы он сам распознавал в зависимости от того какую ноду подключаешь?
А ещё Value processor удобен, если у нас есть параметр, с ним есть какая-то логика, результат которой используется для управления несколькими нодами сразу. И чтобы не копировать один и тот же код в несколько мест, удобно эту логику реализовывать в value processor.
В Add Sub получается, что там не совсем значение пикселя верхней картинки прибавляется или вычитается.. Если допустим верхний пиксель имеет значение 0.4 мы должны его вычитать, но по факту мы вычитаем не 0.4, а 0.2. Так же, если пиксель 0.6, мы прибавляем не 0.6 а те же 0.2. По факту мы вычитаем или прибавляем удвоеное растояние (разницу) от значения верхнего пикселя, до середины спектра (0.5). Имхо описание у этого режима неправильное. Мы работаем не с самим значением пикселя верхней картинки, а с его отклонением от среднего значения. PS: (я вместо облаков использовал два повёрнутых на 90 градусов к друг другу линейных градиента, мне так было нагляднее)) PPS: Ничего, что я пишу комменты по мере просмотра видео, а не большой финальный, когда посмотрю целиком? PPPS: Мне ещё понравится вариант без удвоения. Переход получается более пологим. хотя тоже линейным. Кажется имеет смысл создать собственную бленд ноду с понравившимися способами смешивания)))
Сейчас пока побыстрому закинул два градиента с поворотом одного на 90 градусов пропустил через самодельный AddSub - сравнил с "родным" - не обнаружил разницы..
Придираться к произношению иностранного языка, это конечно такое, но нода Сэмпл (Sample -В данном случае брать образец, в данном случае значение яркости с выбранного пикселя), а не Симпл (Simple - простой)))
Хех. Я помню как в фотошопе в своё время режимы наложения учил) Но там без собственно математики было, так как просто объясняли что они делают, а не писали их же руками. Теперь зато я точно их запомню)
Этот самый коэффициент, обсуждаемый на 42:20 находится в ноде Splatter Circular в разделе Size в непосредственно параметре Size. Там можно отдельно скейлить наш паттерн по обеим осям, но если обеим осям выставить одинаковый размер, то это и будет этот коэффициент. PS: только единицей там будет диаметр равный 1. Фактически в Shape скейл равный 1 это диаметр равный 1. Его я, собственно и взял в качестве регулятора. И формула для рассчёта получилась проще без подборов. Умножил большой радиус на 2пи (там такая отдельная нода есть, кстати) И поделил это дело на маленький диаметр(можно было оставить радиус, но мне было удобнее работать именно с диаметром)
Ещё не смотрел, но однозначно очень редкий материал, к тому же в таком огромном объёме, на русском, да ещё и бесплатно!!! Очень интересуюсь дезайнером, и в частности, функциями. В 13 добавили ноду цикла, что уже здорово! А в 13.1 сделали порталы, теперь не нужно тянуть соединения через весь граф, что очень удобно. А по пиксель-процессору я тоже делал два видео, т.к. думал, что это может кому-нибудь пригодиться.
Вау!. Да смотрел Ваши видео про пиксель процессор - это мне очень пригодилось :) и очень ждал продолжения по ним)). Но все равно спасибо за видосы по ним. Книгу шейдеров у Вас узнал и помоему про Андрея Зеленко. А про циклы - это то, что побудило меня выложить материал раньше, чем закончу с FX-map (и понял что правильно сделал). Так как некоторые функции можно уже с ним сделать проще и видео со временем могут стать не актуальными. И даже из-за 13 версии записал внеочередные видосы про vertex processor для контуров.
@@artflow5769Довольно сложная тема, а т.к. с программированием я не очень, поэтому рассказал, что знаю, и это была верхушка айсберга, и именно по этому продолжения не случилось. Ну, оно и к лучшему, зато Вы довели это дело до завершения, и у Вас это лучше получилось!!! По поводу самой техники процедурной генерации. До дезайнера было две крутых программы: Texture Maker (она даже на висте не запускается уже) и Genetica от Spiral Graphics. Последняя незаслуженно забыта, и мало того, даже раньше о ней почти никто не знал, но программа достойная даже в наше время, к сожалению уже давно заброшена, а её сайт удалён. Я ей иногда пользуюсь, некоторые моменты много удобнее, чем в дезайнере, к примеру есть свой векторный редактор, довольно продвинутый, а не то убогое SVG, что есть в дезайнере. Так же есть редактор тайловой генерации изображений, тоже очень продвинутый. Экзотикой можно считать, даже не знаю, как это назвать, генераторы демо-сцен (долго объяснять, что это), по сути, это те же самые игровые движки, но сильно урезанные и заточеные под анимационный контент, который рендерится в реальном времени. К примеру прога от немцев Werkkzeug, третья версия которой урезана до возможностей только лишь генерации текстур. Могу долго об этом говорить, т.к. ещё со времён 90-х в этой теме :)))
Отлично! Проги до дизайнера такие не слышал. Надо будет поискать инфу про них. Посмотреть что да как... С 90х в этой теме - низкий поклон!!!! Напишите мне как будет время - пообщаемся ;). В телеге можно попробовать по поиску androfroll. Либо если так не получится - на артстейшене или на бихайнсе в личке. Эти ссылки есть в информации о канале.
Желательно да, но я к примеру вспоминаю все по мере обучения в дизайнере. А что не знал - быстренько прохожу по ютубу)), так как сам многое забыл. А вспоминается все быстро - по ютубу и поисковику))). Тут обучение идет сразу с пряниками - ты вспоминил формулу - сразу сделал ее в дизайнере - и радуешся - экспериментируешь с другими параметрами - и сразу видишь результат - и еще сильнее радуешся. В школе такого небыло - сухое обучение. И это казалось в тягость. Так что думаю не обязательно надо знать хорошо математику, хотя это конечно дает тебе приемущество ;). Но основное идет от упертости и тяге к знаниям
Если работать на уровне нод Substance Designer и не лезть в программирование, то математические вычисления обычно там делаются на глаз. В данном видео вычисляются нормалки с помощью формул. Они важны именно для этого примера, но не обязателльно это все знать. Так как нода Normals есть уже готовая в дизайнере.
Извиняюсь за нубский вопрос, только вникаю. Где это может пригодится? Понимаю что Сабстенс дизайнер для создание текстур. Но это пока что темный лес и интересно на будущее, где это можно использовать и кому нужно?
Это может пригодится как раз в самом Сабстенс дизайнере. Есть некоторые задачи, которые нельзя решить стандартными методами, без использования переменных в фукциях. Допустим у тебя в графе два tile sampler и в них задается amount x=16 и y=16. И тебе надо сразу в обоих поменять amount на 64 и 64. Тут на помощь приходит объявление переменной и использования ее в двух нодах.
1. Управление параметрами нод со сложной структурой взаимоотношений, чтобы не делать всё это ручками и не вбивать параметры в каждую ноду. 2. Если нужно быстродействие и экономия памяти, то верный путь в Pixel Processor (в программировании аналог фрагментного шейдера на OpenGL, есть учебник на русском "Книга шейдеров"), который выполняется на GPU, т.е. на графическом процессоре, что в разы быстрее центрального. 3. Создание своих собственных нод, будь то генераторы (создание шумов, текстур и прочего), фильтры и прочее. 4. Создание сложных анимаций (да-да, дезайнер и такое может, правда результат будет виден только в Substance Player).