容器定义
容器定义是一个存储容器内容的 MAXC 文件。可通过以下两种方法之一使用定义文件:
局部定义存储您对内容所做的更改。
源定义将内容引用到场景中的容器中。
当在场景中保存容器时,您会保存“局部定义”。如果其他人引用您的内容,则他们的“源定义”与您的“局部定义”相同。如果他们对您的内容进行更改,则他们会将这些更改保存到自己的唯一“局部定义”中。有一种例外情况是“原地编辑”,该功能会将更改保存回“源定义”,会覆盖“源定义”。
您可以像处理常规 MAX 场景文件那样,打开定义文件来排除其内容问题:只需将容器文件的 MAXC 扩展名重命名为 MAX。
锁定的定义
如果同一局部定义由多个容器共享,那么您一次只能访问其在一个容器。如果状态为“锁定”,则表示此容器的定义正在其他位置被访问。在以下情况下会发生此操作:
容器允许原地编辑,但某人当前正在编辑它。
容器已被复制,某个副本处于打开状态。
同一 3ds Max 场景文件在其他位置打开,且相同的容器处于打开状态。
只要存在局部定义,当容器处于打开或编辑状态时,就会创建一个临时文件,以向尝试访问它的其他人标识此状态。退出“原地编辑”模式或关闭容器时,将删除此文件。不过,如果在原地编辑时退出或重置 3ds Max,则会保留此锁定文件,从而会导致以后无法访问容器。要还原可访问性,请打开容器文件所驻留的文件夹,删除与容器文件同名但后缀为 .lock 的文件。例如,如果容器文件名称为 dining_room.maxc,则锁定文件的名称为 dining_room.maxc.lock。
为了避免冲突,最好在准备让容器可由另一用户本地访问时关闭容器。
提示和最佳做法
从属关系由于容器可由其他人(可将容器添加到其自己的场景中)继承,请确保将内容的所有相关从属关系打包到容器中。否则,在更新、关闭或卸载时,与容器外部对象的关系将断开。
例如,如果球体的运动通过“链接变换”修改器影响圆柱体的变形,则可以将圆柱体和任何相关对象放在一个容器中,然后将该容器和球体放在另一个容器中。
系统单位如果打算与其他人共享容器,则确保所有人使用的系统单位都相同。
实例化的容器和克隆的容器您不能实例化容器。您可以克隆容器,由于原始容器已锁定定义,克隆的容器将关闭。要继承对当前打开的任何副本所做的更改,请启用关闭时自动更新
如果克隆已保存或已关闭的容器,将无法撤消操作。
变换容器容器是其内容的父对象,因此,默认情况下,应用于容器的任何变换都会影响其中的所有对象。
要在不影响内容的情况下变换容器,请选择一个打开的容器,在“层次”面板 “调整变换”卷展栏上,启用“不影响子对象”。仅当“层次”面板处于活动状态时,此设置才适用。
层次您可以在容器内的对象间创建父/子关系,但所有内容都是该容器的后代。以下规则适用于容器中的对象层次:
移除对象从容器中移除对象时,也会移除其子对象,因此子对象不再链接到其原始父对象。
断开内容链接在容器中断开某个对象与其父对象的链接会移除该对象及其子对象。同样,如果将内容链接到容器外的父对象,则会移除该对象及其子对象。
断开内容与容器的链接也会将其移除。
链接到内容如果将对象链接到容器内的父对象,则系统会提示您添加它。如果单击“否”,则在更新、关闭或卸载时将断开与父对象的关系。
同样,如果将容器外的对象作为容器内的父对象来链接,则系统会从容器中移除该父对象,而不给出任何提示。但是,如果将容器外的对象作为容器内的子对象来链接,则系统会提示您将该容器外的对象添加到容器中。
外部参照不能将外部参照对象或具有外部参照材质或控制器的对象添加到容器中。相反,您可以继承一个包含可能用作外部参照的对象的容器,并将其添加到另一个容器中。
容器中的机器人在将动画机器人放入容器之前,请确保机器人中没有任何对象处于隐藏或冻结状态,且容器在原点 (X=0, Y=0, Z=0) 处居中。将机器人添加到容器中时,请确保同时包括所有从属关系。
注意继承时,Biped 和 CAT 系统始终为本地系统。这表示它们仅在关闭的容器中更新,且不支持解除特定属性的锁定。
外部路径继承容器的工作原理很像将资源合并到场景中。例如,如果内容使用位图,则在路径发生变化或外部文件中未定义新路径的情况下,将找不到该贴图。
在这种情况下,可以使用“缺少贴图文件”对话框,该对话框将打开以定位相应文件。
过程
要创建容器,请执行以下操作:
在 “创建”面板上,单击 (“辅助对象”)。
在“对象类型”卷展栏中,单击“容器”。
在视口中单击并拖动鼠标即可创建容器辅助对象。
右键单击结束对象创建过程。
如果是首次创建,则容器将打开,因此容器是可编辑的。
要根据选定对象创建容器,请执行以下操作:
选择要在容器中放置的对象后,执行下列操作之一:
从“工具”菜单中,选择“容器”“利用所选内容创建容器”。
打开容器资源管理器,然后打开场景资源管理器 (其中“自定义”“工具栏”“容器”处于启用状态);或者打开容器工具栏,然后在工具栏上单击 (“利用所选内容创建容器”)。
一个容器会随即添加到场景中,其中包含所选对象。
要将对象添加到容器中,请执行以下操作:
执行下列操作之一:
在视口中,选择要向其中添加对象的已打开容器,然后在“修改”面板 “本地内容”卷展栏中,单击“添加”。使用“添加容器节点”对话框(该对话框打开后会高亮显示要添加的对象),然后单击“添加”。
在视口中,选择要添加到容器中的对象,然后从“工具”菜单中,选择“容器”“本地内容”“将选定对象添加到容器中”。使用“选择要添加到的容器”对话框,该对话框打开后会选定要将对象添加到的已打开容器。
打开容器资源管理器、场景资源管理器 或容器工具栏,再选择要添加的对象,然后从工具栏中单击 (“将选定对象添加到容器中”)。使用“选择要添加到的容器”对话框高亮显示容器,然后单击“添加”。
所添加的对象在视口中仍然可见,但关闭容器时,它们会从场景中移除并引用容器的 MAXC 文件。
要从容器中移除对象,请执行以下操作:
执行下列操作之一:
选择要从其移除对象的已打开容器。(无法选择已关闭容器中的对象。)在“修改”面板 “本地内容”卷展栏上,单击移除。在“移除容器节点”对话框的列表中高亮显示要移除的对象,然后单击移除。
选择要移除的对象,然后从“工具”菜单中,选择“容器”“本地内容”“从容器中移除选定对象”。
打开容器资源管理器或场景资源管理器 ,高亮显示要移除的对象,然后在工具栏上单击 (“从容器中移除选定对象”)。
相应对象会随即从容器中移除,并添加到场景中。
要标识对象所属的容器,请执行以下操作:
选择场景中要标识其容器的对象。
在“工具”菜单中,选择“容器”“选择内容容器”。
在场景中,对象的容器被选中。
注意如果是嵌套容器,则会选中对象的直接父容器。
要关闭和保存容器,请执行以下操作:
执行下列操作之一:
选择要关闭的容器,然后在“修改”面板 “管理容器”卷展栏上,单击“关闭”。
选择要关闭的容器,然后从“工具”菜单,选择“容器”“关闭容器”。
打开容器资源管理器、场景资源管理器 或容器工具栏,再高亮显示要关闭的容器,然后在工具栏上单击 (“关闭容器”)。
如果是首次关闭容器,则系统会提示您先对其进行保存。使用“容器定义文件”对话框指定位置和文件名,然后单击“保存”。
容器辅助对象由打开状态更改为关闭状态。关闭容器后,该容器就可供其他人编辑。
所关闭容器中的对象会从场景中移除,但仍会保持可见。现在,场景会从已保存容器的文件中引用它们。关闭容器这一操作可以有效提高场景的性能。
要保存容器,请执行以下操作:
执行下列操作之一:
选择要关闭的容器,然后在“修改”面板 “本地容器”卷展栏上,单击“保存”或“另存为”。
选择要保存的容器,然后选择“工具”菜单 “容器”“本地内容”“保存容器”。
打开容器资源管理器、场景资源管理器 或容器工具栏,再选择要保存的容器,然后在工具栏中单击 (“保存容器”)。
如果是首次保存容器,则会出现一个文件对话框,提示您输入要保存的 MAXC 文件的名称和位置。
要重新加载容器,请执行以下操作:
执行下列操作之一:
在视口中,选择要重新加载的已打开容器,然后在“修改”面板 “本地内容”卷展栏中,单击“重新加载”。
在视口中,选择要重新加载的已打开容器,然后在“工具”菜单中,选择“容器”“本地内容”“重新加载”。
打开容器资源管理器、场景资源管理器 或容器工具栏,再选择要重新加载的已打开容器,然后在工具栏上单击 (“重新加载”)。
这会将已打开容器刷新到最新保存的版本。使用此功能可以在不保存容器的情况下放弃对容器所做的更改,或刷新容器的副本。
要更新容器,请执行以下操作:
只能更新具有继承内容的容器。要更新继承容器,请执行下列操作之一:
在视口中,选择要更新的容器,然后在“修改”面板 “本地内容”卷展栏中,单击“更新”。
在视口中,选择要更新的容器,然后从“工具”菜单中,选择“容器”“更新”。
打开容器资源管理器、场景资源管理器 或容器工具栏,再选择要更新的容器,然后在工具栏中单击 (“更新”)。
这会将容器更新到最新保存的版本。
要继承容器,请执行以下操作:
此过程显示如何将容器作为新实体放入场景中。另外,您也可以将某容器继承到现有容器中;请参见以下过程。
执行下列操作之一:
在“工具”菜单中,选择“容器”“继承容器”。
打开容器资源管理器、场景资源管理器 或容器工具栏,然后单击 (“继承容器”)。
在“继承容器”对话框中,导航到场景中要继承的容器的 MAXC 文件。
单击“打开”。
如果容器作者已提供编辑权限,则您可以单击“原地编辑”以编辑容器内容。
要将已保存容器的内容继承到现有容器中,请执行以下操作:
在视口中,选择要接收继承内容的容器,然后在“修改”面板 “管理容器”卷展栏中,单击“继承内容”。
使用“继承容器”对话框导航到要继承其对象和显示属性的容器的 MAXC 文件。
单击“打开”。
当前容器中的所有内容将被删除,并替换为您选择要继承的容器的内容。
如果容器作者已提供相应权限,则单击“原地编辑”可以编辑容器内容。要编辑继承的容器,请执行以下操作:
仅当作者已提供编辑权限时,您才可以编辑继承的容器。
如果已授予编辑权限,请执行下列操作之一:
选择要编辑的容器,然后在“修改”面板 “管理容器”卷展栏上,单击“原地编辑”。进行更改,然后再次单击“原地编辑”以保存工作并关闭容器。
选择要编辑的容器,然后从“工具”菜单,选择“容器”“编辑容器”。进行更改,然后再次选择“编辑容器”以保存工作并关闭容器。
打开容器资源管理器、场景资源管理器 或容器工具栏,再选择要编辑的容器,然后从工具栏中单击 (“编辑容器”)。进行更改,然后再次单击 (“编辑容器”)以保存工作并关闭容器。
任何随后引用容器的用户将继承更改。
要允许编辑容器,请执行以下操作:
选择打开的容器。
在“修改”面板 “规则”卷展栏上,选择“仅原地编辑”、“仅添加新对象”或“任何未锁定的对象”(并设置要锁定的属性),然后保存容器。有关这些选项的说明,请参见“规则”卷展栏。
关闭容器。
容器文件现在即可被任何其他用户编辑。任何随后引用容器的用户将继承更改。
要将继承的内容更改为本地内容,请执行以下操作:
继承的内容从容器文件引用到场景中,以便更改该内容也会更改该文件。您可以通过执行以下过程解除引用内容,以使其变为唯一。
执行下列操作之一:
选择场景中要使其引用内容唯一的已关闭容器,然后在“修改”面板 “管理容器”卷展栏上,单击“使所有容器唯一”。
在视口中,选中场景中要使其引用内容唯一的已关闭的容器,然后从“工具”菜单中,选择“容器”“使所有容器唯一”。
打开容器资源管理器、场景资源管理器 或容器工具栏,再选择场景中要使其引用内容唯一的已关闭容器,然后从工具栏中单击 (“使所有内容唯一”)。
容器状态由“关闭”更改为“打开”,并且将其所有内容加载到场景中。内容不再从 MAXC 文件中引用;现在,对容器内容的任何更改均在本地完成。
要在场景中合并容器,请执行以下操作:
选择从外部引用的源容器继承内容的已关闭容器,然后执行下列操作之一:
在“修改”面板 “继承的内容”卷展栏上,单击“合并源定义”。
在“工具”菜单上,选择“容器”“继承的内容”“合并容器源”。
打开容器资源管理器、场景资源管理器 或容器工具栏,然后在工具栏上单击 (“合并容器源”)。
将使用源容器的最新版本加载该容器,并将其从关闭状态更改为打开状态。容器现在为本地容器,且对容器所做的任何更改不再影响源。
要覆盖内容显示设置,请执行以下操作:
选择要覆盖其对象显示属性的容器,然后执行下列操作之一:
在“修改”面板 “显示”卷展栏上,单击“覆盖对象属性”。
从“工具”菜单,选择“容器”“覆盖对象属性”。
打开容器资源管理器、场景资源管理器 或容器工具栏,然后在工具栏上单击 (“覆盖对象属性”)。
选定容器中所有对象的各显示属性(包括显示颜色、显示/隐藏和渲染性)被为容器设置的显示属性所覆盖和替换。
要删除容器,请执行以下操作:
在视口或资源管理器中,选择要删除的容器。
按 Delete,或者选择“编辑”菜单 “删除”。
当您删除容器时,也会删除其内容。