场#
Fundamentally, a field is a function: a set of instructions that can transform an arbitrary number of inputs into a single output. A field's result can then be calculated many times with different input data. They are used all over geometry nodes to allow calculations that have different results for every element (mesh vertices, faces, etc.).
For example, in the figure above, the field connected to the "Set Position" node depends on two inputs, Position and Index, and transforms them into a vector using a single instruction.
场可视化#
接口形状用于传达哪些接口是场,哪些是常规数据。有三种可能的接口形状,每种形状都可视化其"场状态" :
- 圆形:
接口需要单个实际值,不接受场输入。对于输出接口,这意味着节点总是输出单项值。
- 菱形:
接口可以接受场输入,也可以输出场。恒定的单项值可以连接到这些接口,但每个元素的输出通常不会变化。
- 带圆点的菱形:
接口可以是一个场,但它目前是一个单项值。这很有用,因为它允许跟踪计算单项值的位置,而不是具有许多不同结果的场。这也意味着 插槽检视 将显示值而不是场输入名称。
Tip
Often it is desired to extract a single value from a field. While it doesn't make sense conceptually to simply change a field into a single value, the 采样编号 or the 属性统计 can be used to retrieve a single value from a field evaluated on a geometry.
当在支持场的两个节点接口之间进行连接时,节点连接将被绘制为虚线。如果错误地将非场接口连接到场接口,则连接将被绘制为红色实线,表明存在错误。
节点类型#
节点可分为两类:通常通过几何形状的数据流节点和在每个元素的数据上运行的场节点。场节点可以是将几何数据带入节点树中的输入节点,或在该数据上操作的函数节点。
流#
具有几何输入和几何输出的节点几乎总是数据流节点。这意味着他们实际上更改了将从几何节点修改器输出的几何数据。
节点#
具有菱形接口输入和输出的节点是场节点,并且类似于将由数据流节点评估的指令。函数节点的示例包括数学节点和更复杂的节点,如 /modeling/geometry_nodes/geometry/geometry_proximity。
输入节点#
输入节点为场评估过程提供数据。它们本身并不意味着什么;它们必须在数据流节点(几何体)的上下文中进行评估,才能实际输出值。输入节点的示例包括 位置 和 ID 等内置属性输入节点,以及 端点选择 等选择类节点。
场上下文#
所有场节点在其所连接的数据流节点的上下文中工作。上下文通常由几何组件类型和属性域组成,因此它确定从输入节点检索哪些数据。
一个常见的误解是,在多个地方使用的相同场节点树将输出相同的数据。这并不一定是真实的,因为将针对每个数据流节点评估场节点树,从而可能从不同或改变的几何体检索数据。
Here, the Set Position node's input field is evaluated once. To evaluate the field, the node traverses backwards to retrieve the inputs from the field input nodes.
当添加第二个设置位置节点时,同一个场节点树被评估两次,每个数据流节点一次。在第二个设置位置节点处,结果将不同,因为其几何输入将已经具有与第一个节点改变的位置。
但是,即使在更改几何形状后,通常也需要使用相同的场值。 捕捉属性 评估一个场,将结果复制到几何体上的 匿名属性。
在这里,捕捉属性节点存储初始位置的副本。请注意,评估捕捉属性节点的场输入是一个完全不同的步骤。之后,设置位置节点的输入场不会使用实际位置,而是使用其匿名属性副本。