如何在 Blender 中有效地更改多个对象的相同参数?
Posted
技术标签:
【中文标题】如何在 Blender 中有效地更改多个对象的相同参数?【英文标题】:How do I change the same parameter on multiple objects efficiently in Blender? 【发布时间】:2013-05-13 14:54:10 【问题描述】:从单个立方体开始,我更改了一些属性(材质、颜色、反射属性),然后将对象复制到十几个立方体中,将它们放置在场景中。渲染后,我想更改所有这些的颜色。如何有效地做到这一点?
我已经找到了多种方法:
-
在对象模式下,选择所有对象(
B
,然后选择矩形),加入网格ctrl-j
,更改颜色,tab
进入编辑模式,P
再次分离对象。这是很有可能的,因为我所有对象的网格都没有接触。 Basics docs
有人写了一个 Python 脚本来做类似的事情,here
数字 1 容易出错,而且对于常规使用来说太乏味了。 2号更专业,更糟糕。仅选择多个对象并更改值是行不通的,因为属性选择仅适用于活动对象,该对象仅是选定对象之一。
由于这是一个常见的用例,我可能错过了简单的方法。这是什么?
【问题讨论】:
对于像我一样想知道这个问题的人,这里是更新版本:blender.stackexchange.com/questions/6015/… 【参考方案1】:虽然我没有找到更受欢迎的简单按钮或 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 自己的数组属性。这将使以后的位置调整更容易。
【讨论】:
【参考方案2】:我很好奇为什么你不能只调整材质。 Blender 使重用对象的元素变得非常容易。您可以有 100 个对象共享一个网格。您可以拥有 100 个共享一组 4 种材质的网格。
我想象一组多米诺骨牌将有 21 个网格(对于所有 1-6 x 1-6 组合)。这些网格将有 2 或 3 种材料(一种用于点子,一种或两种以上用于主体)。如果链接正确,您可以通过更改所有网格使用的一种材料来更改所有点的颜色。
使用python批量修改对象非常强大,适用于很多问题,但有时解决起来更容易。
【讨论】:
感谢您提醒我可以跨对象共享材质定义。我得测试一下。这里的实际应用比您想象的要简单得多,因为这些基本上只是多米诺骨牌倾倒的盒子,而不是带有点子的黑白类型的多米诺骨牌。模拟的一个问题是,静止物体和移动物体的摩擦表现不同,而且我所模拟的与现实有点太远了(也可能是用户错误)。最后,我暂时放弃了这个特定的项目。 如何在一开始就将一个材质分配给多个对象?如果选择了不同的对象,则只有活动的对象可以明显分配材料。 选择多个对象,确保具有您喜欢的材质的那个是活动对象。使用 Ctrl-L 调出 Make LInk 菜单并选择 Materials 操作符。【参考方案3】:如果您只想为多个对象更改一个参数 RMB 点击控件(例如文本字段)并选择复制到选定对象。
在用户偏好中激活3D视图:复制属性菜单并使用ctrl+c调用它 如果你想复制修饰符之类的
http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/3D_interaction/Copy_Attributes_Menu
【讨论】:
【参考方案4】:这是一个 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/
【讨论】:
以上是关于如何在 Blender 中有效地更改多个对象的相同参数?的主要内容,如果未能解决你的问题,请参考以下文章