Blender 3D:菜鸟到高手/Blender 内存管理
第一次阅读本节可能会让人有点困惑。如果你没有立即理解,不要过于担心;但随着你越来越多地使用 Blender,复制对象或在对象之间共享设置,请随时回来重新阅读本节,希望它能让你更清楚地了解 Blender 行为的一些细微之处。 |
了解 Blender 如何管理内存非常有用。Blender 文档中的几乎所有内容——场景中的对象、场景本身、材质、纹理等等——都存储在一个数据块中。每个数据块都有一个名称,在相同类型的数据块中必须是唯一的。每个数据块可以被一个或多个地方引用,主要是在其他数据块中——用 Blender 的术语来说,它有一个或多个用户。例如,几个不同的对象可能共享相同的材质,因此当你更改材质的特性时,它会自动更改所有这些对象的外观。
如果数据块的用户数量降至零,它仍然会保留在内存中,但在保存文档时不会被保存。因此,如果你保存并重新加载文档,所有用户数量为零的数据块都会消失。(在某些情况下,你可能需要保存并重新加载几次,才能使所有用户数量为零的数据块消失。)
但在那之前,数据块将继续出现在相关的弹出菜单中,因此你可以将其重新分配给更多用户。
你还可以为数据块分配一个伪用户;这就是在列出该类型数据块的弹出菜单中“F”按钮的功能。这确保了用户计数永远不会降至零,因此数据块始终在文档中保存,即使它没有实际用户。这对“库”文档很有用,这些文档可以包含有用的材质和纹理集合,例如,可以链接或导入到其他文档中,而无需在库中包含虚拟对象来确保这些材质和纹理被保存。
例如,以下是用于选择对象材质的小部件
主要部分显示当前材质的名称,可以编辑。X按钮断开与该材质的链接,并将它的用户数量减少一个,而F按钮则为该材质分配一个伪用户。+按钮让你创建一个新材质。
左侧的材质符号弹出一个列表,其中包含要选择的现有材质,以及一个搜索框,用于搜索所有现有材质
注意带有0符号的条目;它目前的用户计数为零,如果不再使用,将在保存并重新加载文档时消失。
如果用户计数大于 1,小部件还会显示当前的用户计数
在本例中,由于选择了F按钮,所以计数增加了。
单击数字(如果它大于 1)会复制材质,该材质仅附加到此特定用户。副本的用户计数为 1,而原件的用户计数减 1。 |
这是 Blender 中对象数据块和对象数据数据块之间(有点令人困惑)的区别的基础。对象数据块包含3D场景中所有类型对象共有的信息,无论它们是网格对象、灯对象、摄像机对象还是其他任何东西;而对象数据数据块包含该实例的特定信息,例如,你可能正在使用的特定网格的顶点、边和面的定义,或者你为项目设置的灯的颜色和能量,或者你设置的摄像头的视野。
这让我们了解了两个对象复制命令之间的区别, SHIFT + D 和 ALT + D :前者复制对象数据块和对象数据数据块(尽管这可以在你的用户偏好设置中控制),而后者只复制对象数据块。这意味着,在第一种情况下,两个对象是真正独立的,但在第二种情况下,新对象继续共享相同的对象数据数据块,因此对一个对象的更改会导致对两个对象的更改。因此,例如,如果你对网格对象使用 ALT + D 并编辑一个副本的顶点、边或面,另一个副本也会受到影响。