Как связать объекты в blender

Обновлено: 24.05.2024

Продолжаю писать статьи начинающим пользователям Blender. Сам я тоже начинающий, так что пишу и для себя тоже, чтобы не забыть.

Я сейчас делаю простенькую 3D-модель ноутбука, который состоит из многих мелких деталей, особенно клавиш. Представьте, что я захочу передвинуть ноутбук на новое место. Мне придётся выделить все его детали, не так ли? А если я забуду хоть одну и обнаружу это слишком поздно, когда Ctrl+Z нажимать уже не захочется, то придётся мне подбирать её удачное местечко вручную, хотя всю эту работу я уже когда-то делал, только в другом месте. Обидно, да? Впрочем, при простом перемещении это ещё не самое страшное. А вот если я весь ноутбук передвину и поверну? Мороки с забытой деталькой потом будет ещё больше.

Есть два средства от забывчивости, которые помогут не попадать в такие ситуации.

Есть два средства от забывчивости, которые помогут не попадать в такие ситуации.

Первый способ - "сгруппировать" все необходимые детали. Делается это просто: выделяем все нужные части и нажимаем Ctrl+G (или в меню: Object→Group), затем выбираем "Add to New Group" - добавить в новую группу. Теперь объекты незримо связаны (хотя и зримо тоже - обратите внимание на зелёные контуры), хотя по-прежнему не зависят друг от друга. "Группа" не даёт никаких супервозможностей, кроме возможности выделить все объекты, входящие в группу, одним махом. Просто выделяем один любой объект из группы, нажимаем Shift+G (или Select→Grouped), выбираем вариант №7 ("Objects in Same Group" - объекты из той же группы; можно просто нажать цифру "7" на клавиатуре) - и к выделению присоединяются все детали нашего ноутбука. Теперь можно двигать их вместе. Все новые детальки, которые я буду добавлять, я буду присоединять к группе с помощью варианта "Add to Existing Group" в меню Ctrl+G, и тогда при перемещении точно ничего не забуду.

Кроме того, группы будут удобны, если вы впоследствии будете использовать ноутбук в других файлах, присоединяя его с помощью "File→Append or Link. " - вместо того чтобы импортировать каждую клавишу по отдельности, вы просто выберите нужную группу и заполучите в свой новый файл сразу весь свой старый ноутбук. Если групп в файле несколько, то имеет смысл их содержательно обозвать, просто выбрав любой из сгруппированных объектов и изменив текст в поле "GR:" на вкладке "Objects and Links" свойств этого объекта. Напишите там, например, "Notebook". Название группы автоматически изменится и у всех остальных "одногруппников" этой детали.

Но выбор всей группы - это лишние нажатия кнопок при каждом выделении, что не очень удобно, а выгода от группировки, как видите, проявляется только при импорте в другой файл. Поэтому, хотя группировать лучше всё и всегда, для удобства массового перемещения лучше всего намертво привязать одни объекты к другим. Давайте выберем основной объект - у ноутбука таковым можно назначить, например, основу нижней части (в реальной жизни ноубуки в открытом виде тоже обычно именно за нижнюю часть таскают, правда?). Так вот, этот объект надо назначить "родителем" для всех других объектов, которые относятся к ноутбуку. Тогда при перемещении, повороте или изменении размера "родителя" все его "дети" будут неотступно следовать за ним, перемещаясь на то же расстояние, поворачиваясь на тот же угол (и относительно той же оси!) и масштабируясь в тех же пропорциях.

Сначала выделите всех детей, которых хотите привязать к родителю, а потом (порядок важен!) - самого родителя. Теперь нажмите Ctrl+P (или в меню: Object→Parent→Make Parent), чтобы установить родительскую связь. Вопрос-уточнение будет простым и конкретным:

Жмём Enter, чтобы согласиться, и от родителя протягиваются пунктирные линии ко всем его детям. В случае с нижней частью ноутбука и клавишами получился такой вот красивый веер из пунктирчиков:

У каждой клавиши привязанность к родителю отражена там же, где и принадлежность к группе, а именно на панели кнопок, в разделе Object (F7), на вкладке "Objects and Links". Имя родителя отражено в поле "Par":

