通过将此标签分配给场景中的任何对象,您可以使用 CINEMA 4D 强大的表达式生成器 XPresso 创建自己的表达式。
然后 XPresso 编辑器将自动打开。使用 XPresso,您可以为对象创建几乎任何类型的行为并将行为相互链接,从而实现场景中对象之间无休止的自动交互。
XPresso 编辑器
要创建新表达式并打开 XPresso 编辑器,请在对象管理器中选择任何对象并选择标签/编程标签/XPresso。您可以随时关闭编辑器,然后通过双击 XPresso Expression 标签重新打开它。
节点是 XPresso 表达式的构建块。节点可以执行各种各样的任务,从报告动画的当前帧数到将对象设置到特定位置。要构建表达式,您需要创建必要的节点并通过在节点输入和输出端口之间绘制线(称为连线)将它们相互连接。然后,节点能够通过这些端口和电线相互传递值。
上图显示了两个节点:一个用于立方体,另一个用于圆柱体。两个标记为旋转的圆圈是端口。红色方块下方的端口是输出端口,将值发送到 XGroups 或其他节点。蓝色方块下方的端口是输入端口,用于接收来自其他节点或 XGroup 的值。在这个例子中,立方体的旋转值被发送到圆柱体。这将导致圆柱体在视口中指向与立方体相同的方向。
XGroups
XGroups 是节点、其他 XGroups 及其连线的容器。就像真正的容器一样,XGroups 可以帮助您将相关项目放在同一个盒子中以便更好地组织。然后,您会发现更容易理解、导航和修改表达式。除了充当容器之外,XGroup 还可以连接到节点和其他 XGroup。您可以保存和加载 XGroup 以在其他项目中重用它们。
您可以使用与 Cinema 4D 视口类似的方式导航 XGroup 的内容。要移动或缩放内容,请拖动 XGroup 右上角的移动或缩放图标。您也可以通过按光标键移动内容。要将端口添加到 XGroup,请从 XGroup 的输入菜单(蓝色方块)和输出菜单(红色方块)中选择所需的端口。
要将 XGroup 最小化到其标题栏,请双击标题栏。要将 XGroup 窗口恢复为完整大小,请再次双击标题栏。要移动 XGroup,请拖动其标题栏。要重新调整 XGroup 的大小,请拖动边或角。
创建您自己的表达式时,您通常需要选择一个 XGroup 以将其设置加载到属性管理器中,以便您可以编辑它们。要选择 XGroup,请单击 XGroup 的标题栏。要选择多个 XGroup,请将选取框拖到它们上方,或选择其中一个 XGroup,然后按住 Shift 键并单击要选择的其他 XGroup;选定的 XGroup 具有橙色边框。
输入优先
在Attribute Manager的 Node Properties 页面上,您将找到一个名为 Inputs First 的选项。如果启用此选项,则首先评估所选 XGroup 之外的节点。这在 XGroup 从节点接收值时尤其重要,以确保 XGroup 接收到最新的值。
双击 XGroup 窗口的标题栏会将窗口缩小到标题栏。再次双击以恢复窗口。单击并按住标题栏将允许您拖动 XGroup 窗口,单击并按住 XGroup 窗口的框架(光标将变为缩放符号)将允许您缩放窗口。只需单击 XGroup 窗口的标题栏即可选择 XGroup,例如,用于复制和粘贴或访问属性管理器中的设置和数据类型。多个 XGroup 或节点可以通过按住 Shift 键并单击它们然后,例如,然后移动到单个组来选择。所选组将以橙色轮廓突出显示。
激活
此选项允许您打开(激活)或关闭 XGroup。只有当 XGroup 处于活动状态时,才会处理 XGroup 内的节点。您还可以通过将布尔值 True 或值 1 传递到其启用端口来打开节点。
密码保护
您可以使用此按钮对 XGroup 进行密码保护,这将隐藏 XGroup 的内容,直到输入密码。
要保护 XGroup,首先选择 View / Locked 以锁定 XGroup 的内容。在属性管理器中,单击保护按钮。在打开的对话框中,输入 XGroup 的密码。XGroup 现在将受到密码保护。
要取消保护 XGroup,您的操作与保护它的操作几乎相同,但相反。首先,单击取消保护按钮,然后在出现的对话框中输入您的密码。要显示 XGroup 的内容,请从上下文菜单中禁用 View / Locked,然后从上下文菜单的 View 子菜单中选择所需的显示模式。
节点
Cinema 4D 的节点以弧度工作。换句话说,节点使用从 0 到 2*Pi 的角度值,而不是从0到360˚的度数。如果您想以度为单位工作,请使用度数节点将弧度转换为度数,反之亦然。
您可以通过双击其标题栏来最小化或最大化节点;要移动节点,请拖动其标题栏;要重新调整节点大小,请拖动边或角。单击一个节点以将其选中并将其设置加载到属性管理器中。要选择多个节点,请在它们上方拖动选取框或选择其中一个节点,然后按住 Shift 键单击要选择的其他节点;选定的节点有橙色边框。
您可以通过属性管理器 中的启用选项或节点上下文菜单中的禁用选项来打开或关闭节点,本章稍后将对此进行介绍。
要重命名节点,请选择该节点并在Attribute Manager的 Basic Properties 页面 上输入其新名称。节点的默认名称指示其类型。如果重命名节点,可以在属性管理器中检查其类型。您还可以在属性管理器中设置节点的数据类型;这定义了节点处理的数据类型,例如整数或字符串。
您可以将对象、材质或标签节点重新分配给不同的对象、材质或标签。只需将对象、材料或标签拖放到节点的内部(即拖放到端口名称通常出现的区域)。如果仍然适用于新对象、材料或标签,原始端口将被保留。无法保留的端口将设置为未定义状态。
本章稍后将介绍每个 XPresso 节点。
端口
端口是节点和 XGroups 的输入和输出。要添加端口,请从输入菜单(蓝色方块)或输出菜单(红色方块)中选择所需的端口;在这些菜单中,已添加的端口会出现幻影。
红色端口是输出端口,将值发送到其他节点或 XGroup。蓝色端口是输入端口,用于接收来自其他节点或 XGroup 的值。要将输出端口连接到输入端口,请将一个端口的圆圈拖放到另一个端口上。一根电线将连接端口,如下图所示。
端口的上下文菜单中提供了特定于端口的各种命令。
如果选择了一个节点或 XGroup 并且有未连接的端口,这些将显示在Attribute Manager的 Parameter 页面上(不适用于 Object 节点);您可以通过在此页面上输入值将值发送到这些端口。这对于测试具有特定值的节点特别有用。属性管理器还使您能够将自己的数据发送到节点(请参阅下面的用户数据)。
要显示端口名称,请将鼠标指针悬停在端口上,其名称将出现在 XPresso 编辑器的状态栏中。(要打开状态栏,请在 XPresso 编辑器的布局菜单上启用显示状态栏选项)。要显示端口名称,请启用上下文菜单上的 Ports / Show Names 选项。
双击一个端口将断开它。如果端口已断开连接,则双击该端口将删除它。要更改端口的垂直顺序,请按住 Alt+拖动端口并将其放到新位置。
为元素参数定义的端口也可以在属性管理器中标记:- 活动 XPresso 输入端口:左侧三角形
- 有源 XPresso 输出端口:右三角形
- 有源 XPresso 输入和输出端口:双三角形
- 无端口:将显示圆圈
用户数据
用户数据端口使您能够通过属性管理器 将自己的值发送到节点。
创建用户数据端口
- 在对象管理器中,选择要添加端口的对象。只有添加到对象管理器中对象的用户数据才能在 XPresso 编辑器中使用。添加到 XGroups 的用户数据不能在 XPresso 编辑器中使用。
- 在属性管理器中,选择用户数据/添加用户数据。在打开的对话框中,根据需要设置端口参数,然后单击确定。
- 单击节点的输入菜单(蓝色方块)并选择用户数据端口的名称。
- 您现在可以通过属性管理器的用户数据页面上的用户数据参数将值发送到端口。
电线
要使节点和 XGroup 能够相互传递值,您必须首先创建必要的端口并使用电线连接这些端口。要在两个端口之间创建连线,请将一个端口的圆圈拖到另一个端口上。拖动时会出现一条线,当鼠标指针靠近它时,它会捕捉到第二个端口。
某些连接是不允许的。例如,您不能将输入端口连接在一起或将输出端口连接在一起,也不能连接具有不兼容数据类型的端口。绘制导线时,其颜色会发生变化以指示连接是允许(绿色)还是不允许(深灰色)。如果连接不被允许,只要松开鼠标按钮,电线就会被删除。
一个输出端口可以连接到多个输入端口,从而使您能够将相同的值传递给多个节点或 XGroup。但是,一个输入端口可能只有一个连接。
要将输出端口连接到同一节点的输入端口,请复制节点(按住Cmd/Ctrl并拖放副本)并将第一个节点的输出端口连接到第二个节点的输入端口。
如果您不小心将电线连接到错误的端口,您可以通过将电线拖放到正确的端口来重新连接。如果您将电线放到一个空白空间(即没有放到端口上),只要您松开鼠标按钮,电线就会被删除。您还可以通过从端口的上下文菜单中选择“移除连线”来删除连线。
如果表达式中的连线缠结,请通过按住 Alt 键将每个端口重新定位到新位置。您只能垂直重新定位。例如,您不能按住 Alt 键将输入端口从节点的左边缘拖动到右边缘。
Wires 会自动转换兼容的数据类型。例如,如果您将一个实数(例如72.163)传递给仅使用整数的节点,则连接线将自动将实数转换为整数 - 在本例中为72。
数据类型
每个节点和 XGroup 都有一个数据类型,它定义了它使用的值的类型,例如 Integer、Vector 或 Color。如果连接使用不同数据类型的两个节点,如果类型兼容,节点之间的连线会自动转换数据类型。例如,如果 Constant 节点将 Real 值3.45传递给数据类型设置为 Integer 的 Result 节点,则该值将自动转换为整数 - 在本例中为3。
虽然有些节点的数据类型是固定的,无法更改,但是您可以在属性管理器中更改大多数节点的数据类型。
颜色
此数据类型由红色、绿色和蓝色的颜色分量组成。RGB 值也可以解释为向量——因此颜色 R:10, G:75, B:0 将等同于向量 ( 10;75;0 )。例如,这使您可以使用颜色来控制对象的位置或旋转矢量。
关联
Link 数据类型包含有关 Cinema 4D 场景中各种元素的信息,包括有关标签和材质以及对象的信息。Link 类型不能转换为其他数据类型。链接数据类型的目的是允许您选择场景元素(例如对象、材质或标签)以进行更仔细的检查。例如,您可以使用链接数据类型在属性管理器中添加用户数据框。然后,您可以通过将材料、标签和对象拖放到框中来分配它们。另请参见下面的Object。
文件名
此数据类型允许您存储文件路径。例如,Sound 节点使用 Filename 数据类型来存储您要加载的声音文件的路径。
纹理
该元素包含对纹理的引用,即对图像文件或着色器的引用。此数据类型仅在与材质一起使用时使用,例如在材质通道中。
镜头发光
TheLens Glow 数据类型是一个完整数据集的容器——在这种情况下,控制光源的镜头发光所需的所有信息。此数据类型不能转换为其他类型。
布尔
Bool 数据类型有两种可能的状态:True或False。这些状态由数值 1(真)和 0(假)表示。尽管您可以在数学计算中使用 Bool 值,但请记住,Bool 数据类型只能保存 0 或 1 值。如果要组合多个 Bool 值,请使用逻辑节点。
整数
Integer 数据类型支持可以是负数、零或正数的整数(不是小数)。小数点后的数字将被忽略;如果涉及分数,这可能会导致结果不准确。您可以将整数数据类型用于所有数字和矢量格式。
将向量转换为整数或实数时,向量的长度由计算SQRT(VxV.x+VyV.y+Vz*Vz)自动计算,其中 Vx、Vy 和 Vz 是 X , Y 和 Z 分量的向量和SQRT是平方根函数。另一方面,当整数或实数转换为向量时,该值用于向量的 X、Y 和 Z 分量。例如,实数12.5转换为向量 ( 12.5;12.5;12.5 )。
实数
与整数不同,实数可以是小数。一个实数的典型例子是 Pi,即 3.141592654。当涉及复杂计算并且您需要准确的结果时,请使用 Real 类型。实数可以转换为向量或整数。将实数转换为整数时,小数点后的所有数字都将丢失(即,实数转换为整数时会向下舍入)。
向量
Vector 数据类型对于在 3D 空间中操作位置和旋转很重要。对象位置、HPB 角度、颜色和点坐标都存储为矢量。这些值一一存储在向量中。例如,位置按顺序(X 位置;Y 位置;Z 位置)存储,旋转按顺序(H 角;P 角;B 角)存储。在 Cinema 4D 中,矢量始终具有三个分量。如果将向量转换为整数,则转换向量的长度而不是单个分量。您还可以将向量与矩阵一起使用。
普通的
归一化向量是方向相同但长度为 1 的向量。
矩阵
矩阵是一组向量,例如对象的全局矩阵,其中包含对象的位置向量和每个对象轴的三个向量。轴向量不仅表示对象的方向,还表示其比例(比例由每个轴向量的长度定义)。因此,全局矩阵使您可以访问对象的位置、比例和旋转。
这四个向量存储在全局矩阵的以下寄存器中: V0 为位置向量(称为偏移向量);V1(X轴);V2(Y 轴)和 V3(Z 轴)。使用这些寄存器,您可以读取或覆盖任何向量,例如对象 Y 轴的 V2。
时间
Time 数据类型使您可以访问动画的当前时间。请记住,此值受帧速率的影响。例如,如果速率为每秒 25 帧,则第 24 帧的时间值正好是一秒。Time 数据类型对于控制动态过程特别有用,因为它使您能够将动画的进度考虑在内。例如,您可以让一个球每秒反弹一次,或者让一个对象在特定时间段内跟随另一个对象。另请参阅上面的日期/时间。
String
String 数据类型用于文本和字符串。字符串可以包含字母、数字和特殊字符。例如,您可以使用 String 数据类型来允许用户在文本框中输入名称。此外,XPresso 连线能够自动将字符串中的数字序列转换为向量、矩阵或其他数字格式。例如,您可以将字符串12;4;5传递给节点而不是向量 ( 12;4;5 )。
Object
Object 类型是 Link 的子类型,仅用于对象数据。除其他外,此数据类型使您可以访问对象的全局和局部矩阵。另请参见上面的链接。
Gradient
梯度数据类型由大量表示梯度的值组成。它不能转换为其他数据类型。(虽然可以将单个颜色转换为矢量,但无法指定颜色在渐变中的位置以便访问它)。
包括/排除
使用 Include 和 Exclude 列表,可以将灯光限制在特定对象上。Include 和 Exclude 列表包含对象列表。由于这是专门为与光源一起使用而设计的,因此无法进行转换。改为使用对象或灯来读取标签、材料或对象,例如,在用户数据字段中。
优先事项
Priority 数据类型包含 XPriority 及其数值,以及有关评估顺序的详细信息。该数据类型用于标签的优先级端口。
Font 数据类型
Font 数据类型存储所选字体的信息,包括是否应将其用作 TrueType 或 PostScript 字体。例如,您可以使用 Font 数据类型来改变文本样条曲线的外观。Font 数据类型不能转换为其他类型。
Date/Time
与 Time 数据类型相比,Date/Time 查询计算机的当前系统时间(格式为hours:minutes:seconds)和系统日期。例如,您可以创建一个 Sun 表达式来设置灯光的位置和颜色以匹配当前的实时时间。
Spline
使用 Spline 数据类型,您可以使用图形在属性管理器中绘制样条曲线。该图沿水平轴从变量极值 Min X 到 Max X 以及沿垂直轴从 Min Y 到 Max Y 运行。
The XPresso Pool
XPresso 池提供了一种将节点添加到 XPresso 编辑器的快速方法。XPresso 池包含所有 Cinema 4D 节点,您可以向其中添加自己的池,其中每个节点都经过配置以满足您的需求。例如,假设您经常需要为整数减法创建一个数学节点(数据类型设置为整数,函数设置为减法)。无需在每次需要创建此类节点时手动更改这些参数,您可以将配置的节点添加到 XPressoPool。下次您需要该节点时,您可以将其从池中拖放到已设置为整数减法的 XPresso 编辑器中。
单击放大镜图标将打开一个文本行过滤器,可用于仅显示您正在搜索的节点而不显示所有子目录。
这是一个实时工作的显示过滤器。您所要做的就是输入与您要显示的节点相关的文本。将显示部分或全部包含此文本的每个元素。大小写不影响结果。单击X按钮将清除文本字段。
要打开 XPresso 池:
XPresso 池默认集成到 XPresso 编辑器中。但是,如果您取消停靠并关闭池,您可以通过在 XPresso 编辑器中选择自定义/XPresso 池来重新打开它。
创建节点:
将要创建的节点从 XPresso 池拖放到 XPresso 编辑器中。
要打开和关闭层次结构:
单击元素名称左侧的图标。
创建自己的节点池:
在 XPresso 池中,通过选择 Edit / Create Pool 创建一个新池。(您不能将自己的节点添加到原始池中。)
配置要添加到池中的节点。
将要添加到池中的节点从 XPresso 编辑器拖放到新的 XPresso 池中。
创建池
选择此命令可为您自己的节点配置创建一个新池。使用打开的对话框定义池的保存路径(注意,组保存到用户文件夹内的Library / xnode文件夹);该池会自动保存,并且在您每次重新启动 Cinema 4D 时都可用。要将您自己的节点配置添加到池中,首先在 XPresso 编辑器中根据需要配置节点,然后将节点拖放到池中
负载池
此命令允许您加载池文件。
移除预设
您不能从原始池中删除节点。
从池中删除选定的预设或文件夹。
重命名预设
重命名预设。例如,如果您为整数减法配置了一个数学节点,您可能希望将其重命名为Subtract Int。
创建文件夹
创建一个新文件夹。这使您能够将自己的池安排到文件夹中以便更好地组织。将要放置在文件夹中的节点从 XPresso 池或 XPresso 编辑器拖放到文件夹中。