库覆盖
库覆盖是一个系统,旨在允许编辑 链接数据 ,同时使其与原始库数据保持同步。大多数类型的链接数据块都可以被覆盖,然后可以编辑这些覆盖的属性。当库数据更改时,将相应更新被覆盖的库的未修改属性。
Note
旧的代理系统已在Blender 3.0中弃用,并在Blender 3.2中完全删除。加载混合文件时,会自动从代理转换为库覆盖,但复杂字符的结果无法保证,可能需要手动修复。
库覆盖
同一链接数据的多个独立覆盖(例如,在同一场景中具有相同的字符多次)。
在堆栈中的任何位置添加新的修改器和约束。
递归链接覆盖(即链接和覆盖从另一个库文件等)。
Note
有些已知问题必须得到解决。有关更多详细信息,请参阅Phabricator 项目的主要任务 。
Warning
虽然在大多数情况下,库覆盖数据会保留参考链接数据的丢失(例如,如果库文件变得不可用或被重新定位) ,但有一些例外。
当其Aramture obdata本身不被覆盖时,主要对象可能是姿势(但不是动画)骨架对象。衔铁物体的姿势骨骼与衔铁物体的骨骼完全相连,如果后来的骨骼丢失,姿势骨骼肯定会丢失。
Note
正确的收藏布局很重要
为了使库覆盖正常工作,最好 所有 字符所需的集合是根(链接和实例化)的子集,以便有一个清晰的层次结构。否则,一些数据可能无法被适当地自动覆盖,并且其他操作可能不太可靠。
覆盖
层次结构是处理库覆盖时需要理解的一个非常重要的概念。在Blender中,现实生活资产(角色、道具、集合等)几乎从未由单个数据块构成,而是一组彼此具有依赖关系的数据块。例如,角色通常将具有骨架对象、几个几何对象、装配器装配器对象、所有这些对象的对象数据、材料、纹理等。
这些关系可以表示为树,具有根数据块 “链接” 其所有依赖关系,递归。在库覆盖的情况下,层次结构的根通常也是导入资产(通常是集合)时直接链接的数据块。
这种层次结构的概念也可以被看作是某种超级元数据块。当同一链接数据有多个覆盖时,它是非常关键的,因为它可以清楚地将一个给定的数据块识别为一个覆盖,不会给影响整个层次结构的过程留下任何歧义(例如,将覆盖与它们的链接数据重新同步)。它还允许在不同层次的数据块之间共享关系,就像同一个字符的两个不同覆盖之间的亲子关系。
重写
链接的数据块之间的关系可能会发生变化,从而导致过时的覆盖。发生这种情况时,需要重新同步覆盖,以匹配其层次结构的新结构。如果在打开混合文件时需要,覆盖将自动重新同步。但是,有时可能需要手动重新同步它们,请参阅 覆盖层次结构的故障排除 。
Tip
Blender还可以从外部库重新同步库覆盖,然后将其链接到工作文件中。然而,这是一个昂贵的过程,每次加载工作文件时都需要完全重做,因为Blender无法直接编辑/修改外部库。
因此,链接覆盖(或创建递归覆盖)的用户应确保定期更新其库文件,以避免在文件加载时出现这种开销(通常,打开和保存这些库文件应足以更新它们)。
Tip
可以在文档中禁用自动重新同步 实验性首选项 。
重写
出于技术原因(数据块之间的关系的存储方式) , Blender需要创建大量数据块的覆盖,即使其中只有一两个数据块实际上需要由用户编辑。为了减少信息量和潜在的不必要编辑风险,大多数数据块现在默认标记为不可编辑。一旦创建了覆盖,就可以更改此设置。
库覆写
参考
编辑器
3D 视图,属性
模式
物体模式
菜单
3D Viewport ‣ Header ‣ Object ‣ Library Override ‣ Make Outliner ‣ Context Menu ‣ Library Override ‣ Make ID Widget ‣ Context Menu ‣ Library Override ‣ Make
快捷键
Shift-LMB 在ID小工具的 ‘linked’ /‘overridened’ 按钮上。
从选定的数据块创建覆盖。
Blender会自动为所有必需的数据块创建覆盖,以确保创建有效的覆盖层次结构。
只有从所选项目创建的覆盖将可由用户编辑。
Warning
从ID小部件(主要来自 属性 编辑器)创建库覆盖的支持是有限的。虽然应支持最常见的用法,特别是对象、网格等,但仍有许多待实施。
沿着定义的轴对选定的物体进行切变。
根据从何处创建覆盖,有几种方法可以 “选择” 要覆盖的项目和可以用户编辑的项目。
Note
这也适用于其他共同操作( 重置 \和 清除\ )。
仅在Outliner中提供的 疑难解答 高级操作始终适用于整个覆盖层次结构。
3D预览
选定的物体
当所选对象是实例化链接集合的本地 空 时,将发生以下情况: 空 对象将被删除。 其链接的集合将被覆盖,并且该覆盖将在当前 视图层 中的相同集合中实例化。如果集合包含 骨架 对象,则它们将可由用户编辑。否则,创建的覆盖将不会被定义为用户可编辑。
大纲视图
此操作仅适用于选定的项目,仅适用于其内容,或两者兼而有之。
Tip
使用 被选 & 目录 是一种简单的方法,可以立即获得所有新创建的覆盖,用户可编辑。
ID部件
只有ID小工具中的链接数据块才被视为已选中,一旦被覆盖,则设置为可编辑。
数值无法编辑的原因。
同样的操作也可以在创建现有覆盖后,或在 清除 后,使现有覆盖可由用户编辑
重置库覆盖
参考
编辑器
3D 视图,属性
模式
物体模式
菜单
3D Viewport ‣ Header ‣ Object ‣ Library Override ‣ Reset Outliner ‣ Context Menu ‣ Library Override ‣ Reset ID Widget ‣ Context Menu ‣ Library Override ‣ Reset
将所选覆盖重置为原始值(来自链接的参考数据)。与 清除 操作不同,覆盖将保持完全可编辑,并且永远不会被删除。
清空
参考
编辑器
3D 视图,属性
模式
物体模式
菜单
3D Viewport ‣ Header ‣ Object ‣ Library Override ‣ Clear Outliner ‣ Context Menu ‣ Library Override ‣ Clear ID Widget ‣ Context Menu ‣ Library Override ‣ Clear
快捷键
Shift-LMB 在ID小工具的 覆盖 按钮上。
将选定的覆盖重置为原始值,如果可能,在不破坏现有层次结构的情况下,删除它们并用其链接的引用数据替换它们。否则,保留覆盖,但将其标记为不可编辑。
覆盖
基本上,覆盖编辑的方式与常规本地数据块相同。您可以在它们上使用运算符,从各种编辑器编辑它们的属性等。但是,有一些限制,最值得注意的是,编辑模式不允许覆盖。在大多数情况下,编辑房源后,您可以看到房源被其蓝色轮廓/背景覆盖。
您还可以动画覆盖,动画属性只需替换/取代覆盖。请注意,您不能覆盖/编辑现有动画,您必须创建一个新的操作。您可以手动定义或从相关属性的上下文菜单中删除覆盖。如果覆盖不可编辑,则必须先使其可编辑。
定义重写
参考
编辑器
任意
模式
物体模式
属性
上下文菜单 ‣ 定义覆盖 上下文菜单 ‣ 定义覆盖
在本地混合文件中标记要覆盖的属性。对于数组属性,所有元素都将被覆盖。
定义单个覆盖
参考
编辑器
任意
模式
物体模式
属性
上下文菜单(右键菜单) ‣ 删除单个驱动器
在本地混合文件中标记要覆盖的属性。对于数组属性,仅将覆盖所选元素。
移除覆盖
参考
编辑器
任意
模式
物体模式
属性
上下文菜单 ‣ 删除覆盖 上下文菜单 ‣ 删除覆盖
从覆盖中删除属性。将使用数据块中链接的值。对于数组属性,所有元素将从覆盖中删除。
覆盖单个覆盖
参考
编辑器
任意
模式
物体模式
属性
上下文菜单(右键菜单) ‣ 删除单个驱动器
从覆盖中删除属性。将使用数据块中链接的值。对于数组属性,仅将从覆盖中删除所选元素。
重新同步库覆盖层级
参考
编辑器
大纲视图
模式
物体模式
大纲视图
上下文菜单 ‣ 库覆盖 ‣ 疑难解答
这些操作仅在Outliner上下文菜单中可用。它们可以帮助修复损坏的覆盖层次结构。
覆写自动重新同步
参考
编辑器
大纲视图
模式
物体模式
大纲视图
上下文菜单 ‣库覆盖 ‣ 疑难解答 ‣重新同步
链接数据的层次结构(链接数据块之间的关系)可能会发生变化。需要重新同步覆盖以匹配新层次结构。此运算符将重新同步覆盖以匹配库中的新层次结构。
Warning
重新同步库覆盖时,如果在原始库中更改编辑的覆盖,则可能会删除它们。如果是这种情况,将显示一条警告消息,说明删除了多少覆盖,如果删除是不合需要的,则可以在保存混合文件之前撤消重新同步。
Note
此过程是自动的
通常,当Blender检测到需要它时,在文档加载时会自动执行此操作,除非在 实验首选项 中禁用它。
强制重新同步
参考
编辑器
大纲视图
模式
物体模式
大纲视图
上下文菜单 ‣ 库覆盖 ‣ 疑难解答 ‣重新同步强制
在某些情况下,特别是对于那些保存有 “破损”(非层次匹配)覆盖的旧混合文件,常规的重新同步本身不能像预期的那样正确重建覆盖(例如,一些对象可能会丢失)。为了解决这个问题,这个操作者从其链接的引用以及其依赖的层次结构重建本地覆盖,强制该层次结构与链接的数据相匹配(即忽略数据块属性上现有的覆盖)。这类似于常规的重新同步,但更有力,更积极,代价是可能失去ID指针属性上的一些重写。
删除
参考
编辑器
大纲视图
模式
物体模式
大纲视图
上下文菜单 ‣ 库覆盖 ‣ 疑难解答 ‣删除
删除整个库覆盖层次结构,并将所有这些覆盖数据块替换为其原始链接数据块。这将完全恢复 Make 操作。