Удалить привязку к родителю можно нажатием на Alt+P, или же через меню Object→Parent→Clear Parent.

С верхней частью ноутбука я поступил немного по-другому. Я сделал два маленьких цилиндра, который располагаются между нижней и верхней частями ноутбука и которые якобы скрепляют их. Фактически так и есть: оба эти цилиндрика являются детьми нижней части и, значит, передвигаются вместе с ней, а один из них, в свою очередь, является родителем для верхней части. Таким образом, и верхняя часть отставать от нижней не будет. Верхняя же часть, в свою очередь, является родителем для монитора - простой плоскости, на которой будут отображаться картинки. :-)

Зачем же такая сложная многоходовая конструкция, спросите вы? Да просто ради того, чтобы ноутбук можно было удобно открывать и закрывать. Я буду поворачивать этот цилиндрик вокруг его оси, и вся верхняя часть с монитором будет автоматически поворачиваться вокруг оси этого цилиндрика! Почему же тогда нельзя было привязать монитор напрямую к цилиндрику, спросите вы? Да так, на всякий случай. Чтобы, даже если я вдруг "забуду" про цилиндрик и стану вертеть верхнюю часть напрямую, монитор не остался в стороне от дел.

Итак, что же в итоге?

- Мы можем выбрать все составляющие ноутбука сразу, потому что они сгруппированы.

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

- Родительская связь односторонняя, так что при нажатии клавиши ноутбук не будет перемещаться вслед за ней. :D

После установления родительских связей дальнейшая работа над любой моделью будет удобнее!

При создании сцен, имеющих два или более идентичных объекта, рекомендуется использовать связанные копии, так изменения в 3д-топографии любой из них тут же отражаются на связанных копиях. К таким изменениям относится как количество и положение всех вершин (а следовательно и рёбер с полигонами), так и присвоение материалов, а также UV-развёртка. Однако связанные копии могут находится в различных местах сцены, иметь каждая свой масштаб и разворот, относительно любой из осей. Существует 2 способа установить связь между объектами.

  • Если копия ещё не существует, создайте её,
  • выполнив команду Object -> Duplicate Linked (Alt+D)
  • Если у вас уже есть объекты которые следует связать, то:
  • Выберите их в обратном порядке, так чтобы источник (образец) оказался выбранным последним, и загорелся цветом первичного выделения (обычно желтоватым)
  • Выполните команду Object -> Make Links -> Object Data.

Для того чтобы разорвать связь между 2мя или более объектами
(тем самым прервав передачу изменений всем связанным копиям):

  • Выделите объект, который нужно сделать уникальным,
  • Откройте вкладку Object Data, находящуюся в панели Properties (обычно в правой части экрана),
  • Найдите и щёлкните ЛКМ по цифре (… number of users …), слева от значка в виде щита (Fake User), который находится в строке с названием объекта, в верхней части панели.

В том случае если требуется разорвать связь между 2мя или более объектами имеющими потомков, в том числе и связанных:

Допустим, у вас есть 2 модели и необходимо их объединить, что-бы редактировать их одновременно, применять модификаторы и тд.

  1. Выделяете первый объект (его названием будет назван конечный продукт)
  2. Выделяете второй объект
  3. Жмете CTRL+J
  4. Редактируете объект как вам угодно

После соединения все материалы сохраняются как есть.

Пример объединения

Для наглядности, я все-же покажу как это выглядит.

Мы имеем 2 куба, которые необходимо объединить в один объект.

Blender. Как объединить или разделить объекты?

2 куба которые мы хотим объединить

Выбираем первый куб

Blender. Как объединить или разделить объекты?

Выделение первого куба, именем которого назовется объединенный объект

Затем, с зажатым SHIFT, выбираем второй

Blender. Как объединить или разделить объекты?

выделение второго куба

Ну и жмем CTRL+J

Blender. Как объединить или разделить объекты?

После объединения, кубы обведутся оранжевой линией

Теперь эти 2 куба представлены как один объект, который можно редактировать как обычно.

Кстати, если выбрать 2 точки и нажать F то проведется грань между ними, а если выбрать грань или 3 точки и нажать F то появится плоскость.

