层次结构
层次结构是一系列有序的分组。在3D动画中,这些层次结构也称为父子关系,术语“育儿”是指建立父子关系。Modo使用层次结构定义多组件对象如何相互关联。例如,如果为带有旋转车轮的汽车开发模型,则当车轮随汽车自动移动时,四处移动汽车会容易得多。由于车轮的移动方式与汽车的车身不同,因此它们需要与汽车分开。
每个层次结构都始于其基础项目,称为root。这是主要的父项,并且链中的每个后续项都被视为子项。位于孩子正上方的项目始终被视为其父项。
层次结构对于动画至关重要,因为层次结构定义了链接项链中转换的继承顺序。例如,如果使用手臂,则移动肩膀时,手臂会与手腕和手一起跟随。因此,当肩膀弯曲时,它将变形传递到肘部,肘部也可以弯曲。这些转换都传递到手上,依此类推。Modo将这些层次链可视化为内部的级联项目项目清单标签。
定义层次结构
在屏幕截图中,您会看到Modo缩进列表中的每个后续项。顶层(称为Locator)是父项。下一项( Torso)是定位器的子级,其后是低序的兄弟姐妹。层次结构中项目的顺序定义了转换如何与链中更下游的项目相关。您可以在Items List标签,方法是选择一个层,然后将该层拖到另一层上。(Modo表示目标图层。) Modo会自动将父项放置在适当的位置,因此,这些项会智能地继承父项的转换(如果存在)。(它不会从育儿时的位置移动。)按Ctrl在释放鼠标按钮之前,您可以Modo直接将项目设为父项。如果目标具有任何变换,则作为父项的子项将一直移动,就像它们一直与该项相连(例如,如果在从原点0,0,0移走之前对其进行了父项化))。
动画Setup工作区布局提供了用于创建和修改层次结构的其他工具。您可以使用默认工具框中的层次结构工具Setup子标签,可直接在3D视口中将层次结构分配给项目选择。
补偿金
当将已经应用了变换的项目一起育儿时,您可能会发现项目弹出位置不正确。如果发生这种情况,则子级将继承父级的转换并将其发送到您可能不希望的位置。通过启用Compensate纽扣在顶部Setup布局Parent/Unparent按钮变成Parent in Place / Unparent in Place纽扣。如果您单击这些按钮, Modo忽略先前的父母变换;因此,项目保留相对于其父项的初始位置。
父母/父母
在项目模式下, Parent和Unparent按钮产生的结果与使用Items List标签,但这些按钮可用于3D视口中的选择。设置层次结构时,任何项目都可以作为其他任何项目的父项(例如摄像机,灯光和定位器)。
使用时,选择顺序很重要Parent按钮,因为它可以正确设置关系。最后选择的项成为父项,而第一个选择的项成为父项的子项。如果选择多个项目,则无法直接创建整个链。为此,您需要成对选择项目,然后点击Parent每对按钮。要使用Parent按钮,首先请确保您处于“项目”模式。在3D视口中选择一个项目作为子项目。按下Shift选择第二项时按键。选中两个项目后,点击Parent按钮。 您可以看到所选的第一项现在成为第二项的子项。
随着Unparent按钮,选择任何一项或多项。然后,点击Unparent按钮可从层次结构中删除所选项目。
插
的Insert按钮可用于将项目添加到现有层次结构中,而不会破坏或破坏现有链。点击Insert将第一个选择添加为第二个选择的子项。子项继承父项的变换和同级。
插入家长
的Insert at Parent按钮与Insert按钮,因为它会插入一项作为父项而不是子项。它仍然继承了转换和同级。您可能会发现这对于将项目插入层次结构的顶部很有用。
提取
的Extract按钮从层次结构内删除项目,而不会破坏层次结构链的其余部分。Modo移除后,将自动将提取的项目的子项作为父项。
3D视口育儿动作
在项目模式下,您可以使用键盘快捷键来快速设置基本层次结构。您选择的最后一个项目始终成为父项目。在任何3D视口中,您可以选择两个或多个项目并使用P到位的关键: Ctrl+P执行正常的育儿, Shift + P到位的父母Ctrl +Shift+ P取消选定项目的父项。对于更复杂的操作,您可以使用Drop Action菜单。
放下动作
您还可以直接在3D视口中使用拖放动作来定义更复杂的层次结构。的Drop Action菜单Animate和Layout界面选项卡定义将项目拖到另一个项目时会发生什么动作。要实施默认操作,请点击Drop Action并指定操作。现在,当您将一个项目(源项目)拖到另一个项目(目标)项目上时, Modo实现指定的操作。
您必须处于项目模式,并且没有活动工具才能执行操作。单击一个元素并将其拖向目标项目。界面中的元素直到到达目标项目并释放鼠标按钮后才会移动。那时候, Modo实现指定的操作。
的Drop Action菜单具有以下命令:
命令 |
描述 |
---|---|
None |
什么都不做。 |
Parent |
使Source项目成为Destination项目的子项。 |
Parent in Place |
将源项作为父项,但应用补偿。 |
Match |
修改“源”项目以匹配“目标”项目的位置,比例和旋转。 |
Match Position |
修改“源”项目以仅匹配“目标”项目的位置。 |
Match Rotation |
修改Source项目以仅匹配Destination项目的旋转。 |
Match Scale |
修改“源”项目以仅匹配“目标”项目的比例。 |
Insert |
将Source项目插入Destination项目的层次结构中。源项目的位置和方向与目标项目相匹配,但它成为目标项目的父项。 |
Insert at Parent |
将Source项目插入Destination项目的层次结构中(与Insert命令),但目标项目的父项指定了源项目的位置和方向(如果存在父项)。 |
Insert in Place |
将Source项目作为Destination项目的父项插入Destination项目的层次结构中,但是Source项目保留其当前位置和方向。 |
Place |
将“源”项插入到“目标”项的层次结构中,但根据指针和曲面的交点确定“源”项的位置。 |
Place and Align |
将Source项目插入Destination项目的层次结构中。使用此命令,指针和表面的交点确定“源”项目的位置,表面的法线方向确定其旋转。 |