如何在Blender中有效地改变多个对象的相同参数?



从单个立方体开始,我改变了一些属性(材质,颜色,反射属性),然后将对象复制到十二个立方体中,将它们放置在场景中。渲染后,我想改变它们的颜色。我如何有效地做到这一点?

我已经找到了多种方法:

  1. 在对象模式中,选中所有对象(B,然后矩形选择),连接网格ctrl-j,更改颜色,tab进入编辑模式,P再次分离对象。这是很有可能的,因为我所有的对象的网格不接触。基本文档
  2. 有人写了一个Python脚本来做类似的事情,在这里

第1条容易出错,而且对于经常使用来说太繁琐了。第二个更专业,也更糟糕。仅仅选择多个对象并更改其值是不起作用的,因为属性选择只应用于活动对象,而活动对象只是所选对象中的一个。

由于这是一个常见的用例,我可能错过了简单的方法。这是什么?

如果您只想更改多个对象的一个参数,请单击控件(以文本字段为例)并选择复制到选定的

激活3D视图:在用户偏好中复制属性菜单并使用ctrl+c调用它如果你想复制修饰符之类的

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

虽然我没有找到更受欢迎的简单按钮或gui解决方案,但事实证明,在Blender中编写自己的Python代码比人们想象的要容易。

我正在使用的立方体更像是多米诺骨牌。随后,所有看起来像多米诺骨牌的物体都有一个以"Domino"开头的名称。在一个场景中,根据对象的名称来修改它们是很容易的:

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
要使用这段代码,我只需打开一个新窗口(在任何现有的Blender窗口上拖动右上方的小三角形图标),将窗口类型更改为"Python控制台"(左下方窗口类型选择图标),然后将上述代码粘贴到其中。

代码可以在外部文本编辑器中编辑。另外,你也可以在Blender中打开一个文本编辑器窗口。在保存场景时,Python控制台和内部文本编辑器都存储在3D模型中,这使得工作流程非常好。

找到正确的对象名称-如bpy.data.objects["Domino.033"].rigid_body.mass是非常容易的,因为Blender会显示这些当鼠标指针悬停在任何表单输入字段。如果已经确定了一个对象,请使用Python的dir()函数来获取该对象的所有已知方法和属性的列表。可能有更多的gui允许修改或使用。

这比我想象的要容易得多。这可能解释了为什么有些复杂的操作没有gui元素——用代码处理要容易得多。我可能会用它来复制和定位沿着线,圆,螺旋的对象,而不是使用Blender自己的数组属性。这将使以后的位置调整更容易。

这里有一个Blender 3D提示:要一次处理一堆对象,启用"复制属性"插件,这是Blender自带的,但默认情况下没有打开:打开"用户偏好",点击"插件",然后搜索"复制属性"找到"3D视图:复制属性菜单"插件。启用插件,然后关闭首选项。

要在3D视图中使用:,选择一个或多个TARGET对象,然后最后选择SOURCE对象。按键盘上的"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/

此答案更改所有对象,不需要复制粘贴,也不需要编写脚本

  • 首先,只选择一个需要更改的对象(否则一些选项卡可能不会显示)。
  • 然后选择所有需要更改的对象(顺序无关紧要)。
  • 当你现在改变所需的属性(无论是通过点击或拖动),按住Alt同时做。这将改变所有选定对象的属性。

注意,它甚至可以在转换工具箱中的x、y、z字段中输入值。点击该字段时只需按Alt键,释放Alt键,输入需要的值,按回车键,完成。

我很好奇为什么你不能调整一个材质。Blender可以很容易地重用一个对象的元素。你可以有100个对象共享一个网格。你可以有100个网格共享一组4种材料。

我想象一组多米诺骨牌将有21个网格(所有1-6 x 1-6组合)。这些网格将有2或3个材料(一个用于点,一个或两个用于身体)。如果正确连接,你可以通过改变所有网格使用的一种材料来改变所有点的颜色。

使用python批量修改对象是非常强大的,适用于许多问题,但有时解决方案更容易。

最新更新