Я, к примеру, сотворил сие)

Blender. Как объединить или разделить объекты?

Пример редактирования объединенного объекта

Как разделить объект на несколько частей?

Часто приходиться так-же разделять уже собранный объект на несколько частей.

Для этого нужно выполнить несложный ряд действий

  1. Переходим в режим редактирования нужного объекта
  2. Выделяем нужную часть
  3. Жмем P
  4. Выбираем нужное действие

Пример

Для наглядности я разберу то что у меня получилось обратно на 2 части

Для удобства выделения переключаем режим отображения в сетку, нажатием кнопки Z

Blender. Как объединить или разделить объекты?

Смена режима отображения

Далее выделяем вершины

Blender. Как объединить или разделить объекты?

выделение



КДПВ. System's check.

Дисклеймер

Как вы заранее догадались, в этой серии я тоже не покажу, как нарисовать танк. В этой серии я напишу про менеджмент объектов (в прошлой писал про геометрию). Просто потому, что сейчас — самое время (вообще, я хотел вставить эту часть сразу после первой, но не срослось).

Вы уже знаете о том, как в Blender работать с объектами и с их геометрией. Чего вы еще (возможно) не знаете — какой это ад, когда зашел в комнату и не помнишь, зачем зашел у вас 66 объектов (как у танка с КДПВ, см. пруфпик) и вы не знаете, как выбрать один из них. Потому что вы замоделили матрешек и они друг вокруг друга нарисованы, а вам нужна самая внутренняя.



Рисунок 0. Пруфпик.

Или когда вы импортируете .stl-файл (непустой), и вроде импорт прошел, а объекта на сцене не видно.
Или вы из MakeHuman человека импортируете и прекрасно его видите, но не понимаете, у него кисти рук — это отдельный объект или нет? А глаз? И начинаете щелкать по модели.
И вам становится грустно и хочется понять менеджмент объектов в Blender. А тут как раз я подошел.
В общем, хватит лирики, вперед. Пост длинный, но не очень.

Как я уже писал, в Blender есть основная единица работы — это объект. И это контейнер. Он содержит в себе название, origin, геометрию, список модификаторов и массу других данных — если это геометрический объект. Потому что лампа или кость — это тоже объект, наряду с геометрическим.

Изначально все объекты равны, что кубики, что лампы, что кости.

Что предоставляет Blender

  • навигация по всем объектам файла и просмотр/редактирование детальной инфы по объекту.
  • группировка (тегирование aka группы / иерархия aka parenting (beware, в хелпах встречаются утверждения, что парентинг морально устарел и надо вовсю юзать Child Of))
  • управление видимостью (индивидуальная/групповая, а также рабочая/рендерная)

Навигация / просмотр инфы

Все, что вы уже наваяли в данном файле, отображается в области аутлайнера (я его ранее называл “Область содержимого сцены” для единообразия, но, думаю, эффект уже достигнут и далее я буду называть его аутлайнером).
Замечу, что ребята из BF вставили аутлайнер в дефолтный стартовый конфиг (пусть это и добавляет шума), наряду с областью таймлайна, например. То есть, на то, что менеджмент объектов важен, они тоже указывают с самого начала.



Рисунок 1. Аутлайнер.

Скрин аутлайнера с более-менее нетривиальной моделью (танком, собственно) приведен на рисунке 1. Слева — дерево объектов. Обратите внимание на его корень (об этом позже). Каждая оранжевая иконка — это один объект. Каждая серая иконка — это геометрия объекта (заметьте, у геометрии есть имя, и оно не всегда совпадает с именем объекта — ниже приведена одна из причин). По клику на эти иконки происходит выделение соответствующего артефакта.
Видны и модификаторы объекта. И то, что камера — это объект, тоже видно. И на вложенность объектов обратите внимание (я как бы невзначай назвал один объект «A parent»). И на три столбика справа — при наведении на иконки будут подсказки.

От аутлайнера не укроется почти ничего. Он знает все и всех сдаст с потрохами. Это серый кардинал Blender. Ситуация в 3D области — сиюминутна по определению (см. ниже). Ситуация в области параметров — контекстно-зависима и описывает только один объект. То, что показано в аутланере — это монументально и всеохватывающе. Будьте большим братом для своих объектов — пользуйтесь аутлайнером.

