Blender Python 对象“分组”

Posted

技术标签:

【中文标题】Blender Python 对象“分组”【英文标题】:Blender Python Object "Grouping" 【发布时间】:2020-04-28 15:27:51 【问题描述】:

我正在编写一个 Blender (2.81) Python 插件,它需要在视口中显示一个网格(低分辨率)和一个用于渲染(高分辨率)(这些是植物/树木)。我目前创建了两个对象并将低分辨率对象用作高分辨率对象的父对象。虽然这是可配置的,但默认情况下,高分辨率对象在视口中不可见且不可选择。这会将低分辨率对象在视口中呈现给用户,他们可以在其中移动、旋转和缩放它,并且这些更改会在渲染时影响高分辨率子对象(并且用户不必考虑高分辨率对象)。

我目前面临的挑战是删除视口中的父项,将子项留在场景中,我希望能够通过在视口中单击“树”并按 X 来删除它。

我是否以正确的方式思考对象组合,还是我的大脑仍然停留在 SketchUp 领域,我需要调整以使用 Blender 术语思考?

Parent/Child 机制是这种组合的正确方法吗?

我应该使用自定义集合来包含这两个对象吗? (仍然无法在 3D 视口中使用 X 删除)。

例如,在下图中,视口默认看起来像左上角。它可以配置为在左下角的视口中显示高分辨率,但只有低分辨率是可选的(如果高分辨率可见,则在线框中)。无论哪种方式,只有高分辨率呈现为右下角:

【问题讨论】:

【参考方案1】:

可以使用无限数量的集合,是的,可以将您的对象组合在一起。在大纲中,您可以右键单击集合并选择删除层次结构以一次性获取它们,这是您能做的最好的事情。

对象也有一个可选择的选项,您可以使雇用不可选,以便只能选择 lores 父级。

知道任何人都可以在您的插件创建对象后更改这些选项。这只是您认为最初呈现对象的最佳方式的选择。

要考虑的另一种可能性是将它们合并到一个对象中。两个mask modifiers 可用于隐藏渲染中的lores 网格和视口中的hires 网格。只需要一个顶点组,因为您可以反转第二个蒙版中的选择。您将需要看看这是否能提供与拥有两个对象相同的性​​能优势。

【讨论】:

我还没有遇到过遮罩修饰符——谢谢!其他人向我指出了 Collection Instances,它允许我将“实例”视为可以通过单击它并按 X 来删除的单个对象 - 效果很好。您在此处提到的组合网格可能会更简单。我需要仔细考虑这些选项,看看哪个最有效。谢谢你的回答。

以上是关于Blender Python 对象“分组”的主要内容,如果未能解决你的问题,请参考以下文章

漏洞批量验证框架 -- BLEN

Blender“HECL”翻录程序导致动画数据在 UE4 中在导入时丢失

Blender 2.6:通过 Python 按名称选择对象

Blender Python选择同一组内的对象?

获取选定对象的列表作为字符串 Blender python

Blender程序化设置材质Python