该示例显示了如何组合使用资源和文件引用,快速替换场景中的对象而不会丢失任何行为。
考虑将一辆低多边形的汽车引用到城市场景,然后缩放和设置动画。
在其源文件 (Car_low_poly.ma) 中,汽车模型组织在名 Car_AST 的资源下。该资源的已发布属性包括汽车的“平移”和“旋转”值,以及其车轮的自旋和前车轮的向左和向右转向。在父场景中,通过修改这些已发布属性来实现动画。这些称为引用编辑,存储在父文件 (City.mb) 中。
您可以通过从“引用编辑器”(Reference Editor)选择“文件 > 列出引用编辑”(File > List Reference Edits)来查看引用编辑。
现在考虑用第二个汽车模型替换旧的汽车模型。该新汽车位于其自己的文件 (Car_high_poly.ma) 中。
与原始模型相比,在诸如方向盘、车窗、侧门和车身等附加细节方面,第二个模型具有不同的结构和额外的节点。
更重要的是,第二个模型组织在与原始汽车具有相同名称 (Car_AST) 和相同已发布属性的资源下。这一点至关重要,因为父文件的引用编辑按已发布名称存储。还可以选择使其具有其他已发布属性,用来控制车门状态、车窗状态和旧汽车上不存在的其他细节。
现在可以通过使用对新汽车的引用替换现有引用来替换城市场景中的旧汽车。
旧的汽车将替换为新的汽车并进行适当的缩放。如果播放场景,新汽车的动画效果与旧汽车相同。
由于引用编辑根据资源的已发布名称存储在父场景中,因此可以用任何具有相同名称和已发布属性的引用资源来替换汽车。这使您可以在场景中灵活地尝试不同的选项而不用断开它。
此示例使用“引用编辑器”(Reference Editor)和“替换引用”(Replace Reference)命令。但是,也可以使用“传递属性值”(Transfer Attribute Values)命令来获得相同的结果。要执行此操作,应将两个汽车放置在同一个文件中,并将原始汽车的属性传递给新汽车。有关这种工作流的示例,请参见示例:交换机器人的手臂。