Если вы потеряли объект или не уверены, одна у вас тут кривая или их уже четыре поверх друг друга, или при импорте объект вроде прошел, но его не видно в 3D области (оказалось, он в нескольких тысячах юнитов в стороне и при этом неприлично конского размера) — аутлайнер разьяснит. Это его основная функция.
Формат отображения списка объектов выбирается в дропдауне вверху по центру области.

Группировка объектов

Имея на руках кучу объектов — надо иметь возможность ими как-то управлять. Итак.

Сцены

Как видно на скрине аутлайнера, корень дерева объектов — сцена. Это не просто контейнер объектов, это контейнер вообще всего (объектов, материалов и пр.).

Так вот сцен в рамках одного файла можно делать сколько угодно. Можно делать полностью новые, можно делать новые с ссылками на существующие объекты. Сцена настолько глобальна, что я ни разу ни пользовался двумя сразу в одном файле переключение между сценами идет не через область 3D, а через область меню, вот тут:



Рисунок 2. Контрол управления сценами. Логика та же, что и у соседнего контрола управления лэйаутами.

Вряд ли вам понадобится это в ближайшем времени.

Группы объектов

Объекты можно группировать. Выделяем нужные, жмем Ctrl-G. Выделенная группа подсвечивается зеленым, а не оранжевым.

Но тут ребята из BF с терминами, имхо, перемудрили. Потому что группы — это не контейнеры (как, по крайней мере, я ожидал). Это, фактически, теги. Один и тот же объект может входить в разные группы. А вот группа не может входить в другую группу:



Рисунок 3. Группы в атулайнере. Отображаются далеко не во всех форматах отображения списка. Дефолтный (All Scenes) групп не показывает. В Groups, естественно, видны. Обратите внимание на объект «Cube».

Переименовывать группы проще из аутлайнера (ПКМ -> Rename).
Выделить можно из аутлайнера, а можно и из 3D области (выделяем объект, жмем Shift-G, выбираем Group).

В Blender группы — это теги и область применения у них соответствующая.

N.B. Базовые операции над объектом из группы не влияют на другие объекты группы, в отличие от…

Родители и ограничения

На рисунке 1 видно, что некоторые объекты являются дочерними по отношению к другим. Это все потому, что родительские объекты в явном виде были указаны мной как родительские. Чтобы организовать родительство, надо: выделить объекты (с помощью Shift-ПКМ), причем будущий родитель должен быть последним выделяемым. Жмем Ctrl-P и выбираем, например “Object”:



Рисунок 4. Меню назначения родительства.

В результате имеем:



Рисунок 5. Cube — родитель у Cube.001 и Cube.002. А вот Cube.001 — родитель только для Cube.002. Вообще, уровень вложенности вроде как не ограничен.

В 3D области между origin родителя и детей рисуется пунктирная линия.
Если к родителю применить базовую операцию, то она применится и ко всем его детям. И внукам. И правнукам.
При назначении нового родителя старый сбрасывается. Убрать родительство — Alt-P на ребенке.
Очевидная область применения — зависимые объекты. Шасси танка — это родитель для башни.

Выше было указано, что родительство BF считают deprecated и рекомендуют Child Of. О чем нам это говорит? Во-первых, о том, что Blender — продукт серьезный и успел пожить. Во-вторых, что такое Child Of? Это constraint, ограничение. Ограничения объекта настраиваются во вкладке Constraints:



Рисунок 6. Вкладка constraints. Ограничения добавлются из выпадающего списка.

При назначении этого ограничения будет то же, что и при родительстве — пунктирная линия и копирование базовых операций.

В чем преимущества применения этого ограничения?

Во-первых, в том, что на количество ограничений ограничений нет (я прям почувствовал, как у меня скилл тавтологии прокачался). Т.е. один объект может быть child of семи других объектов.

