Как эффективно изменить один и тот же параметр для нескольких объектов в Blender?

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

Я уже нашел несколько способов:

  1. в режиме объекта, выделить все объекты (B, затем прямоугольный выбор), присоединяйтесь к сеткам ctrl-j, изменить цвет, tab в правка режим,P чтобы снова отделить объекты. Это вполне возможно, так как сетки всех моих объектов не соприкасаются. основы docs
  2. кто-то написал скрипт Python, чтобы делать подобные вещи,здесь

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

поскольку это общий случай использования, я, вероятно, пропустил простой способ. Что это?

4 ответов


Если вы просто хотите изменить один параметр для нескольких объектов RMB нажмите на control (текстовое поле, например) и выберите копировать в выбранный.

активировать 3D вид: копировать атрибутирует меню на Настройки Пользователя и называют его ctrl+c если вы хотите скопировать модификаторы или такие

http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/3D_interaction/Copy_Attributes_Menu


хотя я не нашел предпочтительного простого решения кнопки или gui, оказалось, что взлом собственного кода Python в Blender проще, чем можно было бы подумать.

кубики, с которыми я работаю, больше похожи на камни домино. Впоследствии все объекты, похожие на домино, имеют имя, начинающееся с "Домино". Очень легко изменить все объекты в сцене на основе их названия:

for o in bpy.data.objects:
    if not "Domino" in o.name:
        continue
    o.rigid_body.mass = 500
    o.rigid_body.friction = 0.4
    o.rigid_body.restitution = 0.95
    o.rigid_body.angular_damping = 0.2
    o.rigid_body.linear_damping = 0.05

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

код можно редактировать во внешнем текстовом редакторе. Кроме того, можно открыть окно текстового редактора внутри Blender. При сохранении сцены консоль Python и внутренний текстовый редактор сохраняются вдоль 3D-модели, что делает очень хороший рабочий процесс.

найти правильный имена объектов-такие как bpy.data.objects["Domino.033"].rigid_body.mass очень просто, потому что Blender показывает их при наведении указателя мыши на любое поле ввода формы. Если объект идентифицирован, используйте Python


вот блендер 3D совет: для работы над кучей объектов в то время, включите плагин "копировать атрибуты", который поставляется с блендером, но не включен по умолчанию: откройте "пользовательские настройки", нажмите "аддоны", а затем поиск "копировать атрибуты", чтобы найти "3D вид: копировать атрибуты меню" плагин. Включите плагин, затем закройте настройки.

для использования: в 3D-представлении выберите один или несколько целевых объектов, затем, наконец, выберите исходный объект. Нажмите "Ctrl-C" на клавиатуре и посмотрите меню каждого тип атрибута можно скопировать. Нажмите один (например, масштаб), и вы увидите, что масштаб исходного объекта будет применен к ранее выбранным объектам.

вот запись вручную http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/3D_interaction/Copy_Attributes_Menu

Это в ответ на:

http://obasandbox.wordpress.com/2011/10/23/cg-blender-setting-properties-on-multiple-objects/


Мне любопытно, почему вы не могли просто настроить материал. Blender позволяет очень легко повторно использовать элементы объекта. Вы можете иметь 100 объектов, которые разделяют одну сетку. Вы можете иметь 100 сеток, которые разделяют набор из 4 материалов.

Я представляю, что набор домино будет иметь 21 сетку (для всех комбинаций 1-6 x 1-6). Эти сетки будут иметь 2 или 3 материала (один для пипсов и еще один или два для тела). Если правильно связать, вы можете изменить цвет на всех пипсы путем изменения одного материала, используемого всеми сетками.

использование python для массового изменения объекта очень мощно и применимо ко многим проблемам, но иногда решение проще.