Как перевернуть текстуру в блендере
Поворот материала\текстуры на объекте
Здравствуйте, подскажите: чем, каким инструментом можно поворачивать текстуры на модели. Я наложил текстуру дерева и мне нужно повернуть текстуру волокнами вдоль, а не поперёк как вышло. Точнее у меня вышло наискось.
А если бы посмотрел пару уроков из рубрики Материалы и текстуры, то вопрос бы не возник.
Я делаю модель на Blender render, а не с Cycles.
Там принцип тот же, только параметры не в нодах, а в меню (с разверткой вовсе идентично).
Артём, позвольте вас поправить.
В blender render можно использовать ноды, как и в люксрендере.
http://s014.radikal.ru/i327/1507/50/519b4283a8d1.png
Изза того что ПК на работе хилый, приходится осваивать рендер блендера т.к. он порою заметно быстрее.
Ничего не могу ответить, так как LuxRender не пользовался никогда. Знаю что в Internal есть ноды и с их помощью можно даже толковые материалы собрать, но все равно Cycles не достижим 🙂
Авторизация
Рубрики
О сайте
На данном сайте Вы сможете найти множество уроков и материалов по графическому
редактору Blender.
Контакты
Для связи с администрацией сайта Вы можете воспользоваться следующими контактами:
Следите за нами
Подписывайтесь на наши страницы в социальных сетях.
На сайте Blender3D собрано огромное количество уроков по программе трехмерного моделирования Blender. Обучающие материалы представлены как в формате видеоуроков, так и в текстовом виде. Здесь затронуты все аспекты, связанные с Blender, начиная от моделирования и заканчивая созданием игр с применением языка программирования Python.
Помимо уроков по Blender, Вы сможете найти готовые 3D-модели, материалы и архивы высококачественных текстур. Сайт регулярно пополняется новым контентом и следит за развитием Blender.
Blender Render, нод mapping, повернуть текстуру
Главная › Форумы › Материалы и текстуры › Blender Render, нод mapping, повернуть текстуру
Всем трям!
Нужно: натянуть несколько текстур на объект для последующего запекания в одну диффузную карту. (Конечный итог — игровой объект. Cycles не предлагайте, блендер файл будет экспортирован в третий софт для дальнейшего допиливания и по условиям требуется объект именно в Blender Render).
Проблем: на некоторых частях объекта текстуру нужно смасштабировать/повернуть. Стандартными средствами для работы с текстурами я ее могу только масштабировать/оффсетить. Но не повернуть.
Попытка повернуть текстуру нодами не увенчалась успехом =( Допускаю, что трабла в моем слабом понимании работы с ними (ни в зуб ногой, метод научного тыка не зарулил).
На данный момент все выглядит так:
Если я оперирую бегунками с секции маппинг в меню свойств (на скрине справа) текстура на объекте изменяется. А вот если я пытаюсь настроить положение текстуры в ноде mapping — не происходит вообще ни-че-го =(
Что я делаю не так?
И как вообще можно повернуть текстуру, не прибегая к манипуляциям с uv-разверткой и поворачиванию в 2d-редакторе?
Вместо выхода Global (нод Geometry) подключи выход UV.
Спс за ответ, но нихт арбайтен. При любых выходах нода Geometry нод Mapping делает вид, что его ничего не колышет.
На всякий случай: в Блендере 2.76 такая же шняга, так что это не ошибка конкретной сборки.
Ага, заработало! Ларчик просто открывался:
1. N панель => Shading => GLSL
2. панель свойств => текстура => галочка Enable/Disable снять
По совокупности этих двух факторов нод меппинг работает. \О/
Вращение текстуры нодами
Для того, чтобы добиться нужного расположения текстуры на поверхности объекта необходимо иметь удобный инструмент для манипуляций с текстурными координатами. Особенно, если текстура процедурная и наложена на объект без использования развертки.
Нод Mapping, совмещающий в себе инструменты перемещения, вращения и изменения масштаба текстуры, покрывает большинство задач текстурирования. Однако часто его возможностей недостаточно. Его основной недостаток в том, что он позволяет задавать значения для регулировки только в определенных полях внутри самого нода. Эти поля не имеют выходов наружу и к ним нельзя подсоединить связи от других нодов дерева.
При помощи связки других нодов можно реализовать нужный функционал, лишенный недостатка нода Mapping. Рассмотрим, как построить связку нодов для вращения текстуры вокруг оси Z объекта на случайную величину.
Должна получиться следующая заготовка для дальнейшей работы:
Итак, нам нужно повернуть текстуру Gradient Texture вокруг оси Z сферы.
В качестве системы координат для текстуры Gradient Texture мы задали Object сферы. Поэтому начальная точка для расчета текстуры совпадает с центральной точкой (Origin) сферы, а вектор из начальной точки в любую точку поверхности сферы будет являться вектором, определяющим значение (цвет) текстуры в этой точке.
Это значит, что для того, чтобы повернуть текстуру вокруг оси Z сферы, нам нужно повернуть вокруг центральной точки (0,0,0) все вектора (0,0,0 – X,Y,Z), которые мы получаем с выхода Object нода Texture Coordinate.
Наилучший способ манипуляций векторами в пространстве – матричные трансформации. Если не углубляться в теорию, основной принцип можно сформулировать так: если вектор, имеющий заданные координаты в пространстве умножить на определенную матрицу, в результате будет получен новый вектор, перемещенный, повернутый или изменивший свой масштаб.
Матрица вращения вектора вокруг оси Z в трехмерном пространстве имеет следующий вид:
где a – угол в радианах, на который будет выполнен поворот.
мы получаем с выхода Object нода Texture Coordinate.
Для того, чтобы повернуть вектор, нужно умножить его на матрицу:
Сверившись с правилами умношения вектора на матрицу, получим следующий результат:
Или немного упрощая:
Получив нужную формулу, можно отложить в сторону учебник математики и вернуться в Blender.
Как мы выяснили, исходный вектор p(X,Y,Z) мы получаем на выходе Object нода Texture Coordinate. Для того, чтобы получить доступ к его координатам по отдельности, добавим в дерево нодов новый нод Separate XYZ, который позволяет разделить вектор на его координатные составляющие. Так как после окончания преобразований нам опять понадобиться целый вектор (для входа Vector нода Gradient Texture), добавим также нод Combine XYZ, который позволяет собрать вектор из составляющих.
Соединив соответствующие входы и выходы нод, получим следующее дерево:
В промежутке между нодами Separate XYZ и Combine XYZ мы будем строить всю “математику”.
Добавим новый нод Value. Здесь мы будем задавать значение основной переменной a – угла поворота в градусах. Но так как полученная выше формула требует угла в радианах, преобразуем задаваемое значение, умножив его на π и поделив на 180.
В полученной выше формуле угол поворота не используется в чистом виде, нужны только синус и косинус этого угла. Добавим два нода для получения синуса и косинуса.
Осталось для каждой координаты вектора произвести математические вычисления.
Для координаты X: добавляем два нода умножения для получения произведений X*cos(a) и Y*sin(a) и нод вычитания второго произведения из первого. В результате реализуется формула X*cos(a)-Y*sin(a).
Так же реализуем нодами формулу для координаты Y.
Значение координаты Z не меняется, поэтому просто соединяем соответствующий выход Separate XYZ со входом Combine XYZ.
Итоговое дерево нодов выглядит так:
Меняя значение нода Value можно визуально наблюдать, как поворачивается текстура на сфере.
Но просто поворачивать текстуру мы могли и при помощи нода Mapping. Реализуем поворот текстуры на случайную величину.
Для этого отсоединим нод Value от задания угла поворота. На его место добавим нод Object Info. У этого нода есть выход Random, который генерирует случайную величину в диапазоне от 0 до 1. Т.к. угол поворота меняется в диапазоне от 0 до 360 градусов, добавим нод, умножающий случайное значение, взятое с выхода Random на 360. Результат используем для задания угла поворота a.
А теперь создадим еще несколько сфер, назначив им всем созданный материал.
Работа с материалами в Blender
Привет, меня зовут Сергей Мингулин, я — 3D-художник и преподаватель курса по созданию стилизованных 3D-персонажей в XYZ. Посмотреть на мои проекты можно здесь. Это — первая статья из цикла о визуализации в Blender.
Сегодня поговорим о том, как настраивать материалы, и какие дополнительные программы и расширения облегчат работу. А ближе к финалу я дам небольшой туториал по созданию интересного эффекта свечения на примере иллициев мутанта — выростов на голове для приманивания добычи.
Дополнительные программы для удобства
Substance Painter — программа для текстурирования 3D-моделей или создания текстур/текстурных карт для них. По ходу работы мы будем импортировать текстуры отсюда.
Node Wrangler — аддон, который содержит разнообразные инструменты для улучшения и ускорения воркфлоу, основанного на нодах (node-based workflow).
Активируется он следующим образом:
Переходим во вкладку «Edit», заходим в настройки «Preferences» и в «Add-ons» ставим галочку на соответствующей вкладке. Для удобства ищем аддон через поисковую строку.
Как работать в Material Editor
После того как портировали нужную модель в Blender, находим вверху вкладку Editor Type и выбираем Shader Editor. Нас перебрасывает в меню.
Material Editor имеет 2 режима:
1.Редактирование «мира» сцены.
Здесь есть две настройки:
Surface (поверхность) — сюда можем подключить обычный background (включен по умолчанию) и поменять его цвет или же добавить HDRI текстуру (удалить нод background и добавить Environment texture через Shift+A ). Я остановился на обычном бэкграунде.
Volume (объём) — здесь я добавил шейдер principled volume, который отвечает за «туман» или условную прозрачность атмосферы вокруг объекта.
2. Редактирование объектов, с которым мы и будем сегодня работать.
Чтобы создать нод, нажимаем Shift-A — этот хоткей вызывает панель с вкладками настроек. Мы можем как вручную искать во вкладках интересующую нас, так и ввести название в строку «search», после чего нод появится в меню.
Пример создания пустого материала
Чтобы создать новый материал без названия и настроек, нажимаем вкладку Material Properties и щёлкаем «+».
Здесь же нажимаем «new», и у нас появляются базовые ноды: Material Output и Principled BSDF, с помощью которых мы будем проводить изменения.
Важно: не забываем активировать Node Wrangler.
Выделяем базовый шейдер и нажимаем Shift+Control+T. Комбинация откроет нам меню выбора файлов. Выделяем нужные нам текстуры и подгружаем.
Если по умолчанию в названии файла текстуры есть приписка с её назначением, прога сама привязывает соответствующие файлы к параметрам.
Редактировать эти приписки (или суффиксы/тэги) можно в меню:
Если значение определилось неверно, изменить привязку можно самостоятельно, соединив мышкой output нода и input шейдера.
Кроме того, текстуру можно так же вручную перетянуть из окна в программу и прилинковать.
Назначить материал для модели можно, снова перейдя в 3D Viewport. Выделяем нужный объект, и пакет назначается автоматически. Если нам нужен другой, жмём крестик, а затем вкладку «new» или выбираем из уже имеющихся сохранённых.
Настройка материала высокополигональной модели
Стоит оговориться, что речь пойдёт о модели хайполи с высокой плотностью сетки, которая призвана проиллюстрировать навык дизайнера в рамках портфолио.
В связи с этим, геометрия позволяет нам не использовать отдельную карту под Subsurface scattering, а просто выставить реальное значение рассеивания в соответствующем параметре, исходя из габаритов модели.
Metallic, Transmission и Transmission Roughness мы не используем на теле вообще.
Дальнейший процесс можно разделить условно на 2 этапа: работу над материалами для тела и зубов и настройку иллициев.
Тело и зубы
Для настройки материала тела мы используем обычный PBR-материал с Metal-Rough workflow или пайплайном. Карты экспортируем из упомянутого в начале статьи Substance Painter.
Наш материал состоит из следующих нодов: Albedo или Base Color, Roughness и Normal Map. Последний используется для мелкой детализации.
Что нужно знать при работе с материалом?
Текстурные карты, которые не передают цвет материала, должны быть в линейном пространстве. Поэтому в Color Space текстур мы ставим:
sRGB — для Albedo
Non color, либо Liner — для Roughness, Normal и т.д. в зависимости от вашей сборки
Также, в зависимости от того, в каком пайплайне мы работали в Substance Painter и какой там пресет на экспорт текстур (под OpenGL или DirectX), может потребоваться «флипнуть» зелёный канал в Normal Map.
Для этого нажимаем Shift-A, находим Separate RGB и подключаем к нему output Color. Как понятно из названия, этот нод даёт нам провести необходимую манипуляцию с одним из каналов (Red, Green, Blue). Теперь, чтобы инвертировать зелёный канал (G), добавляем нод Invert со значением Fac «1.000» и подключаем обратно через Combine RGB.
Эту конструкцию мы затем подключаем к Normal в Principled BSDF. Roughness (чёрно-белая карта, не требует манипуляций с каналами) подключается в соответствующий слот шейдера, так же как и Albedo (Base Color).
Вот так выгладит готовая сборка материала:
Фиолетовое поле — это наш Normal Map. Не обращаем внимания на неприлинкованные окна.
В случае с зубами настройки всё те же. Также флипаем при необходимости зелёный канал в нормалке.
Пошаговое создание светящихся иллициев
Иллиций — особый ловчий вырост («удочка») на вершине головы у костистых рыб отряда удильщикообразные, служащий для приманивания добычи. Нечто похожее есть и у нашей модели.
Примеры в референсах.
Рассмотрим, как распределить свечение по всей длине иллициев, — от наибольшей интенсивности к наименьшей.
Наши «удочки» будут состоять из:
нижнего слоя — овалы внутри, дающие основное свечение на концах;
среднего слоя — так же светящиеся трубки;
верхнего слоя — внешняя оболочка иллициев.
a) Нижний слой
Material Output нижнего слоя состоит из Principled BSDF, который идёт в Surface объекта, и Principled Volume, подсоединённого к параметру «внутреннего объёма».
Так как геометрия объектов простая, Normal Map нам не нужен, и его значения мы оставляем «по умолчанию». Основные манипуляции будем проводить с названными выше нодами.
Первый — это Principled BSDF. Здесь мы задаём Base Color значением HSV (Hue, Saturation, Value), оставляем Roughness по умолчанию и переходим к настройке прозрачности. Так как наш объект будет скрыт под другими слоями, и основное свечение будет исходить из внутреннего объёма, ставим значение Transmission «1.000» — это даёт нам полностью прозрачный объект. А параметр Transmission Roughness позволяет выбрать, насколько матовой или глянцевой будет поверхность (чем больше значение, тем меньше глянца).
Переходим к работе с Volume. Здесь мы задаём цвет внутреннего «тумана» и его плотность, выставив значение Density на 10.000.
Настройки материала нижнего слоя.
Как настроить свечение?
На скриншоте выше мы видим, что Emission поверхности — чёрный. Это значит, что свечение будет исходить не от неё, а от Volume. Для этого мы и задавали максимальную прозрачность оболочки. Так как этот слой будет ещё под двумя, задаём большое значение в параметре Emission Strength («сила излучения») — «1700.000».
b) Средний слой
Ноды этого слоя те же, что и у предыдущего. В Principled BSDF значение Roughness мы выставляем меньше, примерно в 3 раза, что даёт нам более глянцевую поверхность. Значение IOR (индекса преломления) оставляем по умолчанию. Transmission, в случае второго слоя, у нас контролируется через Color Ramp и Layer Weight.
Настройки материала среднего слоя.
Layer Weight — нод, из которого мы берём значение Френелевского отражения.
В зависимости от того, под каким углом мы смотрим на поверхность объекта, сам объект кажется нам в большей или меньшей степени прозрачным. Коротко этот эффект можно описать так: чем ближе к 90° угол между направлением взгляда и поверхностью прозрачного объекта, тем более прозрачным он кажется.
Пример: рыба из референса. Мы видим, как поверхность всё больше теряет прозрачность и обретает цвет по краям.
Color Ramp — по своей сути, аналог уровней в Photoshop, с помощью которого мы можем:
1) инвертировать цвета — по умолчанию белый цвет справа, чёрный слева; перетягивая ползунки друг на друга, обращаем цвета.
2) настроить контрастность — чем меньше расстояние между ползунками, тем она больше.
Теперь, соединив этот нод с Transmission, мы получаем следующие параметры: чем ближе к белому цвет, тем прозрачнее будет отображаться материал на рендере.
От настройки поверхности переходим к свечению. Оно берётся из нода Principled Volume, который мы также подключаем к Material Output (Volume). Цвет тумана — красный, испускаемого света — оранжевый. Выбираем значение плотности — «1.000», и Emission — «400.000».
Таким образом, получаем плавный переход от более интенсивной точки свечения, расположенной на прозрачном участке, к менее интенсивному по всей длине менее прозрачного стержня.
c) Верхний слой
Наконец, настройки внешней оболочки выглядят следующим образом:
Общий принцип остаётся тот же: Principled BSDF, к которому подсоединяем Bace Color с Color Space sRGB, и упрощённая настройка volume — Volume Absorption.
На последнем останавливаться нет смысла, затронем основные моменты настройки Principled BSDF.
Для Roughness была использована готовая текстура из Substance Painter.
Аналогично применяем готовый градиент к Transmission и миксуем его с уже описанным Layer Weight (откуда берём френель) + Color Ramp (инверт LW).
Чтобы смешать прозрачность по френелю и по градиенту, создаём нод MixRGB и выбираем вариант смешивания Multiply, линкуем их к нему (Color1 и Color2), после чего соединяем нод Multiply с Transmission.
И не забываем инвертировать зелёный канал в Normal Map при необходимости.
Так выглядит наша модель на рендере. В следующий раз поговорим о том, как выставить свет в соответствии с задачами, и правильно её подать.
Если хочешь научиться создавать стилизованных 3D-персонажей — записывайся на курс STYL. Стартуем 1 октября — если записаться сейчас, можно успеть получить скидку.
Все подробности по ссылке: https://www.school-xyz.com/styl
Просто точно повернуть объект, как?
Пусть ось вращения задана 3Д координатами двух её точек. Надо повернуть вокруг этой оси какой-нибудь предмет (хотя бы родной кубик) на заданный угол.
Развитие темы: надо сделать анимацию поворота объекта вокруг одной такой оси в пространстве, затем вокруг другой оси, также заданной координатами двух её точек, и т.д. Мне на другом форуме один профи сказал, что можно обойтись на все такие повороты одной пустышкой. Но объяснил он себе самому, через кватернионы, а мне хочется иметь простую методику для анимации любого числа таких поворотов.
Можно ли так расположить вьюпорт, чтобы смотреть вдоль такой оси вращения, т.е. чтобы она была перпендикулярна плоскости вьюпорта?
Спасибо, если будет ответ/урок на youtube. 🙂
Справа от твоего поста ответы на все эти вопросы.
Т.е. надо просто купить книгу по инструментам моделирования?
Это уже сами смотрите. Если интересует только этот вопрос, то смысла мало. А если вы моделируете в Blender и сталкиваете с подобными проблемами регулярно, то знание элементарных основ не повредит точно.
Я может плохо понял проблему, но чтобы что-то повернуть, достаточно 3D-курсора и кватернионы тут не нужны. И как говорил профи, можно набросать пустышек и с помощью ограничителя вращать объект то вокруг одной пустышки, то вокруг другой. Кстати, подобное я когда-то показывал на этом форуме.
Так это же я и спрашивал… Только в общем случае этот рецепт не подходит. В том примере кубик подъезжает ко 2-й пустышке, как надо, а куда эту 2-ю пустышку выставить, если вращение будет не вокруг глобальных осей координат и не на угол 90*n?
Вот ответ того профи по фамилии Falseowl: https://render.ru/xen/threads/voprosy-otvety.122556/page-46#post-1204778 Насколько я понял, он кантует кубик вокруг разных рёбер, используя только одну пустышку. Вот это меня и интересовало: как повернуть вокруг одной оси, а потом вокруг другой и т.д. не городя огород из множества пустышек. Только я не понял, как он компенсировал повороты куба и пустышки, чтобы другие повороты также делать с пом. той же пустышки. И будут ли возникать холостые технические кадры в анимации?
Почему-то авторы Блендера не смогли сделать, чтобы в анимационных ключах запоминались координаты оси вращения, тогда и проблемы бы этой не было…
Вам уже на двух форумах разжевали проблему, а вы говорите, что авторы Blender что-то там не сделали. Может это вы что-то там не поняли?
Мне нечего добавить. Вам осталось сложить 2 + 2 и сделать свою анимацию.
На одном форуме говорили не о том, а на другом автор ответа уяснил решение, но для себя (через кватернионы), там ничего похожего на разжёвывание нет. Причём, здесь автор ещё и не мог понять (или делал вид), что значит повернуть кубик вокруг заданной оси и говорил о каком-то 3Д курсоре. И утверждал, что это просто, хотя на другом форуме автор ответа написал, что это не просто.


