Во-вторых, можно более тонко настроить копирование базовых операций (см. рисунок 6). Можно для упомянутого примера с башней сэмулировать компенсацию прицела — отключить поворот по Z (шасси может нырять и выныривать, а дуло не шелохнется, но при этом при уходах влево-вправо будет реагировать).

В аутлайнере ограничения (как и модификаторы, например) индицируются значком напротив объекта, а не вложенностью (как родительство).

Дубликаты и слияние

Имхо, это тоже больше относится к менеджменту, чем к просто к работе с объектами, поэтому опишу тут, но под спойлером.

Про модификаторы я уже писал ранее, и Array ничем особенным не отличается — берем объект, накладываем на него Array и получаем результат. Для забора — отлично подходит. В аутлайнере объект остается один, но с индикацией примененного модификатора.

Дубликаты. Технически — это неполные копии объектов (то есть это не беспощадный копипаст) — вместо некоторых данных у них ссылки на данные оригинала. Есть 2 типа дубликатов (сейчас я цитирую BF — «поверхностная связь» и «глубокая связь»). Для создания — выделяем объект и нажимаем Shift-D (или Object-> Duplicate Objects) или Alt-D (или Object-> Duplicate Linked, курсив авторский) соответственно.

Поверхностная связь — ссылки создаются по только на материал и текстуры (но это настраиваемо). В аутлайнере индицируется совпадающим с оригиналом материалом. Для цветочков или пятен, например.

Глубокая связь — ссылка вместо копии почти на все, включая геометрию, но исключая трансформацию. В аутлайнере индицируется совпадающим названием геометрии. Шляпки болтов рекомендуют.

Объекты можно слить в один — выделяем все необходимые и жмем Ctrl-J (или Object->Join). Геометрия всех объектов сливается в геометрию последнего выделенного, в аутлайнере остается только последний выделенный. Очень полезная иногда операция.

Резюмируя раздел «Группировка объектов». Явного аналога каталогов нет. Но есть теги, что прогрессивно (но UI у них сложноватый, что не так прогрессивно). Объекты могут зависеть друг от друга тем или иным образом — не забывайте это при рассматривании чужих файлов.

Управление видимостью

Функция “спрятать” (переключение видимости для выделенного объекта(ов))

  • Аутлайнер: иконка глаза напротив объекта/группы.
  • Область 3D-сцены: H / Alt-H для выделенного объекта (ов).

Слои (переключение видимости для набора объектов)

В рамках одной сцены можно управлять видимостью объектов на уровне слоев. Имхо, если вы активно пользуетесь группами, то слои вам и не нужны — можно вырубать видимость группы из аутлайнера. Но возможность все-таки есть.
Отображение слоев не такое, как в фотошопе, например. Вот так они выглядят в интерфейсе (каждый квадрат = слой):



Рисунок 7. UI слоев.

Светлый квадрат — скрытый на данный момент слой, темный — отображаемый. Если есть шарик — слой содержит что-то. Если шарик оранжевый — слой содержит что-то и это из этого “что-то” вы что-то выделили. Клик по квадрату отображает данный слой и скрывает все остальные отображенные до этого. Shift-клик — отображает/скрывает данный слой, не скрывая остальные отображенные до этого.

Любой выделенный объект/группу можно переместить на любой слой. Выделите объект/группу и нажмите M, появится окно выбора слоя:



Рисунок 8. Попап выбора слоя, на который будет перемещен объект.

Щелкните по нужному квадрату — и объект будет перемещен в указанный слой.

Способ отрисовки в 3D области

Нельзя сказать, что это явное управление видимостью, но я лучшего места для описания не нашел. Итак, в 3D области остался еще один важный контрол:



Рисунок 9. Выбор способа отрисовки объектов в 3D области.

По умолчанию стоит Solid (полигоны отображаются, а текстуры на них — нет). При редактировании геометрии или при поиске запрятанных объектов очень помогает Wireframe (полигоны не отображаются). Переключаться между Solid и Wireframe можно по Z.

Сохранение файла

Собственно, теперь вы знаете, где у вас что.
Осталось только сохранить файл (Ctrl-S, ну или через меню). И вот тут Blender наносит удар (Win-версия):



Рисунок 10. Blender спрашивает, куда сохранить файл и под каким именем.

