使用容器复制和更新场景内容(本地引用)
工作流:将对象组合到一个容器中,将它们作为单个实体进行转换,制作副本,更新副本,然后解组容器以进行单独开发。
在场景中创建容器。
容器显示为打开状态。打开的容器完全可编辑。
向容器中添加场景对象。
所添加的对象作为容器的子级链接到容器。
添加到一个容器中的两个单元住宅模型
转换容器。
对容器所做的任何更改会同时影响其内容。
容器的内容在场景中重新定位
在“管理容器”卷展栏上,启用“关闭时自动更新”,然后关闭容器,并将其保存为 Block_A.maxc。
虽然容器内容在视口中仍可见,但实际上它们已从场景中移除(例如,尝试选择内容实际会选择容器)。现在,场景将从其保存位置引用 Block_A.maxc 文件。
制作容器的两个副本,然后将每个副本重新定位到场景中所需的位置。
所有容器引用同一个 Block_A.maxc 文件。
原始 Block_A 容器(最左侧)及其两个副本(中间和右侧)
打开其中一个容器,然后尝试打开另一个容器。
系统会显示一条消息,通知您,当在另一个容器中编辑该容器的定义时,无法打开该容器。这有助于防止意外覆盖已更改的容器。
在场景中创建新对象,将其添加至打开的容器,然后单击“保存”。
因为其他容器引用相同的 MAXC 文件,所以它们也会得到更新。
所有容器都会收到添加的对象
选择打开的容器副本,使用“本地内容”卷展栏上的“另存为”以另一个名称 Block_B.maxc 保存它。
Block_B 容器现已解组,可以转入自己的开发流程。对它所做的任何进一步更改都不会应用于副本。
Block_B 容器(最右侧)已解组。它不受 Block_A 容器(左侧和中间)更新的影响。
使用容器共享和编辑外部创建的内容(原地编辑)
工作流:从其他人继承内容,将更改传递回原始创建者,并从所引用的容器解组以进行本地开发。
用户 B 转到容器资源管理器,单击继承容器,使用“继承容器”对话框打开上一过程中的 Block_A.maxc 文件。
该容器显示在从用户 A 的场景中保存它时它所在的位置。在此时,用户 B 可以使用该容器,但不能访问其内容。
用户 B(右侧)继承了用户 A(左侧)的容器
用户 A 对该容器中的建筑物进行更改,并启用“关闭时自动更新”。
关闭容器前对用户 A 的建筑物(左侧)所做的更改
用户 A 关闭该容器。用户 B 启用“关闭时自动更新”,然后自动继承最新更改。
容器在关闭时自动保存。只要保存该容器并且对所继承的容器启用“关闭时自动更新”,那么用户 B 就可以继承对内容所做的更改,无论用户 A 是否将其关闭。
从用户 A 继承更改后用户 B 的容器(右侧)
用户 A 现在已使其他用户可编辑其容器。在“规则”卷展栏上,他设置“继承时,允许仅原地编辑”,然后关闭该容器。
用户 B 的容器的“更新”按钮旁的警告图标通知他需要进行更新。自动更新应用于更改的内容,但不应用于容器自身的已更改设置。
用户 B 转到“管理容器”卷展栏并单击“更新”。
“原地编辑”按钮变为可用,因此用户 B 单击该按钮。
注意为了让用户 B 编辑该容器,用户 A 必须关闭该容器。“原地编辑”容器一次只能供一个用户使用。
用户 B 进行编辑,并再次单击“原地编辑”以退出“原地编辑”模式。
该容器关闭并且用户 A 的源定义被覆盖。下次作者(或参考该容器的任何其他人)加载该容器时,都会看到用户 B 所做的更改。
用户 A 继承用户 B 所做的更改
注意使用“原地编辑”时,容器功能会提供自动锁定功能,以防止编辑同一容器的人彼此覆盖所做的更改。用户 B 需要制作该容器的副本并将副本用于其他项目。
在“继承的内容”卷展栏上,她单击合并源定义。内容现在为本地内容,并且就像在当前场景中从头开始创建的而不是从外部来源继承的。该容器现在已解组;访问不受任何规则限制。
所复制的容器(右侧)已解组并且用于其他项目
使用容器操纵内容和设置复杂场景中的可见性
工作流:关闭容器,卸载容器以从场景中移除其内容,将容器辅助对象移至场景中的其他区域,并重新加载容器以便在新位置显示其内容。
在一个场景中创建三个容器,关闭这些容器,并使用具有唯一性的名称保存每个容器。
这些容器已保存到磁盘中,虽然其内容在视口中仍然可见,但实际已从场景中移除。场景性能得到提高:自动保存时间以及保存和重新加载场景文件所需的时间现已减少。
具有三个已保存本地容器的城市场景
单击“卸载”临时移除所选容器的内容。
已卸载其在一个容器的城市场景
将所卸载的容器辅助对象移至新位置,然后单击“加载”。
该容器的内容在新位置重新显示。
沿街道移动的容器
重新加载的容器内容
利用这种方式可以在复杂或数据量大的场景中快速切入和切出内容。
使用容器控制内容的可编辑性(管理“合并”和“使唯一”)
工作流:创建一个容器并将另一个容器放在该容器中,允许编辑主容器,然后继承嵌套的容器以防止其他用户对其进行编辑。
用户 A 创建容器并向其添加内容,内容来自城市块。
其中添加城市块的对象的容器(右侧)
用户 A 创建另一个容器,向其添加摩天大楼,保存容器,并将其添加到第一个容器中。
用户 A 现在拥有一个父容器,内部嵌套了另一个容器。
内部嵌套了摩天大楼容器(左侧)的主容器(右侧)
用户 A 选择父容器。接下来,在“规则”卷展栏上,他选择“仅原地编辑”,然后保存容器。
用户 A 想要防止其他人编辑摩天大楼容器,因此他选择摩天大楼容器,使用“继承内容”并拾取源定义,然后再次保存主容器。
现在,摩天大楼容器继承到了主容器中,且对其内容的访问被阻止。
用户 B 在其场景中继承主容器,然后单击合并源定义。这会将容器置于与作者场景中同样的状态下:打开的容器可编辑,但关闭的嵌套容器被引用,因此不可编辑。
用户 B(底部)从用户 A(顶部)继承容器
用户 B 还需要访问不可编辑的容器,因此单击使所有内容唯一。
这会打开先前不可编辑的容器,但该容器不再引用作者的源容器。用户 B 现在可以为自己的场景本地修改容器内容。
用户 B 可在本地基于用户 A 的工作继续工作
使用容器控制场景中对象的显示
工作流:设置容器显示,以便您可以处理特定容器并隐藏其余场景内容。更改显示设置而不永久更改场景的显示组织。
对于场景中的每个容器,启用“显示”卷展栏 “扩展边界框”。
这样更易于识别各对象所属的容器。
三个容器及其边界框,显示其内容的范围
打开“层管理器”对话框,使用它设置对象的显示属性,以便仅可查看和处理某些类型的对象。
一层灯对象可见的场景
右键单击容器并将其“对象属性”设置为“按层”。
在容器仍处于选定状态时,启用“覆盖对象属性”。
最左侧容器的显示属性将覆盖其他隐藏对象层
为所有容器启用“覆盖对象属性”。
可以从“容器资源管理器”或“工具”“容器”子菜单轻松覆盖选定容器的对象属性。
右键单击容器,选择“对象属性”,然后将“显示属性”设置为“按对象”和“透明”。
保留容器对象的显示属性设置为“透明”,以便查看容器后面的对象
在“层管理器”对话框中,单击“渲染”以禁用左右两侧容器的渲染性,以便可以快速渲染场景中的特定部分。
左右两侧容器的渲染性被禁用
场景的可渲染内容不是由单个对象或层的设置决定的,而是由容器决定的。
平行引用
工作流:用户 A 从用户 B 继承容器,用户 B 从用户 A 继承容器,每个用户均单击“更新”以保持与对方的工作同步。两个用户在各自的容器上单击“允许原地编辑”以允许外部用户进行更改。
用户 A 在一个容器中对一组建筑物建模。用户 B 在另一个容器中处理车辆动画。
用户 A 的场景(顶部)和用户 B 的场景(底部)
两个用户继承彼此的容器。
现在,用户 A 和 B 可以并行工作。他们开发自己的场景中的组件,同时可以查看同事的工作进展。
用户 A(顶部)和用户 B(底部)继承彼此的场景组件
用户 A 选择他的本地容器,在“规则”卷展栏上,设置“继承时,允许仅原地编辑”,然后保存容器。
用户 B 选定从用户 A 继承的容器并单击“更新”。然后,她向用户 A 的容器添加关键点以同步动画车辆的运动。
用户 B 添加关键点以将动画扩展到用户 A 的城市部分。
用户 A 单击“更新”以查看用户 B 所做的最新更改。
用户 A 继承用户 B 所做的更改。