python - Blender Python 对象“分组”
问题描述
我正在编写一个 Blender (2.81) Python Addon,它需要在视口中显示一个网格(低分辨率)和一个用于渲染(高分辨率)的网格(这些是植物/树木)。我目前创建了两个对象并将低分辨率对象用作高分辨率对象的父对象。虽然这是可配置的,但默认情况下,高分辨率对象在视口中不可见且不可选择。这会将低分辨率对象在视口中呈现给用户,他们可以在其中移动、旋转和缩放它,并且这些更改会在渲染时影响高分辨率子对象(并且用户不必考虑高分辨率完全反对)。
我目前面临的挑战是删除视口中的父项,将子项留在场景中,我希望能够通过在视口中单击“树”并按 X 来删除它。
我在这里以正确的方式思考对象组合,还是我的大脑仍然停留在 SketchUp 领域,我需要调整以用 Blender 术语思考?
Parent/Child 机制是这种作曲的正确方法吗?
我应该使用自定义集合来包含这两个对象吗?(仍然无法在 3D 视口中使用 X 删除)。
例如,在下图中,视口默认看起来像左上角。它可以配置为在左下角的视口中显示高分辨率,但只有低分辨率是可选的(如果高分辨率可见,则在线框中)。无论哪种方式,只有高分辨率呈现为右下角:
解决方案
可以使用无限数量的集合,是的,可以将您的对象组合在一起。在大纲中,您可以右键单击集合并选择删除层次结构以一次性获取它们,这是您能做的最好的事情。
对象也有一个可选选项,您可以使雇用不可选,以便只能选择 lores 父级。
知道任何人都可以在您的插件创建对象后更改这些选项。这只是您认为最初呈现对象的最佳方式的选择。
另一种考虑的可能性是将它们合并到一个对象中。两个遮罩修改器可用于隐藏渲染中的 lores 网格和视口中的雇用网格。只需要一个顶点组,因为您可以反转第二个蒙版中的选择。您将需要查看这是否会提供与拥有两个对象相同的性能优势。
推荐阅读
- python - ValueError:确保您指定了正确的输入图像、输入类型、输出类型和/或输出图像路径
- c++ - 如何在多个源文件中将 C++ 堆栈实现为全局变量?
- android - 在挂载 sd 卡的设备上读取和写入文件时出现问题
- youtube-api - 通过嵌入 YouTube 视频被 CORS 政策错误阻止
- c# - Protobuf - 替换通用集合
- javascript - 如何在测试中读取 jest 配置值?
- chart.js - Chart.js 从轴移动图表的起始位置
- azure - Azure 信号中的 serverExceptions 和 Exceptions 有什么区别?
- scala - Scala Seq vs List vs MutableList 性能(foldLeft)
- python - 从一组列表中创建一个包含最少元素和至少一个公共元素的列表