Тут я отступаюсь и мне нечего сказать. Окно сохранения — это не стандартный диалог Save File, нееет. Это область типа “File browser”. И самое важное здесь — не нажать красный крестик по инерции.

Версионность

Касательно “Очень интересной функции” из предыдущего скрина (понадобится на более поздних этапах). Она накручивает число после названия файла (но до расширения): temp1.blend, temp2.blend и т.д. Это можно сделать и руками, но так ведь удобнее. Таким изящным способом в Blender можно делать хоть какую-то user-controlled версионность. Вообще, это не камень в огород Blender — все так делают (“Совсем финальный отчет 12.docx”), просто в BF решили пилюлю подсластить. Это ½ версионности.

Оставшаяся ¼ версионности — встроенное в Blender подобие, которое заключается в том, что Blender при нажатии Ctrl-S сохраняет файл с инкрементом числа, идущего уже после расширения (temp.blend2), но по мне это громоздко и неконтроллируемо (одно дело я руками чекиню, другое — просто обновляю текущий вариант), так что этот механизм я не использую:



Рисунок 11. Настройки встроенного механизма версионности Blender.

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

На данный момент все области стартового UI я описал (за исключением таймлайна, но я не верю в анимацию для совсем новичков. А меню описывать — это вообще оскорбительно для читающих, я считаю). Осталось нарисовать-таки танк, но это — в следующей серии.

Как покрасить много объектов в один материал?
Создайте новую сцену и удалите куб который дан на старте. На этот куб уже применён материал и Вы можете запутаться. Создайте новый куб. Сделайте несколько его копий. Выберите их.

Среди выбранных объектов есть главный. Главный объект стандартно выделен жёлтым цветом.




Не снимая выделения назначаем материал. Он назначится только на главный объект.


Красим в яркий цвет для понимания происходящего.


Давим Ctrl+L (Link). В появившемся окне выбираем Materials.


На все объекты применился один и тот же материал.


Важный момент — устанавливается связь всех объектов с одним материалом, а не создание уникального материала на каждый объект.

Выберем один из кубов.


Изменим его цвет.


Изменился цвет всех кубов. Потому что материал один и тот же. Цифра в панели материалов указывает на количество объектов на которые применён этот материал.


Кликнем левой кнопкой мыши на этой цифре.


Материал изменил имя и связь с материалами других объектов разорвалась. Меняем цвет этого объекта. Изменится только он.


Буква F в строке названия материала.



Присвоение материалу Fake User'а защитит материал от удаления.

  1. Выбор объектов, которые надо покрасить в один материал
  2. Указание главного объекта, на котором уже назначен тот самый материал
  3. Ctrl+L (Link) > Materials

Я хотел рассказать как назначать большому количеству объектов одинаковые характеристики. В данном случае материалы. Подобным способом можно работать не только с материалами, но и с геометрией, анимацией, текстурами и т.д. Например, то что приходилось использовать мне.

Меш
Связывается сетка полигонов (меш) и материал. Измени один объект и изменятся все. Вообще настройка здесь.


Но можно и с помощью Ctrl+L (Link) > Object Data.




Анимация
Связывается анимация. Можно через меню Ctrl+L (Link) > Animation Data. А редактирование вручную здесь:


Группы
Например: колесо автомобиля с диском, покрышкой, тормозом, болтами, логотипами. Там у Вас и меш и кривые и пустые объекты. Разнородные объекты которые нельзя объединить не применив модификаторы. Не хочется их применять. А колёс 4 штуки. Решение. Назначаем всем объектам одну и ту же группу. Теперь в меню добавления новых объектов есть возможность добавить в сцену эту группу.


Можно Ctrl+L (Link) > Group. Ручные настройки здесь:


Может возникнуть необходимость убрать группы с большого количества объектов. Есть команда Remove From All Groups. Я выбираю все объекты с которых надо убрать группы. Давлю клавишу «Пробел». Выскакивает поиск команд и я набираю там название команды Remove From All Groups и применяю.


Модификаторы
Ctrl+L (Link) > Modifiers. Это копирование модификаторов. Удаление тех что были и назначение новых с другого объекта.

Читайте также: