105 lines
3.4 KiB
ReStructuredText
105 lines
3.4 KiB
ReStructuredText
.. index:: Geometry Nodes; Accumulate Field


.. _bpy.types.GeometryNodeAccumulateField:




*********************


Accumulate Field Node


*********************




.. figure:: /images/nodetypes_GeometryNodeAccumulateField.webp


:align: right


:alt: Accumulate Field Node.




The *Accumulate Field* node counts a running total of its input values, in the order defined


by the geometry's :doc:`indices </modeling/geometry_nodes/geometry/read/input_index>`. The node's essential


operation is just addition, but instead of only outputting the final total, it outputs the current


value at every element.






Inputs


======




Value


The values to be accumulated.




.. warning::




When accumulating integer values, be careful to make sure that there are not


too many large values. The maximum integer that Blender stores internally is


around 2 billion. After that, values may wrap around and become negative.


See `wikipedia <https://en.wikipedia.org/wiki/Integer_%28computer_science%29>`__


for more information.




Group Index


An index used to group values together for multiple separate accumulations.


This can be thought of as a choice of the "bin" in which to place each value.


This input has no effect when it is only a single value.






Properties


==========




Data Type


:Float: The node will accumulate a *Float* field.


:Integer: The node will accumulate an *Integer* field.


:Vector: The node will accumulate a *Vector* field.




Domain


The :ref:`attribute domain <attributedomains>` used for accumulation


and for evaluation of the *Value* input.






Output


======




Leading


The running total of values in the corresponding group, starting at the first value.




Trailing


The running total of values in the corresponding group, starting at zero.




Total


The total of all of the values in the corresponding group






Examples


========




Table







++++++


 Value  Group Index  Leading  Trailing  Total 


+=======+=============+=========+==========+=======+


 1  7  1  0  6 


++++++


 3  7  4  1  6 


++++++


 2  7  6  4  6 


++++++


 1  3  1  0  3 


++++++


 0  3  1  1  3 


++++++


 2  3  3  1  3 


++++++




A few examples of input values and the node's results. One important takeaway from this table


is that the specific values for the *Group Input* does not matter; it only matters that the


values are shared between elements.




Stacking Boxes







.. figure:: /images/modeling_geometrynodes_utilities_accumulatefield_boxstack.png


:align: center




Here, the node is used in combination with the :doc:`/modeling/geometry_nodes/utilities/random_value`


to create a stack of randomly scaled boxes. The *Group Index* input is not used, because all boxes


are meant to be in the same stack.




.. figure:: /images/modeling_geometrynodes_utilities_accumulatefield_boxstack2.png


:align: center




A slightly more complicated version of the previous example,


using the *Group Index* input to create three separate stacks.
