Campos#
Fundamentalmente un campo es una función: un conjunto de instrucciones capaces de transformar una cantidad arbitraria de entradas en una única salida. El resultado de un campo podrá luego ser calculado muchas veces con diferentes datos de entrada. Son usados en los nodos de geometría para permitir cálculos que produzcan resultados distintos para cada elemento (por ej: los vértices, caras, etc. de una malla).
Por ejemplo, en la figura de arriba, el campo conectado al nodo «Definir posición» depende de dos entradas, Posición e Identificador y las transformará en un vector usando una única instrucción.
Visualización de campos#
La forma del conector será usada para indicar qué conectores corresponden a campos y cuáles a datos regulares. Existen tres formas posibles de conector, cada una de ellas ayudando a visualizar un «estado de campo» correspondiente:
- Círculo:
El conector espera un valor real individual, no será capaz de aceptar una entrada de campo. Para los conectores de salida, esto significará que el nodo siempre producirá un valor individual.
- Rombo:
El conector podrá aceptar como entrada un campo o producirá uno como salida. Un valor individual constante podrá ser conectado a estos conectores, pero en ese caso probablemente la salida no varíe por elemento.
- Rombo con punto:
El conector podrá ser un campo, pero actualmente es un valor individual. Esto resulta útil dado que permitirá rastrear dónde se están calculando valores individuales, en vez de un campo con resultados distintos. También significará que durante una Inspección de conectores se mostrará el valor, en vez de los nombres de entrada del campo.
Truco
A menudo podrá desearse extraer un valor individual desde un campo. Si bien desde un punto de vista conceptual no tendría sentido simplemente transformar un campo en un valor individual, los nodos Nodo Muestrear identificador o Nodo Estadísticas de atributo podrán ser usados para obtener un valor individual para un campo evaluado en una geometría.
Cuando se realice una conexión entre conectores de dos nodos que soporten campos, la conexión será dibujada en forma de línea punteada. En caso de cometer el error de conectar un conector que no sea de campo con un conector de campo, la conexión será dibujada como una línea roja, para indicar la existencia de un error.
Tipos de nodo#
Los nodos pueden ser separados en dos categorías: nodos de flujo de datos (que normalmente pasarán geometría hacia otros nodos) y nodos de campo (que operarán sobre cada uno de los elementos en esos datos). Los nodos de campo podrán ser nodos de entrada (que proporcionen datos al árbol de nodos) o nodos de función (que operen sobre esos datos).
Nodos de flujo de datos#
Los nodos con una entrada de geometría y una salida de geometría casi siempre serán nodos de flujo de datos. Lo cual quiere decir que modificarán los datos de la geometría que será producida por el modificador Nodos de geometría.
Nodos de función#
Los nodos que contengan conectores de entrada y salida en forma de rombo serán nodos que usen campos y contendrán las instrucciones a ser evaluadas por los nodos de flujo de datos. Ejemplos de nodos de función son el nodo Operar y otros más complejos como el Nodo Proximidad a geometría.
Nodos de entrada#
Los nodos de Entrada proporcionarán datos usados durante el proceso de evaluación del campo. Por sí mismos, no tendrán ningún significado específico; deberán ser evaluados dentro del contexto de un nodo de flujo de datos (de geometría) para producir un valor. Ejemplos de nodos de Entrada son los nodos de entrada de atributos integrados como Posición e ID, pero también los nodos de selección como el Selección de extremos.
Las entradas de los campos también podrán provenir de otros nodos que procesen geometría como el Nodo Distribuir puntos en caras, en forma de Atributos anónimos.
Contexto de un campo#
Todos los nodos de campo trabajarán en el contexto del nodo de flujo de datos al que se encuentren conectados. El contexto consistirá usualmente de un tipo de componente de una geometría (vértices, caras, etc.) y un dominio de atributo, de manera de determinar qué datos serán obtenidos desde los nodos de entrada.
Un malentendido común es pensar que el mismo árbol de nodos de campo usado en varios lugares distintos generará los mismos datos de salida. Esto no será necesariamente así, debido a que el árbol de nodos de campo será evaluado en forma independiente para cada nodo de flujo de datos, potencialmente obteniendo datos desde una geometría distinta o modificada.
Aquí, el campo de entrada del nodo Definir posición es evaluado una vez. Para evaluar el campo, se realizará un recorrido en sentido inverso hasta obtener el valor de las entradas desde los nodos de entrada del árbol de campo.
Al agregar un segundo nodo Definir posición, el mismo árbol de nodos de campo será evaluado dos veces, una para cada nodo de flujo de datos. En el segundo nodo Definir posición, el resultado será distinto, dado que su entrada de geometría ya habrá cambiado de posición, con respecto a la entrada del primer nodo.
Sin embargo, en algunas ocasiones será necesario utilizar los mismos valores de campo, aún luego de que la geometría hubiera cambiado. El Nodo Capturar atributo evaluará un campo, copiando el resultado a un atributo anónimo en la geometría.
Aquí, un nodo Capturar atributo almacenará una copia de la posición inicial. Nótese que la evaluación de la entrada de campo del nodo Capturar atributo es un paso completamente diferente. Más adelante, las entradas de campo de los nodos Definir posición no usarán la posición real, sino la versión copiada en el atributo anónimo.