Displacement на Geometry Nodes
Разберем на примере, как работает дисплейс (displacement) – выдавливание неровностей, в Blender на нодах геометрии “Geometry Nodes”.
Добавим в сцену цилиндр (диаметр 0.1, без верхнего и нижнего закрывающих полигонов): shift+a – Mesh – Cylinder.
Перейдем в режим редактирования (tab) и добавим промежуточных ребер так, чтобы сетка получилась равномерной: ctrl+r – 100 – Enter.
Для дисплейса важно чтобы сетка была как можно более плотной.
Для того, чтобы включить ноды геометрии для текущего меша, добавим ему модификатор Geometry Nodes. Откроем в отдельном окне редактор нод геометрии Geometry Nodes.
Хотя мы и уплотнили сетку нашего цилиндра, для дисплейса этого все равно не достаточно. Поэтому для начала добавим в дерево нодов нод Subdivision Surface для еще большего подразделения сетки меша: shift+a – Mesh – Subdivision Surface, и установим уровень подразделения равный 2.
Для того, чтобы построить дисплейс на нодах, нужно понимать, что дисплейс – это собственно всего лишь сдвиг точек меша на определенную величину по направлению нормали.
Для любой точки меша у нас всегда известны два вектора: вектор положения этой точки в пространстве (position) и вектор нормали к этой точке (normal). В нодах геометрии эти вектора доступны через атрибуты меша.
Сумма векторов position и normal даст нам новые координаты точки – куда она должна быть смещена дисплейсом.
Сложить эти два вектора мы можем при помощи нода Attribute Vector Math.
Добавим этот нод в дерево нодов: shift+a – Attribute – Attribute Vector Math. В атрибуте “А” укажем “position” (Point – position), в атрибут “B” укажем “normal” (Face – normal). В поле “Result” укажем опять же “position”, что означает, что результат сложения векторов положения и нормали перезапишет положение точки.
В результате цилиндр увеличился в диаметре. Это произошло потому, что все точки поверхности цилиндра сместились по нормалям на одинаковую величину. Собственно мы получили равномерный дисплейс по всей поверхности меша.
Для того, чтобы контролировать величину дисплейса – на сколько именно будут сдвинуты точки, проще всего изменять величину вектора нормали. Умножим вектор нормали на числовой коэффициент. Сделать это можно при помощи все того же нода Attribute Vector Math. Добавим его перед уже имеющимся таким же нодом.
Т.к. вектор нормали всегда нормализован (его длина всегда приводится к единице), мы не можем направить результат умножения снова в атрибут “normal” – он снова нормализуется, и мы не увидим никакого эффекта. Поэтому в “Result” укажем “height” – создадим новый атрибут, в который будет помещен результат умножения.
В последующем ноде Attribute Vector Math вместо “normal” на входе “B” укажем созданный атрибут “height”.
В итоге мы получаем смещение точек поверхности меша вдоль номалей на величину нормали умноженной на коэффициент. Скроллируя значения во входе с вектором мы видим, как меняются размеры цилиндра.
Однако дисплейс на объекте все еще равномерный – все точки смещаются одинаково.
Чаще всего для указания, какие именно точки меша нужно смещать используются текстурные карты.
Перейдем на вкладку текстур объекта в окне Properties и создадим новую текстуру. Выберем тип “Wood” и включим параметр “Color Ramp” для придания линиям четкости.
Добавим такой нод в наше дерево нодов и укажем в нем созданную ранее текстуру. Для входа “Mapping” выберем атрибут “UV Map”: Face Corner – UV Map. В поле “Result” укажем название для нового атрибута, который будет управлять распределением дисплейса – “factor”.
В следующем ноде Attribute Vector Math изменим вход “B” с вектора на получаемый с текстурной ноды атрибут “factor”.
В результате мы сразу видим, как изменилась форма цилиндра. Дисплейс работает только на участках поверхности, по которым проходят белые линии, а там где на поверхности меша проходят черные линии – дисплейса нет.
Это происходит потому, что теперь мы умножаем величину нормали не на постоянное значение, а на значение в точке, которое определяется текстурой: черные области – 0, белые – 1.
Однако теперь мы потеряли возможность вручную регулировать высоту дисплейса, она определяется только текстурой. Добавим между нодами Attribute Sample Texture и Attribute Vector Math нод Attribute Math.
Таким образом, мы просто умножаем значение, полученное из цвета текстуры на число, что дает нам возможность влиять на величину дисплейса. Скроллируя значение в этом поле, мы видим, как меняется величина дисплейса на цилиндре.
Для того, чтобы сделать результат более красивым, отрегулируем положение текстуры на цилиндре. Добавим в дерево нодов перед текстурным нодом еще один нод Attribute Vector Math. На входе “A” укажем атрибут “UV Map”, вход “B” сделаем векторным, установим операцию “Multiply”, и в поле “Result” укажем новый атрибут “mapping” в который будет транслироваться отрегулированная UV-карта.
Источник
Трудности и «глюки», возникающие у новичков в программе Blender, и как их преодолеть
Blender это замечательный бесплатный 3d пакет, который делает возможным и доступным осуществление гигантского количества проектов, и, как человек, прошедший путь от абсолютного новичка в 3d до преподавателя данной программы в учебном центре «Специалист» в Москве, я могу поделиться несколькими типами, которые помогут преодолеть несколько несложных, но каверзных моментов, которые хоть и очень просты, но далеко не очевидны, и могут заставить просидеть несколько часов в поиске решения проблемы.
Перевод программы и подсказок
Перевод программы и подсказок — Blender, как и почти все программы является англоязычной, но в настройках (preferences) мы можем сделать его интерфейс русскоязычным. Переводить его полностью на русский язык я бы не советовал, т.к. названия всех терминов и команд почти необходимо знать на английском языке для дальнейшего развития, и, так или иначе, много из них заимствовано великим и могучим русским языком и используется всеми и повсеместно (нормали, фейсы, вертексы и т.д.). А вот перевод подсказок действительно может упростить процесс входа в программу и снять много вопросов в процессе их появления. Окошко с подсказкой возникает при наведении курсора мыши на любой элемент blender.
Для того чтобы активировать подсказки, если они не работают, нужно зайти в меню Edit-Preferences-Interface. Поставить галочку напротив Tooltips.
Для активизации перевода подсказок в том же разделе открываем выпадающее меню Translation, ставим русский язык, и галочку напротив Affect Tooltips.
Забагивание области просмотра
Следующая проблема с которой я постоянно сталкивался это забагивание области просмотра — при попытке панорамировать вид\приблизиться\отдалиться от объекта, blender упорно отказывается это делать, точнее делает это очень медленно . Тут помогает функция Frame, которая перезахватывает выбранный объект во вьюпорте и данная проблема устраняется.
Находится эта функция в меню View-Frame selected.
Clipping
Некст проблема это clipping — при попытке работать с объектом на близком расстоянии область обрезает часть нашего объекта, и мешает нам работать.
устраняется заходом в боковое меню нажатием кнопки N, и во вкладке view в выпадающем меню view, уменьшаем значение Clip Start (Например 0,001)
Нормали
Следующая проблема это нормали — будь то незнание того — что это? или незнание того — как их привести в правильное положение. Проблемы с нормалями возникают например при попытке запечь карты деформации, во время скульптинга, при попытке нажать Shade smooth и тд.
-Нормали это вектор перпендикулярный плоскости полигона, который указывает блендеру куда ему отражать свет. Направлен этот вектор только в одну сторону, то есть если нормаль вашего полигона развернута внутрь объекта, как часто случается в blender, то из за этого у вас будут проблемы на каком-то этапе работы.
Как мы можем видеть на данном изображении — все нормали объекта, кроме трех выделенных, повернуты наружу, а три выделенные — внутрь. При обычном режиме затенения Shade flat — этого не видно, но если я включу режим затенения shade smooth, то результат будет совсем иным.
Проверить направление нормалей своего объекта я могу перейдя в edit mode, и в выпадающем меню overlays поставить галочку напротив Face orientation . Тогда все нормали повернутые наружу будут отображаться синим цветом, а направленные внутрь — красным. В этом же меню Overlays я могу включить отображение нормалей как векторов.
Развернуть нормали нам помогут функции Mesh-Normals-Flip (или recalculate outside)
Flip — развернет выделенные полигоны.
Также мы можем выделить все полигоны объекта (шорткат А) и нажать Recalculate outside чтобы blender автоматически пересчитал все наши полигоны наружу.
За направлением нормалей лучше следить.
Двойные вертексы
Двойные вертексы — часто в процессе моделирования и оперирования командой Extrude могут создаться вертексы, которые стоят друг в друге и будут портить нашу топологию, это может нам аукнуться на этапах UV развертки, создания рига и тд. Чтобы избежать этого, на промежуточных этапах работы можно выделять всю свою модель в режиме работы с вершинами и нажимать Mesh-clean up-merge by distance. Двойные вертексы будут объединяться.
Карты нормалей
Карты нормалей запеченные в других программах (substance painter, Zbrush) дают странный результат в Blender .
Проблема в том что карты нормалей, в вышеперечисленных, и не только, программах, запекаются c использованием DirectX, а blender работает с OpenGL. Если говорить простым языком то нам нужно развернуть зеленый канал на карте нормалей. Делается это следующим образом:
Надеюсь, что данный пост поможет людям, осваивающим блендер, проскочить несколько часов поиска решения проблем!
Источник
Проблема с Displacement
Добрый день! Почему может не работать Displacement? Даже в слоте материала не работает. С этой же текстурой Bump работает, а Dsplcmnt нет. Текстура в оттенках серого.
Спасибо, галочка включена. Вообще фигня какая-то даже в новой пустой сцене с другими картами не работает.
есть такой глюк у короны, особенно у не лицензионной.
Попробуйте использовать Use real world scale в материале и в UVW map-e.
Если корона 5.0 используйте карту corona bump converter
есть такой глюк у короны, особенно у не лицензионной.
Попробуйте использовать Use real world scale в материале и в UVW map-e.
Если корона 5.0 используйте карту corona bump converter
Получилось. Спасибо огромное.
есть такой глюк у короны, особенно у не лицензионной.
Попробуйте использовать Use real world scale в материале и в UVW map-e.
Если корона 5.0 используйте карту corona bump converter
Получилось. Спасибо огромное.
пират детектед
есть такой глюк у короны, особенно у не лицензионной.
Попробуйте использовать Use real world scale в материале и в UVW map-e.
Если корона 5.0 используйте карту corona bump converter
Получилось. Спасибо огромное.
пират детектед
Поэтому у меня теперь 3ddd плохо грузится?)
Поэтому у всех теперь 3ддд плохо грузится. Вот видите что вы наделали своим пиратством!
Поэтому у всех теперь 3ддд плохо грузится. Вот видите что вы наделали своим пиратством!
Ну главное, что мы нашли виновника
А если серьезно, то прям беда конечно, хуже всего результаты поиска пытаться посмотреть. Надеюсь, скоро починят.
Источник