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

新手上路,请多包涵

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

我已经找到了多种方法:

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

数字 1 容易出错,而且对于常规使用来说太乏味了。 2 号更专业,更糟糕。仅选择多个对象并更改值是行不通的,因为属性选择仅适用于活动对象,而活动对象只是所选对象之一。

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

原文由 cfi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 993
2 个回答

虽然我没有找到更受欢迎的简单按钮或 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 自己的数组属性。这将使以后的位置调整更容易。

原文由 cfi 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进