pf.nodes

class procfunc.nodes.ProcNode[source]

Bases: Generic[T]

__init__(node, known_value_type=None)[source]
Parameters:
  • node (Node)

  • known_value_type (type | None)

astype(dtype)[source]
Parameters:

dtype (type)

Return type:

ProcNode

classmethod from_nodetype(node_type, inputs, attrs)[source]
Parameters:
Return type:

ProcNode

item()[source]
Return type:

Node

property x: ProcNode[float]
property y: ProcNode[float]
property z: ProcNode[float]

Supported special methods: __add__, __mod__, __mul__, __neg__, __pow__, __radd__, __req__, __rge__, __rgt__, __rle__, __rlt__, __rmod__, __rmul__, __rne__, __rpow__, __rsub__, __rtruediv__, __sub__, __truediv__

class procfunc.nodes.Shader[source]

Bases: object

Used only for type-annotating nodes as returning a shader.

Anythnig that would be a green socket in a SHADER nodegraph should be ProcNode[Shader]

class procfunc.nodes.NodeDataType[source]

Bases: Enum

INT = 'INT'
FLOAT = 'FLOAT'
RGBA = 'RGBA'
FLOAT_VECTOR = 'FLOAT_VECTOR'
FLOAT_VECTOR_2D = 'FLOAT2'
ROTATION = 'ROTATION'
STRING = 'STRING'
BOOLEAN = 'BOOLEAN'
FLOAT_MATRIX = 'FLOAT_MATRIX'
OBJECT = 'OBJECT'
GEOMETRY = 'GEOMETRY'
SHADER = 'SHADER'
COLLECTION = 'COLLECTION'
MATERIAL = 'MATERIAL'
IMAGE = 'IMAGE'
classmethod from_str(s)[source]
Parameters:

s (str)

Return type:

NodeDataType

Supported special methods: __contains__, __getitem__, __iter__, __len__

class procfunc.nodes.NodeGroupType[source]

Bases: Enum

GEOMETRY = 'GeometryNodeTree'
SHADER = 'ShaderNodeTree'
COMPOSITOR = 'CompositorNodeTree'
TEXTURE = 'TextureNodeTree'

Supported special methods: __contains__, __getitem__, __iter__, __len__

class procfunc.nodes.SocketType[source]

Bases: Enum

FLOAT = 'NodeSocketFloat'
INT = 'NodeSocketInt'
VECTOR = 'NodeSocketVector'
ROTATION = 'NodeSocketRotation'
COLOR = 'NodeSocketColor'
BOOLEAN = 'NodeSocketBool'
STRING = 'NodeSocketString'
GEOMETRY = 'NodeSocketGeometry'
SHADER = 'NodeSocketShader'
OBJECT = 'NodeSocketObject'
COLLECTION = 'NodeSocketCollection'
TEXTURE = 'NodeSocketTexture'
MATERIAL = 'NodeSocketMaterial'
MATRIX = 'NodeSocketMatrix'
IMAGE = 'NodeSocketImage'

Supported special methods: __contains__, __getitem__, __iter__, __len__

procfunc.nodes.as_nodegroup(graph, node_tree_type)[source]
Parameters:
Return type:

NodeTree

procfunc.nodes.to_aliases(geometry)[source]

Convert instanced geometry into aliases - separate objects sharing the same mesh data.

Uses depsgraph to extract instance transforms and creates one bpy.data.object per instance. All aliases point directly to the original mesh data from the scene - no copying occurs. Each alias has its own transform (position, rotation, scale) but shares mesh data.

Note: Requires geometry nodes that use actual bpy.data.collections with real objects (via collection_info node), not just joined geometry. The instances must be visible in the viewport (show_viewport=True) to be detected by the depsgraph.

Parameters:

geometry (ProcNode[MeshObject]) – node producing instanced geometry (e.g., from instance_on_points)

Returns:

list of MeshObject, one per instance, with each instance pointing to the original mesh data from the scene

Return type:

list[MeshObject]

procfunc.nodes.to_compositor(results)[source]
Parameters:

results (dict[str, ProcNode])

procfunc.nodes.to_curve_object(geometry)[source]

WARNING: currently discards any bezier config or knots, only extracts the points.Any

TODO: Need a better geonodes -> curve op from blender, or need to engineer this in via attribute extraction.

Parameters:

geometry (ProcNode[CurveObject])

Return type:

CurveObject

procfunc.nodes.to_environment(surface=None, volume=None)[source]
Parameters:
Return type:

World

procfunc.nodes.to_light(light, surface)[source]

Apply a shader node graph to a light’s internal node tree.

Parameters:
Return type:

LightObject

procfunc.nodes.to_mesh_object(geometry, _skip_apply=False)[source]
Parameters:
Return type:

MeshObject

procfunc.nodes.to_mesh_object_with_attributes(geometry, attributes=None)[source]
Parameters:
Return type:

tuple[MeshObject, dict[str, Any]]

procfunc.nodes.to_objects_multi(geometries, attributes=None)[source]

Convert a nodegroup which has multiple output geometries into multiple realized objects.

If the objects should have any attributes, provide node definitions for them in the ‘attributes’ argument.

Parameters:
  • geometries (dict[str, ProcNode[MeshObject]]) – named output geometry nodes to be converted into objects

  • attributes (dict[str, dict[str, ProcNode[Vector | Color | float | int | str | bool | Matrix | Quaternion]]] | None) – named data attributes which should be annotated on those objects. keys must be a subset of the keys of ‘geometries’

  • input_obj – optional input object to use for the geometry nodegroups

Returns:

dict of {output_key: object}. output keys are the same as the keys of ‘geometries’

Return type:

  • result_objects

procfunc.nodes.node_function(func)[source]
Parameters:

func (Callable)

procfunc.nodes.function_to_compute_graph(func)[source]

Build the ComputeGraph for a node-building callable.

Accepts either a plain callable that builds ProcNodes or a @node_function-decorated function (whose original is recovered via __wrapped__). The result can be passed to as_nodegroup.

Parameters:

func (Callable)

Return type:

ComputeGraph

pf.nodes.color

procfunc.nodes.color.mix_rgb(factor, a, b, blend_type='MIX', clamp_result=False, clamp_factor=True)[source]

Uses a Mix Node with datatype Color

NOTE: separated from float/vector mix() due to extra arguments

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/color/mix.html

Parameters:
  • factor (ProcNode[float] | float)

  • a (ProcNode[Color] | Color)

  • b (ProcNode[Color] | Color)

  • blend_type (Literal['MIX', 'DARKEN', 'MULTIPLY', 'BURN', 'LIGHTEN', 'SCREEN', 'DODGE', 'ADD', 'OVERLAY', 'SOFT_LIGHT', 'LINEAR_LIGHT', 'DIFFERENCE', 'EXCLUSION', 'SUBTRACT', 'DIVIDE', 'HUE', 'SATURATION', 'COLOR', 'VALUE'])

  • clamp_result (bool)

  • clamp_factor (bool)

Return type:

ProcNode[Color]

procfunc.nodes.color.rgb_curve(fac, color, curves=None)[source]

Uses a RGBCurve Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/color/rgb_curves.html

Parameters:
Return type:

ProcNode

procfunc.nodes.color.combine_rgb(red=0.0, green=0.0, blue=0.0)[source]

Uses a CombineColor Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/converter/combine_color.html

Parameters:
Return type:

ProcNode[Color]

procfunc.nodes.color.combine_hsv(hue=0.0, saturation=0.0, value=0.0)[source]

Uses a CombineColor Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/converter/combine_color.html

Parameters:
Return type:

ProcNode[Color]

procfunc.nodes.color.combine_hsl(hue=0.0, saturation=0.0, lightness=0.0)[source]

Uses a CombineHSV Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/converter/combine_color.html

Parameters:
Return type:

ProcNode[Color]

class procfunc.nodes.color.SeparateRgbResult[source]

Bases: NamedTuple

SeparateRgbResult(red, green, blue, alpha)

red: ProcNode[float]

Alias for field number 0

green: ProcNode[float]

Alias for field number 1

blue: ProcNode[float]

Alias for field number 2

alpha: ProcNode[float]

Alias for field number 3

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.color.separate_rgb(color=(0.8, 0.8, 0.8, 1))[source]

Uses a SeparateColor Shader Node in RGB mode.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/converter/separate_color.html

Parameters:

color (ProcNode[Color] | Color)

Return type:

SeparateRgbResult

class procfunc.nodes.color.SeparateHsvResult[source]

Bases: NamedTuple

SeparateHsvResult(hue, saturation, value, alpha)

hue: ProcNode[float]

Alias for field number 0

saturation: ProcNode[float]

Alias for field number 1

value: ProcNode[float]

Alias for field number 2

alpha: ProcNode[float]

Alias for field number 3

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.color.separate_hsv(color=(0.8, 0.8, 0.8, 1))[source]

Uses a SeparateColor Shader Node in HSV mode.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/converter/separate_color.html

Parameters:

color (ProcNode[Color] | Color)

Return type:

SeparateHsvResult

class procfunc.nodes.color.SeparateHslResult[source]

Bases: NamedTuple

SeparateHslResult(hue, saturation, lightness, alpha)

hue: ProcNode[float]

Alias for field number 0

saturation: ProcNode[float]

Alias for field number 1

lightness: ProcNode[float]

Alias for field number 2

alpha: ProcNode[float]

Alias for field number 3

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.color.separate_hsl(color=(0.8, 0.8, 0.8, 1))[source]

Uses a SeparateColor Shader Node in HSL mode.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/converter/separate_color.html

Parameters:

color (ProcNode[Color] | Color)

Return type:

SeparateHslResult

class procfunc.nodes.color.ColorRampResult[source]

Bases: NamedTuple

ColorRampResult(color, alpha)

color: ProcNode[Color]

Alias for field number 0

alpha: ProcNode[float]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.color.color_ramp(fac=0.5, points=None, mode='RGB', interpolation='LINEAR', hue_interpolation='NEAR')[source]

Uses a ValToRGB (ColorRamp) Shader Node with points support.

hue_interpolation only applies to mode=”HSV” / “HSL”; passing a non-default value with mode=”RGB” raises rather than being silently unused.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/converter/color_ramp.html

Parameters:
Return type:

ColorRampResult

procfunc.nodes.color.blackbody(temperature=1500.0)[source]

Uses a Blackbody Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/converter/blackbody.html

Parameters:

temperature (ProcNode[float] | float)

Return type:

ProcNode[Color]

procfunc.nodes.color.bright_contrast(color=(1, 1, 1, 1), bright=0.0, contrast=0.0)[source]

Uses a BrightContrast Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/color/bright_contrast.html

Parameters:
Return type:

ProcNode[Color]

procfunc.nodes.color.gamma(color=(1, 1, 1, 1), gamma=1.0)[source]

Uses a Gamma Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/color/gamma.html

Parameters:
Return type:

ProcNode[Color]

procfunc.nodes.color.hue_saturation(color, fac, hue=0.5, saturation=1.0, value=1.0)[source]

Uses a HueSaturation Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/color/hue_saturation.html

Parameters:
Return type:

ProcNode[Color]

procfunc.nodes.color.rgb_to_bw(color=(0.5, 0.5, 0.5, 1))[source]

Uses a RGBToBW Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/converter/rgb_to_bw.html

Parameters:

color (ProcNode[Color] | Color)

Return type:

ProcNode[float]

pf.nodes.compositor

class procfunc.nodes.compositor.RenderLayersResult[source]

Bases: object

__init__(base)[source]
Parameters:

base (ProcNode)

Supported special methods: __getattr__

procfunc.nodes.compositor.render_layers()[source]

Uses a RenderLayers Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/input/scene/render_layers.html

Return type:

RenderLayersResult

procfunc.nodes.compositor.alpha_over(fac=1.0, a=(1, 1, 1, 1), b=(1, 1, 1, 1), premul=0.0, use_premultiply=False)[source]

Uses a AlphaOver Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/color/mix/alpha_over.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.anti_aliasing(image=(1, 1, 1, 1), contrast_limit=0.2, corner_rounding=0.25, threshold=1.0)[source]

Uses a AntiAliasing Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/filter/anti_aliasing.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.bilateral_blur(image=(1, 1, 1, 1), determinator=(1, 1, 1, 1), iterations=1, sigma_color=0.3, sigma_space=5.0)[source]

Uses a Bilateralblur Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/filter/blur/bilateral_blur.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.blur(image=(1, 1, 1, 1), size=1.0, aspect_correction='NONE', factor=0.0, factor_x=0.0, factor_y=0.0, filter_type='GAUSS', size_x=0, size_y=0, use_bokeh=False, use_extended_bounds=False, use_gamma_correction=False, use_relative=False, use_variable_size=False)[source]

Uses a Blur Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/filter/blur/blur.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.bokeh_blur(image=(0.8, 0.8, 0.8, 1), bokeh=(1, 1, 1, 1), size=1.0, bounding_box=1.0, blur_max=16.0, use_extended_bounds=False, use_variable_size=False)[source]

Uses a BokehBlur Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/filter/blur/bokeh_blur.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.bokeh_image(angle=0.0, catadioptric=0.0, flaps=5, rounding=0.0, shift=0.0)[source]

Uses a BokehImage Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/input/bokeh_image.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.box_mask(mask=0.0, value=1.0, mask_height=0.1, mask_type='ADD', mask_width=0.2, rotation=0.0, x=0.5, y=0.5)[source]

Uses a BoxMask Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/mask/box_mask.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.bright_contrast(image=(1, 1, 1, 1), bright=0.0, contrast=0.0, use_premultiply=True)[source]

Uses a BrightContrast Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/color/adjust/bright_contrast.html

Parameters:
Return type:

ProcNode

class procfunc.nodes.compositor.MatteResult[source]

Bases: NamedTuple

MatteResult(image, matte)

image: ProcNode[Color]

Alias for field number 0

matte: ProcNode[float]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.compositor.channel_matte(image=(1, 1, 1, 1), color_space='RGB', limit_channel='R', limit_max=1.0, limit_method='MAX', limit_min=0.0, matte_channel='G')[source]

Uses a ChannelMatte Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/keying/channel_key.html

Parameters:
  • image (ProcNode[Color] | Color)

  • color_space (Literal['RGB', 'HSV', 'YUV', 'YCC'])

  • limit_channel (Literal['R', 'G', 'B'])

  • limit_max (float)

  • limit_method (Literal['SINGLE', 'MAX'])

  • limit_min (float)

  • matte_channel (Literal['R', 'G', 'B'])

Return type:

MatteResult

procfunc.nodes.compositor.chroma_matte(image=(1, 1, 1, 1), key_color=(1, 1, 1, 1), gain=1.0, lift=0.0, shadow_adjust=0.0, threshold=0.174533, tolerance=0.523599)[source]

Uses a ChromaMatte Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/keying/chroma_key.html

Parameters:
Return type:

MatteResult

procfunc.nodes.compositor.color_balance(fac=1.0, image=(1, 1, 1, 1), correction_method='LIFT_GAMMA_GAIN', gain=(1.0, 1.0, 1.0), gamma=(1.0, 1.0, 1.0), lift=(1.0, 1.0, 1.0), offset=(0.0, 0.0, 0.0), offset_basis=0.0, power=(1.0, 1.0, 1.0), slope=(1.0, 1.0, 1.0))[source]

Uses a ColorBalance Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/color/adjust/color_balance.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.color_correction(image=(1, 1, 1, 1), mask=1.0, blue=True, green=True, highlights_contrast=1.0, highlights_gain=1.0, highlights_gamma=1.0, highlights_lift=0.0, highlights_saturation=1.0, master_contrast=1.0, master_gain=1.0, master_gamma=1.0, master_lift=0.0, master_saturation=1.0, midtones_contrast=1.0, midtones_end=0.7, midtones_gain=1.0, midtones_gamma=1.0, midtones_lift=0.0, midtones_saturation=1.0, midtones_start=0.2, red=True, shadows_contrast=1.0, shadows_gain=1.0, shadows_gamma=1.0, shadows_lift=0.0, shadows_saturation=1.0)[source]

Uses a ColorCorrection Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/color/adjust/color_correction.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.color_matte(image=(1, 1, 1, 1), key_color=(1, 1, 1, 1), color_hue=0.01, color_saturation=0.1, color_value=0.1)[source]

Uses a ColorMatte Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/keying/color_key.html

Parameters:
Return type:

MatteResult

procfunc.nodes.compositor.color_spill(image=(1, 1, 1, 1), fac=1.0, channel='G', limit_channel='R', limit_method='SIMPLE', ratio=1.0, unspill_blue=0.0, unspill_green=0.0, unspill_red=0.0, use_unspill=False)[source]

Uses a ColorSpill Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/keying/color_spill.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.combine_ycc(y=0.0, cb=0.5, cr=0.5, alpha=1.0, ycc_mode='ITUBT709')[source]

Uses a CombineColor Compositor Node in YCC mode.

See: https://docs.blender.org/manual/en/4.2/compositing/types/color/mix/combine_color.html

Parameters:
Return type:

ProcNode[Color]

procfunc.nodes.compositor.combine_yuv(y=0.0, u=0.0, v=0.0, alpha=1.0)[source]

Uses a CombineColor Compositor Node in YUV mode.

See: https://docs.blender.org/manual/en/4.2/compositing/types/color/mix/combine_color.html

Parameters:
Return type:

ProcNode[Color]

procfunc.nodes.compositor.composite(image=(0, 0, 0, 1), alpha=1.0, use_alpha=True)[source]

Uses a Composite Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/output/composite.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.convert_color_space(image=(1, 1, 1, 1), from_color_space='Linear Rec.709', to_color_space='Linear Rec.709')[source]

Uses a ConvertColorSpace Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/color/convert_colorspace.html

Parameters:
  • image (ProcNode[Color] | Color)

  • from_color_space (Literal['ACES2065-1', 'ACEScg', 'AgX Base Display P3', 'AgX Base Rec.1886', 'AgX Base Rec.2020', 'AgX Base sRGB', 'AgX Log', 'Display P3', 'Filmic Log', 'Filmic sRGB', 'Khronos PBR Neutral sRGB', 'Linear CIE-XYZ D65', 'Linear CIE-XYZ E', 'Linear DCI-P3 D65', 'Linear FilmLight E-Gamut', 'Linear Rec.2020', 'Linear Rec.709', 'Non-Color', 'Rec.1886', 'Rec.2020', 'sRGB'])

  • to_color_space (Literal['ACES2065-1', 'ACEScg', 'AgX Base Display P3', 'AgX Base Rec.1886', 'AgX Base Rec.2020', 'AgX Base sRGB', 'AgX Log', 'Display P3', 'Filmic Log', 'Filmic sRGB', 'Khronos PBR Neutral sRGB', 'Linear CIE-XYZ D65', 'Linear CIE-XYZ E', 'Linear DCI-P3 D65', 'Linear FilmLight E-Gamut', 'Linear Rec.2020', 'Linear Rec.709', 'Non-Color', 'Rec.1886', 'Rec.2020', 'sRGB'])

Return type:

ProcNode

class procfunc.nodes.compositor.PlaneResult[source]

Bases: NamedTuple

PlaneResult(image, plane)

image: ProcNode[Color]

Alias for field number 0

plane: ProcNode[Color]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.compositor.corner_pin(image=(1, 1, 1, 1), upper_left=(0, 1, 0), upper_right=(1, 1, 0), lower_left=(0, 0, 0), lower_right=(1, 0, 0))[source]

Uses a CornerPin Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/transform/corner_pin.html

Parameters:
Return type:

PlaneResult

procfunc.nodes.compositor.crop(image=(1, 1, 1, 1), max_x=0, max_y=0, min_x=0, min_y=0, rel_max_x=0.0, rel_max_y=0.0, rel_min_x=0.0, rel_min_y=0.0, relative=False, use_crop_size=False)[source]

Uses a Crop Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/transform/crop.html

Parameters:
Return type:

ProcNode

class procfunc.nodes.compositor.CryptomatteResult[source]

Bases: NamedTuple

CryptomatteResult(image, matte, pick)

image: ProcNode[Color]

Alias for field number 0

matte: ProcNode[float]

Alias for field number 1

pick: ProcNode[Color]

Alias for field number 2

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.compositor.cryptomatte(image=(0, 0, 0, 1), crypto_00=(0, 0, 0, 1), crypto_01=(0, 0, 0, 1), crypto_02=(0, 0, 0, 1), add=(0.0, 0.0, 0.0), matte_id='', remove=(0.0, 0.0, 0.0))[source]

Uses a Cryptomatte Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/mask/cryptomatte.html

Parameters:
Return type:

CryptomatteResult

procfunc.nodes.compositor.defocus(image=(1, 1, 1, 1), z=1.0, angle=0.0, blur_max=16.0, bokeh='CIRCLE', f_stop=128.0, scene=None, threshold=1.0, use_gamma_correction=False, use_preview=True, use_zbuffer=False, z_scale=1.0)[source]

Uses a Defocus Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/filter/blur/defocus.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.denoise(image=(1, 1, 1, 1), normal=(0, 0, 0), albedo=(1, 1, 1, 1), prefilter='ACCURATE', use_hdr=True)[source]

Uses a Denoise Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/filter/denoise.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.despeckle(fac=1.0, image=(1, 1, 1, 1), threshold=0.5, threshold_neighbor=0.5)[source]

Uses a Despeckle Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/filter/despeckle.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.diff_matte(a=(1, 1, 1, 1), b=(1, 1, 1, 1), falloff=0.1, tolerance=0.1)[source]

Uses a DiffMatte Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/keying/difference_key.html

Parameters:
Return type:

MatteResult

procfunc.nodes.compositor.dilate_erode(mask=0.0, distance=0, edge=0.0, falloff='SMOOTH', mode='STEP')[source]

Uses a DilateErode Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/filter/dilate_erode.html

Parameters:
  • mask (ProcNode[float] | float)

  • distance (int)

  • edge (float)

  • falloff (Literal['SMOOTH', 'SPHERE', 'ROOT', 'INVERSE_SQUARE', 'SHARP', 'LINEAR'])

  • mode (Literal['STEP', 'THRESHOLD', 'DISTANCE', 'FEATHER'])

Return type:

ProcNode

procfunc.nodes.compositor.directional_blur(image=(1, 1, 1, 1), angle=0.0, center_x=0.5, center_y=0.5, distance=0.0, iterations=1, spin=0.0, zoom=0.0)[source]

Uses a DBlur Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/filter/blur/directional_blur.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.displace(image=(1, 1, 1, 1), vector=(1, 1, 1), x_scale=0.0, y_scale=0.0)[source]

Uses a Displace Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/transform/displace.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.distance_matte(image=(1, 1, 1, 1), key_color=(1, 1, 1, 1), channel='RGB', falloff=0.1, tolerance=0.1)[source]

Uses a DistanceMatte Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/keying/distance_key.html

Parameters:
Return type:

MatteResult

procfunc.nodes.compositor.double_edge_mask(inner_mask=0.8, outer_mask=0.8, edge_mode='BLEED_OUT', inner_mode='ALL')[source]

Uses a DoubleEdgeMask Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/mask/double_edge_mask.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.ellipse_mask(mask=0.0, value=1.0, mask_height=0.1, mask_type='ADD', mask_width=0.2, rotation=0.0, x=0.5, y=0.5)[source]

Uses a EllipseMask Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/mask/ellipse_mask.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.exposure(image=(1, 1, 1, 1), exposure=0.0)[source]

Uses a Exposure Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/color/adjust/exposure.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.filter(fac=1.0, image=(1, 1, 1, 1), filter_type='SOFTEN')[source]

Uses a Filter Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/filter/filter.html

Parameters:
  • fac (ProcNode[float] | float)

  • image (ProcNode[Color] | Color)

  • filter_type (Literal['SOFTEN', 'SHARPEN', 'SHARPEN_DIAMOND', 'LAPLACE', 'SOBEL', 'PREWITT', 'KIRSCH', 'SHADOW'])

Return type:

ProcNode

procfunc.nodes.compositor.flip(image=(1, 1, 1, 1), axis='X')[source]

Uses a Flip Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/transform/flip.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.gamma(image=(1, 1, 1, 1), gamma=1.0)[source]

Uses a Gamma Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/color/adjust/gamma.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.glare(image=(1, 1, 1, 1), angle_offset=0.0, color_modulation=0.25, fade=0.9, glare_type='STREAKS', iterations=3, mix=0.0, quality='MEDIUM', size=8, streaks=4, threshold=1.0, use_rotate_45=True)[source]

Uses a Glare Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/filter/glare.html

Parameters:
  • image (ProcNode[Color] | Color)

  • angle_offset (float)

  • color_modulation (float)

  • fade (float)

  • glare_type (Literal['BLOOM', 'GHOSTS', 'STREAKS', 'FOG_GLOW', 'SIMPLE_STAR'])

  • iterations (int)

  • mix (float)

  • quality (Literal['HIGH', 'MEDIUM', 'LOW'])

  • size (int)

  • streaks (int)

  • threshold (float)

  • use_rotate_45 (bool)

Return type:

ProcNode

procfunc.nodes.compositor.hue_correct(fac=1.0, image=(1, 1, 1, 1))[source]

Uses a HueCorrect Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/color/adjust/hue_correct.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.id_mask(id_value=1.0, index=0, use_antialiasing=False)[source]

Uses a IDMask Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/mask/id_mask.html

Parameters:
Return type:

ProcNode

class procfunc.nodes.compositor.ImageResult[source]

Bases: NamedTuple

ImageResult(image, alpha)

image: ProcNode[Color]

Alias for field number 0

alpha: ProcNode[float]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.compositor.image(frame_duration=1, frame_offset=0, frame_start=1, image=None, layer=None, view=None, use_auto_refresh=True, use_cyclic=False, use_straight_alpha_output=False)[source]

Uses a Image Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/input/image.html

Parameters:
  • frame_duration (int)

  • frame_offset (int)

  • frame_start (int)

  • image (Any)

  • layer (Literal['PLACEHOLDER'] | None)

  • view (Literal['ALL'] | None)

  • use_auto_refresh (bool)

  • use_cyclic (bool)

  • use_straight_alpha_output (bool)

Return type:

ImageResult

procfunc.nodes.compositor.inpaint(image=(1, 1, 1, 1), distance=0)[source]

Uses a Inpaint Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/filter/inpaint.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.invert(fac=1.0, color=(1, 1, 1, 1), invert_alpha=False, invert_rgb=True)[source]

Uses a Invert Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/color/invert_color.html

Parameters:
Return type:

ProcNode

class procfunc.nodes.compositor.KeyingResult[source]

Bases: NamedTuple

KeyingResult(image, matte, edges)

image: ProcNode[Color]

Alias for field number 0

matte: ProcNode[float]

Alias for field number 1

edges: ProcNode[float]

Alias for field number 2

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.compositor.keying(image=(0.8, 0.8, 0.8, 1), key_color=(1, 1, 1, 1), garbage_matte=0.0, core_matte=0.0, blur_post=0, blur_pre=0, clip_black=0.0, clip_white=1.0, despill_balance=0.5, despill_factor=1.0, dilate_distance=0, edge_kernel_radius=3, edge_kernel_tolerance=0.1, feather_distance=0, feather_falloff='SMOOTH', screen_balance=0.5)[source]

Uses a Keying Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/keying/keying.html

Parameters:
Return type:

KeyingResult

procfunc.nodes.compositor.keying_screen(clip=None, smoothness=0.0, tracking_object='')[source]

Uses a KeyingScreen Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/keying/keying_screen.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.kuwahara(image=(1, 1, 1, 1), size=6.0, eccentricity=1.0, sharpness=0.5, uniformity=4, use_high_precision=False, variation='CLASSIC')[source]

Uses a Kuwahara Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/filter/kuwahara.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.lens_distortion(image=(1, 1, 1, 1), distortion=0.0, dispersion=0.0, use_fit=False, use_jitter=False, use_projector=False)[source]

Uses a Lensdist Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/transform/lens_distortion.html

Parameters:
Return type:

ProcNode

class procfunc.nodes.compositor.LevelsResult[source]

Bases: NamedTuple

LevelsResult(mean, std_dev)

mean: ProcNode[float]

Alias for field number 0

std_dev: ProcNode[float]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.compositor.levels(image=(0, 0, 0, 1), channel='COMBINED_RGB')[source]

Uses a Levels Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/utilities/levels.html

Parameters:
  • image (ProcNode[Color] | Color)

  • channel (Literal['COMBINED_RGB', 'RED', 'GREEN', 'BLUE', 'LUMINANCE'])

Return type:

LevelsResult

procfunc.nodes.compositor.luma_matte(image=(1, 1, 1, 1), limit_max=1.0, limit_min=0.0)[source]

Uses a LumaMatte Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/keying/luminance_key.html

Parameters:
Return type:

MatteResult

procfunc.nodes.compositor.map_uv(image=(1, 1, 1, 1), uv=(1, 0, 0), alpha=0, filter_type='ANISOTROPIC')[source]

Uses a MapUV Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/transform/map_uv.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.map_value(value=1.0, max=(1.0,), min=(0.0,), offset=(0.0,), size=(1.0,), use_max=False, use_min=False)[source]

Uses a MapValue Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/utilities/map_value.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.mask(mask=None, motion_blur_samples=16, motion_blur_shutter=0.5, size_source='SCENE', size_x=256, size_y=256, use_feather=True, use_motion_blur=False)[source]

Uses a Mask Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/input/mask.html

Parameters:
  • mask (Any)

  • motion_blur_samples (int)

  • motion_blur_shutter (float)

  • size_source (Literal['SCENE', 'FIXED', 'FIXED_SCENE'])

  • size_x (int)

  • size_y (int)

  • use_feather (bool)

  • use_motion_blur (bool)

Return type:

ProcNode

procfunc.nodes.compositor.mix_rgb(fac=1.0, a=(1, 1, 1, 1), b=(1, 1, 1, 1), blend_type='MIX', use_alpha=False, clamp_result=False)[source]

Uses a MixRGB Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/color/mix/mix_color.html

Parameters:
  • fac (ProcNode[float] | float)

  • a (ProcNode[Color] | Color)

  • b (ProcNode[Color] | Color)

  • blend_type (Literal['MIX', 'DARKEN', 'MULTIPLY', 'BURN', 'LIGHTEN', 'SCREEN', 'DODGE', 'ADD', 'OVERLAY', 'SOFT_LIGHT', 'LINEAR_LIGHT', 'DIFFERENCE', 'EXCLUSION', 'SUBTRACT', 'DIVIDE', 'HUE', 'SATURATION', 'COLOR', 'VALUE'])

  • use_alpha (bool)

  • clamp_result (bool)

Return type:

ProcNode

class procfunc.nodes.compositor.MovieClipResult[source]

Bases: NamedTuple

MovieClipResult(image, alpha, offset_x, offset_y, scale, angle)

image: ProcNode[Color]

Alias for field number 0

alpha: ProcNode[float]

Alias for field number 1

offset_x: ProcNode[float]

Alias for field number 2

offset_y: ProcNode[float]

Alias for field number 3

scale: ProcNode[float]

Alias for field number 4

angle: ProcNode[float]

Alias for field number 5

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.compositor.movie_clip(clip=None)[source]

Uses a MovieClip Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/input/movie_clip.html

Parameters:

clip (Any)

Return type:

MovieClipResult

procfunc.nodes.compositor.movie_distortion(image=(0.8, 0.8, 0.8, 1), clip=None, distortion_type='UNDISTORT')[source]

Uses a MovieDistortion Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/transform/movie_distortion.html

Parameters:
  • image (ProcNode[Color] | Color)

  • clip (Any)

  • distortion_type (Literal['UNDISTORT', 'DISTORT'])

Return type:

ProcNode

class procfunc.nodes.compositor.NormalResult[source]

Bases: NamedTuple

NormalResult(normal, dot)

normal: ProcNode[Vector]

Alias for field number 0

dot: ProcNode[float]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.compositor.normal(normal=(0, 0, 1))[source]

Uses a Normal Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/vector/normal.html

Parameters:

normal (ProcNode[Vector] | Vector)

Return type:

NormalResult

procfunc.nodes.compositor.normalize(value=1.0)[source]

Uses a Normalize Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/utilities/normalize.html

Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode

procfunc.nodes.compositor.output_file(active_input_index=0, base_path='/tmp/', slot_paths=None, format=None, **kwargs)[source]

Uses a OutputFile Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/output/file_output.html

Parameters:
  • active_input_index (int)

  • base_path (str)

  • slot_paths (dict | None)

  • format (dict | None)

Return type:

ProcNode

procfunc.nodes.compositor.pixelate(color=(0.8, 0.8, 0.8, 1), pixel_size=1)[source]

Uses a Pixelate Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/filter/pixelate.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.plane_track_deform(image=(0.8, 0.8, 0.8, 1), clip=None, motion_blur_samples=16, motion_blur_shutter=0.5, plane_track_name='', tracking_object='', use_motion_blur=False)[source]

Uses a PlaneTrackDeform Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/tracking/plane_track_deform.html

Parameters:
  • image (ProcNode[Color] | Color)

  • clip (Any)

  • motion_blur_samples (int)

  • motion_blur_shutter (float)

  • plane_track_name (str)

  • tracking_object (str)

  • use_motion_blur (bool)

Return type:

PlaneResult

procfunc.nodes.compositor.posterize(image=(1, 1, 1, 1), steps=8.0)[source]

Uses a Posterize Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/filter/posterize.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.premultiply_key(image=(1, 1, 1, 1), mapping='STRAIGHT_TO_PREMUL')[source]

Uses a PremulKey Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/color/alpha_convert.html

Parameters:
  • image (ProcNode[Color] | Color)

  • mapping (Literal['STRAIGHT_TO_PREMUL', 'PREMUL_TO_STRAIGHT'])

Return type:

ProcNode

procfunc.nodes.compositor.rgb_curve(fac, image, black_level=(0, 0, 0, 1), white_level=(1, 1, 1, 1), curves=None)[source]

Uses a CurveRGB Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/color/adjust/rgb_curves.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.rgb_to_bw(image=(0.8, 0.8, 0.8, 1))[source]

Uses a RGBToBW Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/color/rgb_to_bw.html

Parameters:

image (ProcNode[Color] | Color)

Return type:

ProcNode

procfunc.nodes.compositor.rotate(image=(1, 1, 1, 1), degr=0.0, filter_type='BILINEAR')[source]

Uses a Rotate Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/transform/rotate.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.scale(image=(1, 1, 1, 1), x=1.0, y=1.0, frame_method='STRETCH', offset_x=0.0, offset_y=0.0, space='RELATIVE')[source]

Uses a Scale Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/transform/scale.html

Parameters:
Return type:

ProcNode

class procfunc.nodes.compositor.SceneTimeResult[source]

Bases: NamedTuple

SceneTimeResult(seconds, frame)

seconds: ProcNode[float]

Alias for field number 0

frame: ProcNode[float]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.compositor.scene_time()[source]

Uses a SceneTime Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/input/scene/scene_time.html

Return type:

SceneTimeResult

class procfunc.nodes.compositor.SeparateYccResult[source]

Bases: NamedTuple

SeparateYccResult(y, cb, cr, alpha)

y: ProcNode[float]

Alias for field number 0

cb: ProcNode[float]

Alias for field number 1

cr: ProcNode[float]

Alias for field number 2

alpha: ProcNode[float]

Alias for field number 3

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.compositor.separate_ycc(color, ycc_mode='ITUBT709')[source]

Uses a SeparateColor Compositor Node in YCC mode.

See: https://docs.blender.org/manual/en/4.2/compositing/types/color/mix/separate_color.html

Parameters:
  • color (ProcNode[Color] | Color)

  • ycc_mode (Literal['ITUBT601', 'ITUBT709', 'JFIF'])

Return type:

SeparateYccResult

class procfunc.nodes.compositor.SeparateYuvResult[source]

Bases: NamedTuple

SeparateYuvResult(y, u, v, alpha)

y: ProcNode[float]

Alias for field number 0

u: ProcNode[float]

Alias for field number 1

v: ProcNode[float]

Alias for field number 2

alpha: ProcNode[float]

Alias for field number 3

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.compositor.separate_yuv(color)[source]

Uses a SeparateColor Compositor Node in YUV mode.

See: https://docs.blender.org/manual/en/4.2/compositing/types/color/mix/separate_color.html

Parameters:

color (ProcNode[Color] | Color)

Return type:

SeparateYuvResult

procfunc.nodes.compositor.set_alpha(image=(1, 1, 1, 1), alpha=1.0, mode='APPLY')[source]

Uses a SetAlpha Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/color/set_alpha.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.split(a=(0.8, 0.8, 0.8, 1), b=(0.8, 0.8, 0.8, 1), axis='X', factor=50)[source]

Uses a Split Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/utilities/split.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.stabilize(image=(0.8, 0.8, 0.8, 1), clip=None, filter_type='BILINEAR', invert=False)[source]

Uses a Stabilize Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/tracking/stabilize_2d.html

Parameters:
  • image (ProcNode[Color] | Color)

  • clip (Any)

  • filter_type (Literal['NEAREST', 'BILINEAR', 'BICUBIC'])

  • invert (bool)

Return type:

ProcNode

procfunc.nodes.compositor.sun_beams(image=(1, 1, 1, 1), ray_length=0.0, source=(0.5, 0.5))[source]

Uses a SunBeams Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/filter/sun_beams.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.switch(off=(0.8, 0.8, 0.8, 1), on=(0.8, 0.8, 0.8, 1), check=False)[source]

Uses a Switch Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/utilities/switch.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.switch_view(left=(0, 0, 0, 1), right=(0, 0, 0, 1))[source]

Uses a SwitchView Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/utilities/switch.html

Parameters:
Return type:

ProcNode

class procfunc.nodes.compositor.TextureResult[source]

Bases: NamedTuple

TextureResult(value, color)

value: ProcNode[float]

Alias for field number 0

color: ProcNode[Color]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.compositor.texture(offset=(0, 0, 0), scale=(1, 1, 1), node_output=0, texture=None)[source]

Uses a Texture Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/input/texture.html

Parameters:
Return type:

TextureResult

procfunc.nodes.compositor.time(frame_end=250, frame_start=1)[source]

Uses a Time Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/input/scene/scene_time.html

Parameters:
  • frame_end (int)

  • frame_start (int)

Return type:

ProcNode

procfunc.nodes.compositor.tonemap(image=(1, 1, 1, 1), adaptation=1.0, contrast=0.0, correction=0.0, gamma=1.0, intensity=0.0, key=0.18, offset=1.0, tonemap_type='RD_PHOTORECEPTOR')[source]

Uses a Tonemap Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/color/adjust/tone_map.html

Parameters:
Return type:

ProcNode

class procfunc.nodes.compositor.TrackPosResult[source]

Bases: NamedTuple

TrackPosResult(x, y, speed)

x: ProcNode[float]

Alias for field number 0

y: ProcNode[float]

Alias for field number 1

speed: ProcNode[Vector]

Alias for field number 2

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.compositor.track_pos(clip=None, frame_relative=0, position='ABSOLUTE', track_name='', tracking_object='')[source]

Uses a TrackPos Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/tracking/track_position.html

Parameters:
  • clip (Any)

  • frame_relative (int)

  • position (Literal['ABSOLUTE', 'RELATIVE_START', 'RELATIVE_FRAME', 'ABSOLUTE_FRAME'])

  • track_name (str)

  • tracking_object (str)

Return type:

TrackPosResult

procfunc.nodes.compositor.transform(image=(0.8, 0.8, 0.8, 1), x=0.0, y=0.0, angle=0.0, scale=1.0, filter_type='NEAREST')[source]

Uses a Transform Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/transform/transform.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.translate(image=(1, 1, 1, 1), x=0.0, y=0.0, interpolation='Nearest', use_relative=False, wrap_axis='NONE')[source]

Uses a Translate Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/transform/translate.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.vector_blur(image=(1, 1, 1, 1), z=0.0, speed=(0, 0, 0), factor=0.25, samples=32, speed_max=0, speed_min=0, use_curved=False)[source]

Uses a VecBlur Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/filter/blur/vector_blur.html

Parameters:
Return type:

ProcNode

procfunc.nodes.compositor.viewer(image=(0, 0, 0, 1), alpha=1.0, use_alpha=True)[source]

Uses a Viewer Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/output/viewer.html

Parameters:
Return type:

ProcNode

class procfunc.nodes.compositor.ZCombineResult[source]

Bases: NamedTuple

ZCombineResult(image, z)

image: ProcNode[Color]

Alias for field number 0

z: ProcNode[float]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.compositor.z_combine(image_a=(1, 1, 1, 1), z_a=1.0, image_b=(1, 1, 1, 1), z_b=1.0, use_alpha=False, use_antialias_z=True)[source]

Uses a Zcombine Compositor Node.

See: https://docs.blender.org/manual/en/4.2/compositing/types/color/mix/z_combine.html

Parameters:
Return type:

ZCombineResult

pf.nodes.func

procfunc.nodes.func.align_euler_to_vector(factor, vector, rotation=(0, 0, 0), axis='X', pivot_axis='AUTO')[source]

Uses a AlignEulerToVector Function Node.

See: http://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/rotation/align_euler_to_vector.html

Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.func.align_rotation_to_vector(factor, vector, rotation=(0, 0, 0), axis='Z', pivot_axis='AUTO')[source]

Uses a AlignRotationToVector Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/rotation/align_rotation_to_vector.html

Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.func.axes_to_rotation(primary_axis_vector, secondary_axis_vector, primary_axis='X', secondary_axis='Y')[source]

Uses a AxesToRotation Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/rotation/axis_to_rotation.html

Parameters:
  • primary_axis_vector (ProcNode[Vector] | Vector)

  • secondary_axis_vector (ProcNode[Vector] | Vector)

  • primary_axis (Literal['X', 'Y', 'Z'])

  • secondary_axis (Literal['X', 'Y', 'Z'])

Return type:

ProcNode[Vector]

procfunc.nodes.func.axis_angle_to_rotation(axis=(0, 0, 1), angle=0.0)[source]

Uses a AxisAngleToRotation Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/rotation/axis_angle_to_rotation.html

Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.func.boolean_or(a, b)[source]
Parameters:
Return type:

ProcNode[bool]

procfunc.nodes.func.boolean_and(a, b)[source]
Parameters:
Return type:

ProcNode[bool]

procfunc.nodes.func.boolean_xor(a, b)[source]
Parameters:
Return type:

ProcNode[bool]

procfunc.nodes.func.boolean_not(a)[source]

Uses a BooleanNot Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/math/boolean_math.html

Parameters:

a (ProcNode[bool] | bool)

Return type:

ProcNode[bool]

procfunc.nodes.func.combine_matrix(column_1_row_1=1.0, column_1_row_2=0.0, column_1_row_3=0.0, column_1_row_4=0.0, column_2_row_1=0.0, column_2_row_2=1.0, column_2_row_3=0.0, column_2_row_4=0.0, column_3_row_1=0.0, column_3_row_2=0.0, column_3_row_3=1.0, column_3_row_4=0.0, column_4_row_1=0.0, column_4_row_2=0.0, column_4_row_3=0.0, column_4_row_4=1.0)[source]

Uses a CombineMatrix Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/matrix/combine_matrix.html

Parameters:
Return type:

ProcNode[Matrix]

procfunc.nodes.func.combine_transform(translation=(0, 0, 0), rotation=(0, 0, 0), scale=(1, 1, 1))[source]

Uses a CombineTransform Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/matrix/combine_transform.html

Parameters:
Return type:

ProcNode[Matrix]

procfunc.nodes.func.less_than(a, b)[source]
Parameters:
  • a (TCompareNumeric)

  • b (TCompareNumeric)

Return type:

ProcNode[bool]

procfunc.nodes.func.less_equal(a, b)[source]
Parameters:
  • a (TCompareNumeric)

  • b (TCompareNumeric)

Return type:

ProcNode[bool]

procfunc.nodes.func.greater_than(a, b)[source]
Parameters:
  • a (TCompareNumeric)

  • b (TCompareNumeric)

Return type:

ProcNode[bool]

procfunc.nodes.func.greater_equal(a, b)[source]
Parameters:
  • a (TCompareNumeric)

  • b (TCompareNumeric)

Return type:

ProcNode[bool]

procfunc.nodes.func.equal(a, b, epsilon=COMPARE_EPSILON_DEFAULT)[source]
Parameters:
Return type:

ProcNode[bool]

procfunc.nodes.func.not_equal(a, b, epsilon=COMPARE_EPSILON_DEFAULT)[source]
Parameters:
Return type:

ProcNode[bool]

procfunc.nodes.func.vector_elementwise_less_than(a, b)[source]
Parameters:
Return type:

ProcNode[bool]

procfunc.nodes.func.vector_elementwise_less_equal(a, b)[source]
Parameters:
Return type:

ProcNode[bool]

procfunc.nodes.func.vector_elementwise_greater_than(a, b)[source]
Parameters:
Return type:

ProcNode[bool]

procfunc.nodes.func.vector_elementwise_greater_equal(a, b)[source]
Parameters:
Return type:

ProcNode[bool]

procfunc.nodes.func.vector_elementwise_equal(a, b, epsilon=COMPARE_EPSILON_DEFAULT)[source]
Parameters:
Return type:

ProcNode[bool]

procfunc.nodes.func.vector_elementwise_not_equal(a, b, epsilon=COMPARE_EPSILON_DEFAULT)[source]
Parameters:
Return type:

ProcNode[bool]

procfunc.nodes.func.color_equal(a, b, epsilon=COMPARE_EPSILON_DEFAULT)[source]
Parameters:
Return type:

ProcNode[bool]

procfunc.nodes.func.color_not_equal(a, b, epsilon=COMPARE_EPSILON_DEFAULT)[source]
Parameters:
Return type:

ProcNode[bool]

procfunc.nodes.func.color_brighter(a, b)[source]
Parameters:
Return type:

ProcNode[bool]

procfunc.nodes.func.color_darker(a, b)[source]
Parameters:
Return type:

ProcNode[bool]

procfunc.nodes.func.euler_to_rotation(euler=(0, 0, 0))[source]

Uses a EulerToRotation Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/rotation/euler_to_rotation.html

Parameters:

euler (ProcNode[Vector] | Vector)

Return type:

ProcNode[Vector]

procfunc.nodes.func.float_to_int(float, rounding_mode='ROUND')[source]

Uses a FloatToInt Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/math/float_to_integer.html

Parameters:
Return type:

ProcNode[int]

class procfunc.nodes.func.InputSpecialCharactersResult[source]

Bases: NamedTuple

InputSpecialCharactersResult(line_break, tab)

line_break: ProcNode[str]

Alias for field number 0

tab: ProcNode[str]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.func.input_special_characters()[source]

Uses a InputSpecialCharacters Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/text/special_characters.html

Return type:

InputSpecialCharactersResult

procfunc.nodes.func.input_string(string='')[source]

Uses a InputString Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/input/constant/string.html

Parameters:

string (str)

Return type:

ProcNode[str]

procfunc.nodes.func.input_vector(vector=(0.0, 0.0, 0.0))[source]

Uses a InputVector Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/input/constant/vector.html

Parameters:

vector (tuple)

Return type:

ProcNode[Vector]

class procfunc.nodes.func.InvertMatrixResult[source]

Bases: NamedTuple

InvertMatrixResult(matrix, invertible)

matrix: ProcNode[Matrix]

Alias for field number 0

invertible: ProcNode[bool]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.func.invert_matrix(matrix)[source]

Uses a InvertMatrix Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/matrix/invert_matrix.html

Parameters:

matrix (ProcNode[Matrix] | Matrix)

Return type:

InvertMatrixResult

procfunc.nodes.func.invert_rotation(rotation=(0, 0, 0))[source]

Uses a InvertRotation Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/rotation/invert_rotation.html

Parameters:

rotation (ProcNode[Euler] | Euler)

Return type:

ProcNode[Vector]

procfunc.nodes.func.matrix_multiply(a, b)[source]

Uses a MatrixMultiply Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/matrix/multiply_matrices.html

Parameters:
Return type:

ProcNode[Matrix]

procfunc.nodes.func.project_point(vector, transform)[source]

Uses a ProjectPoint Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/matrix/project_point.html

Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.func.quaternion_to_rotation(w=1.0, x=0.0, y=0.0, z=0.0)[source]

Uses a QuaternionToRotation Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/rotation/quaternion_to_rotation.html

Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.func.random_value(min=0.0, max=1.0, id=0, seed=0, data_type=None)[source]

Uses a RandomValue Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/random_value.html

Parameters:
Return type:

ProcNode[TRandomValue]

procfunc.nodes.func.random_boolean(probability=0.5, id=0, seed=0)[source]

Uses a RandomBoolean Function Node.

Parameters:
Return type:

ProcNode[bool]

procfunc.nodes.func.replace_string(string, find, replace)[source]

Uses a ReplaceString Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/text/replace_string.html

Parameters:
Return type:

ProcNode[str]

procfunc.nodes.func.rotate_euler(rotation=(0, 0, 0), rotate_by=(0, 0, 0), rotation_type='EULER', space='OBJECT')[source]

Uses a RotateEuler Function Node.

See: http://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/rotation/rotate_euler.html

Parameters:
  • rotation (ProcNode[Vector] | Vector)

  • rotate_by (ProcNode[Vector] | Vector)

  • rotation_type (Literal['EULER', 'AXIS_ANGLE'])

  • space (Literal['OBJECT', 'LOCAL'])

Return type:

ProcNode[Vector]

procfunc.nodes.func.rotate_rotation(rotation=(0, 0, 0), rotate_by=(0, 0, 0), rotation_space='GLOBAL')[source]

Uses a RotateRotation Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/rotation/rotate_rotation.html

Parameters:
  • rotation (ProcNode[Euler] | Euler)

  • rotate_by (ProcNode[Euler] | Euler)

  • rotation_space (Literal['GLOBAL', 'LOCAL'])

Return type:

ProcNode[Vector]

procfunc.nodes.func.rotate_vector(vector, rotation=(0, 0, 0))[source]

Uses a RotateVector Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/rotation/rotate_vector.html

Parameters:
Return type:

ProcNode[Vector]

class procfunc.nodes.func.RotationToAxisAngleResult[source]

Bases: NamedTuple

RotationToAxisAngleResult(axis, angle)

axis: ProcNode[Vector]

Alias for field number 0

angle: ProcNode[float]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.func.rotation_to_axis_angle(rotation=(0, 0, 0))[source]

Uses a RotationToAxisAngle Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/rotation/axis_angle_to_rotation.html

Parameters:

rotation (ProcNode[Euler] | Euler)

Return type:

RotationToAxisAngleResult

procfunc.nodes.func.rotation_to_euler(rotation=(0, 0, 0))[source]

Uses a RotationToEuler Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/rotation/rotation_to_euler.html

Parameters:

rotation (ProcNode[Euler] | Euler)

Return type:

ProcNode[Vector]

class procfunc.nodes.func.RotationToQuaternionResult[source]

Bases: NamedTuple

RotationToQuaternionResult(w, x, y, z)

w: ProcNode[float]

Alias for field number 0

x: ProcNode[float]

Alias for field number 1

y: ProcNode[float]

Alias for field number 2

z: ProcNode[float]

Alias for field number 3

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.func.rotation_to_quaternion(rotation=(0, 0, 0))[source]

Uses a RotationToQuaternion Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/rotation/rotation_to_quaternion.html

Parameters:

rotation (ProcNode[Euler] | Euler)

Return type:

RotationToQuaternionResult

class procfunc.nodes.func.SeparateMatrixResult[source]

Bases: NamedTuple

SeparateMatrixResult(column_1_row_1, column_1_row_2, column_1_row_3, column_1_row_4, column_2_row_1, column_2_row_2, column_2_row_3, column_2_row_4, column_3_row_1, column_3_row_2, column_3_row_3, column_3_row_4, column_4_row_1, column_4_row_2, column_4_row_3, column_4_row_4)

column_1_row_1: ProcNode[float]

Alias for field number 0

column_1_row_2: ProcNode[float]

Alias for field number 1

column_1_row_3: ProcNode[float]

Alias for field number 2

column_1_row_4: ProcNode[float]

Alias for field number 3

column_2_row_1: ProcNode[float]

Alias for field number 4

column_2_row_2: ProcNode[float]

Alias for field number 5

column_2_row_3: ProcNode[float]

Alias for field number 6

column_2_row_4: ProcNode[float]

Alias for field number 7

column_3_row_1: ProcNode[float]

Alias for field number 8

column_3_row_2: ProcNode[float]

Alias for field number 9

column_3_row_3: ProcNode[float]

Alias for field number 10

column_3_row_4: ProcNode[float]

Alias for field number 11

column_4_row_1: ProcNode[float]

Alias for field number 12

column_4_row_2: ProcNode[float]

Alias for field number 13

column_4_row_3: ProcNode[float]

Alias for field number 14

column_4_row_4: ProcNode[float]

Alias for field number 15

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.func.separate_matrix(matrix)[source]

Uses a SeparateMatrix Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/matrix/separate_matrix.html

Parameters:

matrix (ProcNode[Matrix] | Matrix)

Return type:

SeparateMatrixResult

class procfunc.nodes.func.SeparateTransformResult[source]

Bases: NamedTuple

SeparateTransformResult(translation, rotation, scale)

translation: ProcNode[Vector]

Alias for field number 0

rotation: ProcNode[Vector]

Alias for field number 1

scale: ProcNode[Vector]

Alias for field number 2

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.func.separate_transform(transform)[source]

Uses a SeparateTransform Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/matrix/separate_transform.html

Parameters:

transform (ProcNode[Matrix] | Matrix)

Return type:

SeparateTransformResult

procfunc.nodes.func.slice_string(string, position=0, length=10)[source]

Uses a SliceString Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/text/slice_string.html

Parameters:
Return type:

ProcNode[str]

procfunc.nodes.func.string_length(string)[source]

Uses a StringLength Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/text/string_length.html

Parameters:

string (ProcNode[str] | str)

Return type:

ProcNode[int]

procfunc.nodes.func.transform_direction(direction, transform)[source]

Uses a TransformDirection Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/matrix/transform_direction.html

Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.func.transform_point(vector, transform)[source]

Uses a TransformPoint Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/matrix/transform_point.html

Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.func.transpose_matrix(matrix)[source]

Uses a TransposeMatrix Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/matrix/transpose_matrix.html

Parameters:

matrix (ProcNode[Matrix] | Matrix)

Return type:

ProcNode[Matrix]

procfunc.nodes.func.value_to_string(value, decimals=0)[source]

Uses a ValueToString Function Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/text/value_to_string.html

Parameters:
Return type:

ProcNode[str]

procfunc.nodes.func.index_switch(a=0, b=0, index=0, data_type=None)[source]

Uses a IndexSwitch Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/index_switch.html

Parameters:
Return type:

ProcNode

procfunc.nodes.func.switch(switch=False, a=None, b=None, data_type=None)[source]

Uses a Switch Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/switch.html

Parameters:
Return type:

ProcNode[TAnyDataVal]

pf.nodes.geo

class procfunc.nodes.geo.AccumulateFieldResult[source]

Bases: NamedTuple, Generic[TAttribute]

AccumulateFieldResult(leading, total, trailing)

leading: ProcNode[TAttribute]

Alias for field number 0

total: ProcNode[TAttribute]

Alias for field number 1

trailing: ProcNode[TAttribute]

Alias for field number 2

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.accumulate_field(value=None, group_id=0, domain='POINT', data_type=None)[source]

Uses a AccumulateField Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/field/accumulate_field.html

Parameters:
  • value (ProcNode[TAttribute] | None)

  • group_id (ProcNode[int] | int)

  • domain (Literal['POINT', 'EDGE', 'FACE', 'CORNER', 'CURVE', 'INSTANCE', 'LAYER'])

  • data_type (NodeDataType | RuntimeResolveDataType | None)

Return type:

AccumulateFieldResult[TAttribute]

class procfunc.nodes.geo.AttributeDomainSizeResult[source]

Bases: NamedTuple

AttributeDomainSizeResult(point_count, edge_count, face_count, face_corner_count, spline_count, instance_count)

point_count: ProcNode[int]

Alias for field number 0

edge_count: ProcNode[int]

Alias for field number 1

face_count: ProcNode[int]

Alias for field number 2

face_corner_count: ProcNode[int]

Alias for field number 3

spline_count: ProcNode[int]

Alias for field number 4

instance_count: ProcNode[int]

Alias for field number 5

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.attribute_domain_size(geometry, component='MESH')[source]

Uses a AttributeDomainSize Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/attribute/domain_size.html

Parameters:
Return type:

AttributeDomainSizeResult

class procfunc.nodes.geo.AttributeStatisticResult[source]

Bases: NamedTuple, Generic[TAttribute]

AttributeStatisticResult(max, mean, median, min, range, standard_deviation, sum, variance)

max: ProcNode[TAttribute]

Alias for field number 0

mean: ProcNode[TAttribute]

Alias for field number 1

median: ProcNode[TAttribute]

Alias for field number 2

min: ProcNode[TAttribute]

Alias for field number 3

range: ProcNode[TAttribute]

Alias for field number 4

standard_deviation: ProcNode[TAttribute]

Alias for field number 5

sum: ProcNode[TAttribute]

Alias for field number 6

variance: ProcNode[TAttribute]

Alias for field number 7

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.attribute_statistic(geometry, attribute=None, selection=True, domain='POINT', data_type=None)[source]

Uses a AttributeStatistic Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/attribute/attribute_statistic.html

Parameters:
Return type:

AttributeStatisticResult[TAttribute]

procfunc.nodes.geo.blur_attribute(value=None, iterations=1, weight=1.0, data_type=None)[source]

Uses a BlurAttribute Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/attribute/blur_attribute.html

Parameters:
Return type:

ProcNode[TAttribute]

class procfunc.nodes.geo.BoundBoxResult[source]

Bases: NamedTuple

BoundBoxResult(bounding_box, min, max)

bounding_box: ProcNode[MeshObject]

Alias for field number 0

min: ProcNode[Vector]

Alias for field number 1

max: ProcNode[Vector]

Alias for field number 2

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.bound_box(geometry)[source]

Uses a BoundBox Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/operations/bounding_box.html

Parameters:

geometry (ProcNode[MeshObject | CurveObject | Instances | VolumeObject] | None)

Return type:

BoundBoxResult

class procfunc.nodes.geo.CaptureAttributeResult[source]

Bases: Generic[TAnyGeometry]

CaptureAttributeResult(geometry: procfunc.nodes.types.ProcNode[~TAnyGeometry], attributes: dict[str, procfunc.nodes.types.ProcNode])

geometry: ProcNode[TAnyGeometry]
attributes: dict[str, ProcNode]
__init__(geometry, attributes)
Parameters:
Return type:

None

Supported special methods: __getattr__

procfunc.nodes.geo.capture_attribute(geometry, domain='POINT', **attributes)[source]

Uses a CaptureAttribute Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/attribute/capture_attribute.html

Parameters:
  • geometry (ProcNode[TAnyGeometry] | None)

  • domain (Literal['POINT', 'EDGE', 'FACE', 'CORNER', 'CURVE', 'INSTANCE', 'LAYER'])

  • attributes (ProcNode[TAttribute] | TAttribute)

Return type:

CaptureAttributeResult[TAnyGeometry]

procfunc.nodes.geo.collection_info(collection, separate_children=False, reset_children=False, transform_space='ORIGINAL')[source]

Uses a CollectionInfo Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/input/scene/collection_info.html

Parameters:
Return type:

ProcNode[Instances]

procfunc.nodes.geo.convex_hull(geometry)[source]

Uses a ConvexHull Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/operations/convex_hull.html

Parameters:

geometry (ProcNode[MeshObject | CurveObject | Instances | VolumeObject] | None)

Return type:

ProcNode[MeshObject]

class procfunc.nodes.geo.CornerResult[source]

Bases: NamedTuple

CornerResult(corner_index, total)

corner_index: ProcNode[int]

Alias for field number 0

total: ProcNode[int]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.corners_of_edge(edge_index=0, weights=0.0, sort_index=0)[source]

Uses a CornersOfEdge Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/topology/corners_of_edge.html

Parameters:
Return type:

CornerResult

procfunc.nodes.geo.corners_of_face(face_index=0, weights=0.0, sort_index=0)[source]

Uses a CornersOfFace Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/topology/corners_of_face.html

Parameters:
Return type:

CornerResult

procfunc.nodes.geo.corners_of_vertex(vertex_index=0, weights=0.0, sort_index=0)[source]

Uses a CornersOfVertex Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/topology/corners_of_vertex.html

Parameters:
Return type:

CornerResult

procfunc.nodes.geo.curve_arc(resolution=16, radius=1.0, start_angle=0.0, sweep_angle=5.497787, connect_center=False, invert_arc=False)[source]

Uses a CurveArc Geometry Node in RADIUS mode (the arc is defined by a radius and a start/sweep angle, and produces a single curve output).

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/primitives/arc.html

Parameters:
Return type:

ProcNode[CurveObject]

class procfunc.nodes.geo.CurveArcFromPointsResult[source]

Bases: NamedTuple

CurveArcFromPointsResult(curve, center, normal, radius)

curve: ProcNode[CurveObject]

Alias for field number 0

center: ProcNode[Vector]

Alias for field number 1

normal: ProcNode[Vector]

Alias for field number 2

radius: ProcNode[float]

Alias for field number 3

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.curve_arc_from_points(start, middle, end, resolution=16, offset_angle=0.0, connect_center=False, invert_arc=False)[source]

Uses a CurveArc Geometry Node in POINTS mode (the arc passes through three points, additionally exposing the fitted center, normal and radius).

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/primitives/arc.html

Parameters:
Return type:

CurveArcFromPointsResult

procfunc.nodes.geo.curve_endpoint_selection(start_size=1, end_size=1)[source]

Uses a CurveEndpointSelection Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/read/endpoint_selection.html

Parameters:
Return type:

ProcNode[bool]

procfunc.nodes.geo.curve_length(curve)[source]

Uses a CurveLength Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/read/curve_length.html

Parameters:

curve (ProcNode[CurveObject] | None)

Return type:

ProcNode[float]

class procfunc.nodes.geo.CurveOfPointResult[source]

Bases: NamedTuple

CurveOfPointResult(curve_index, index_in_curve)

curve_index: ProcNode[int]

Alias for field number 0

index_in_curve: ProcNode[int]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.curve_of_point(point_index=0)[source]

Uses a CurveOfPoint Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/topology/curve_of_point.html

Parameters:

point_index (ProcNode[int] | int)

Return type:

CurveOfPointResult

procfunc.nodes.geo.curve_bezier_segment(start, start_handle, end_handle, end, resolution=16, mode='POSITION')[source]

Uses a CurvePrimitiveBezierSegment Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/primitives/bezier_segment.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.curve_circle(resolution=32, radius=1.0)[source]

Uses a CurvePrimitiveCircle Geometry Node in RADIUS mode (the circle is defined by a radius and produces a single curve output).

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/primitives/curve_circle.html

Parameters:
Return type:

ProcNode[CurveObject]

class procfunc.nodes.geo.CurveCircleFromPointsResult[source]

Bases: NamedTuple

CurveCircleFromPointsResult(curve, center)

curve: ProcNode[CurveObject]

Alias for field number 0

center: ProcNode[Vector]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.curve_circle_from_points(point_1, point_2, point_3, resolution=32)[source]

Uses a CurvePrimitiveCircle Geometry Node in POINTS mode (the circle passes through three points, additionally exposing the fitted center).

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/primitives/curve_circle.html

Parameters:
Return type:

CurveCircleFromPointsResult

procfunc.nodes.geo.curve_line(start, end)[source]

Uses a CurvePrimitiveLine Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/primitives/curve_line.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.curve_line_from_direction(start, direction, length=1.0)[source]

Uses a CurveLineFromDirection Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/primitives/curve_line.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.curve_quadrilateral(width=2.0, height=2.0)[source]

Uses a CurvePrimitiveQuadrilateral Geometry Node in RECTANGLE mode.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/primitives/quadrilateral.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.curve_quadrilateral_parallelogram(width=2.0, height=2.0, offset=1.0)[source]

Uses a CurvePrimitiveQuadrilateral Geometry Node in PARALLELOGRAM mode.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/primitives/quadrilateral.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.curve_quadrilateral_trapezoid(bottom_width=4.0, top_width=2.0, height=2.0, offset=1.0)[source]

Uses a CurvePrimitiveQuadrilateral Geometry Node in TRAPEZOID mode.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/primitives/quadrilateral.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.curve_quadrilateral_kite(width=2.0, bottom_height=3.0, top_height=1.0)[source]

Uses a CurvePrimitiveQuadrilateral Geometry Node in KITE mode.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/primitives/quadrilateral.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.curve_quadrilateral_points(point_1, point_2, point_3, point_4)[source]

Uses a CurvePrimitiveQuadrilateral Geometry Node in POINTS mode.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/primitives/quadrilateral.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.curve_bezier(start, middle, end, resolution=16)[source]

Uses a CurveQuadraticBezier Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/primitives/quadratic_bezier.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.curve_set_handles(curve, selection=True, handle_type='AUTO', mode=frozenset({'LEFT', 'RIGHT'}))[source]

Uses a CurveSetHandles Geometry Node.

mode is a flag set whose members are any of “LEFT”, “RIGHT” (which curve handles to affect); defaults to both, matching Blender’s default.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/write/set_handle_type.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.curve_spiral(resolution=32, rotations=2.0, start_radius=1.0, end_radius=2.0, height=2.0, reverse=False)[source]

Uses a CurveSpiral Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/primitives/curve_spiral.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.curve_spline_type(curve, selection=True, spline_type='POLY')[source]

Uses a CurveSplineType Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/write/set_spline_type.html

Parameters:
Return type:

ProcNode[CurveObject]

class procfunc.nodes.geo.CurveStarResult[source]

Bases: NamedTuple

CurveStarResult(curve, outer_points)

curve: ProcNode[CurveObject]

Alias for field number 0

outer_points: ProcNode[bool]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.curve_star(points=8, inner_radius=1.0, outer_radius=2.0, twist=0.0)[source]

Uses a CurveStar Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/primitives/star.html

Parameters:
Return type:

CurveStarResult

procfunc.nodes.geo.curve_to_mesh(curve, profile_curve=None, fill_caps=False)[source]

Uses a CurveToMesh Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/operations/curve_to_mesh.html

Parameters:
Return type:

ProcNode[MeshObject]

class procfunc.nodes.geo.CurveToPointsResult[source]

Bases: NamedTuple

CurveToPointsResult(points, tangent, normal, rotation)

points: ProcNode[MeshObject]

Alias for field number 0

tangent: ProcNode[Vector]

Alias for field number 1

normal: ProcNode[Vector]

Alias for field number 2

rotation: ProcNode[Vector]

Alias for field number 3

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.curve_to_points(curve, count=10, length=1.0, mode='COUNT')[source]

Uses a CurveToPoints Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/operations/curve_to_points.html

Parameters:
Return type:

CurveToPointsResult

procfunc.nodes.geo.curve_to_points_evaluated(curve)[source]

Uses a CurveToPoints Geometry Node with mode=”EVALUATED”.

From Blender docs: Creates points based on how the curve is evaluated. See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/operations/curve_to_points.html

Parameters:

curve (ProcNode[CurveObject] | None)

Return type:

CurveToPointsResult

procfunc.nodes.geo.curve_to_points_count(curve, count=10)[source]

Uses a CurveToPoints Geometry Node with mode=”COUNT”.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/operations/curve_to_points.html

Parameters:
Return type:

CurveToPointsResult

procfunc.nodes.geo.curve_to_points_length(curve, length=0.1)[source]

Uses a CurveToPoints Geometry Node with mode=”LENGTH”.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/operations/curve_to_points.html

Parameters:
Return type:

CurveToPointsResult

procfunc.nodes.geo.deform_curves_on_surface(curves)[source]

Uses a DeformCurvesOnSurface Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/operations/deform_curves_on_surface.html

Parameters:

curves (ProcNode[HairObject] | None)

Return type:

ProcNode[HairObject]

procfunc.nodes.geo.delete_geometry(geometry, selection=True, domain='POINT', mode='ALL')[source]

Uses a DeleteGeometry Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/operations/delete_geometry.html

Parameters:
  • geometry (ProcNode[TDeleteGeometry] | None)

  • selection (ProcNode[bool] | bool)

  • domain (Literal['POINT', 'EDGE', 'FACE', 'CURVE', 'INSTANCE', 'LAYER'])

  • mode (Literal['ALL', 'EDGE_FACE', 'ONLY_FACE'])

Return type:

ProcNode[TDeleteGeometry]

procfunc.nodes.geo.distribute_points_in_grid(grid=0.0, density=1.0, seed=0, mode='DENSITY_RANDOM')[source]

Uses a DistributePointsInGrid Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/point/distribute_points_in_volume.html

Parameters:
Return type:

ProcNode[MeshObject]

procfunc.nodes.geo.distribute_points_in_volume(volume, density=1.0, seed=0, mode='DENSITY_RANDOM')[source]

Uses a DistributePointsInVolume Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/point/distribute_points_in_volume.html

Parameters:
Return type:

ProcNode[VolumeObject]

class procfunc.nodes.geo.DistributePointsOnFacesResult[source]

Bases: NamedTuple

DistributePointsOnFacesResult(points, normal, rotation)

points: ProcNode[MeshObject]

Alias for field number 0

normal: ProcNode[Vector]

Alias for field number 1

rotation: ProcNode[Vector]

Alias for field number 2

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.distribute_points_on_faces(mesh, selection=True, density=None, seed=0, use_legacy_normal=False)[source]

Uses a DistributePointsOnFaces Geometry Node with RANDOM distribution.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/point/distribute_points_on_faces.html

Parameters:
Return type:

DistributePointsOnFacesResult

procfunc.nodes.geo.distribute_points_on_faces_poisson(mesh, density_factor, selection=True, distance_min=0.0, density_max=10.0, seed=0, use_legacy_normal=False)[source]

Uses a DistributePointsOnFaces Geometry Node with POISSON distribution.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/point/distribute_points_on_faces.html

Parameters:
Return type:

DistributePointsOnFacesResult

procfunc.nodes.geo.dual_mesh(mesh, keep_boundaries=False)[source]

Uses a DualMesh Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/operations/dual_mesh.html

Parameters:
Return type:

ProcNode[MeshObject]

class procfunc.nodes.geo.DuplicateElementsResult[source]

Bases: NamedTuple, Generic[TAnyGeometry]

DuplicateElementsResult(geometry, duplicate_index)

geometry: ProcNode[TAnyGeometry]

Alias for field number 0

duplicate_index: ProcNode[int]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.duplicate_elements(geometry, selection=True, amount=1, domain='POINT')[source]

Uses a DuplicateElements Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/operations/duplicate_elements.html

Parameters:
Return type:

DuplicateElementsResult[TAnyGeometry]

procfunc.nodes.geo.edge_paths_to_curves(mesh, start_vertices=True, next_vertex_index=-1)[source]

Uses a EdgePathsToCurves Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/operations/edge_paths_to_curves.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.edge_paths_to_selection(start_vertices=True, next_vertex_index=-1)[source]

Uses a EdgePathsToSelection Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/operations/edge_paths_to_selection.html

Parameters:
Return type:

ProcNode[bool]

class procfunc.nodes.geo.EdgesOfCornerResult[source]

Bases: NamedTuple

EdgesOfCornerResult(next_edge_index, previous_edge_index)

next_edge_index: ProcNode[int]

Alias for field number 0

previous_edge_index: ProcNode[int]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.edges_of_corner(corner_index=0)[source]

Uses a EdgesOfCorner Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/topology/edges_of_corner.html

Parameters:

corner_index (ProcNode[int] | int)

Return type:

EdgesOfCornerResult

class procfunc.nodes.geo.EdgesOfVertexResult[source]

Bases: NamedTuple

EdgesOfVertexResult(edge_index, total)

edge_index: ProcNode[int]

Alias for field number 0

total: ProcNode[int]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.edges_of_vertex(vertex_index=0, weights=0.0, sort_index=0)[source]

Uses a EdgesOfVertex Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/topology/edges_of_vertex.html

Parameters:
Return type:

EdgesOfVertexResult

procfunc.nodes.geo.edges_to_face_groups(boundary_edges=True)[source]

Uses a EdgesToFaceGroups Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/read/edges_to_face_groups.html

Parameters:

boundary_edges (ProcNode[bool] | bool)

Return type:

ProcNode[int]

class procfunc.nodes.geo.ExtrudeMeshResult[source]

Bases: NamedTuple

ExtrudeMeshResult(mesh, top, side)

mesh: ProcNode[MeshObject]

Alias for field number 0

top: ProcNode[bool]

Alias for field number 1

side: ProcNode[bool]

Alias for field number 2

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.extrude_mesh(mesh, offset=None, selection=True, offset_scale=1.0, individual=True, mode='FACES')[source]
Parameters:
Return type:

ExtrudeMeshResult

class procfunc.nodes.geo.FaceOfCornerResult[source]

Bases: NamedTuple

FaceOfCornerResult(face_index, index_in_face)

face_index: ProcNode[int]

Alias for field number 0

index_in_face: ProcNode[int]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.face_of_corner(corner_index=0)[source]

Uses a FaceOfCorner Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/topology/face_of_corner.html

Parameters:

corner_index (ProcNode[int] | int)

Return type:

FaceOfCornerResult

procfunc.nodes.geo.field_at_index(value=None, index=0, domain='POINT', data_type=None)[source]

Uses a FieldAtIndex Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/field/evaluate_at_index.html

Parameters:
  • value (TAttribute | None)

  • index (ProcNode[int] | int)

  • domain (Literal['POINT', 'EDGE', 'FACE', 'CORNER', 'CURVE', 'INSTANCE', 'LAYER'])

  • data_type (NodeDataType | RuntimeResolveDataType | None)

Return type:

ProcNode[TAttribute]

procfunc.nodes.geo.field_on_domain(value=0, domain='POINT', data_type=None)[source]

Uses a FieldOnDomain Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/field/evaluate_on_domain.html

Parameters:
  • value (TFieldOnDomain)

  • domain (Literal['POINT', 'EDGE', 'FACE', 'CORNER', 'CURVE', 'INSTANCE', 'LAYER'])

  • data_type (NodeDataType | RuntimeResolveDataType | None)

Return type:

ProcNode[TFieldOnDomain]

procfunc.nodes.geo.fill_curve(curve, group_id=0, mode='TRIANGLES')[source]

Uses a FillCurve Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/operations/fill_curve.html

Parameters:
Return type:

ProcNode[MeshObject]

procfunc.nodes.geo.fillet_curve_bezier(curve, radius=0.25, limit_radius=False)[source]

Uses a FilletCurve Geometry Node in BEZIER mode.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/operations/fillet_curve.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.fillet_curve_poly(curve, radius=0.25, count=1, limit_radius=False)[source]

Uses a FilletCurve Geometry Node in POLY mode.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/operations/fillet_curve.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.flip_faces(mesh, selection=True)[source]

Uses a FlipFaces Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/operations/flip_faces.html

Parameters:
Return type:

ProcNode[MeshObject]

procfunc.nodes.geo.geometry_to_instance(geometry)[source]

Uses a GeometryToInstance Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/geometry_to_instance.html

Parameters:

geometry (ProcNode[TAnyGeometry] | None)

Return type:

ProcNode[Instances]

class procfunc.nodes.geo.GetNamedGridResult[source]

Bases: NamedTuple

GetNamedGridResult(volume, grid)

volume: ProcNode[MeshObject | CurveObject | Instances | VolumeObject]

Alias for field number 0

grid: ProcNode[float]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.get_named_grid(volume, name='', remove=True)[source]

Uses a GetNamedGrid Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/volume/index.html

Parameters:
Return type:

GetNamedGridResult

procfunc.nodes.geo.grid_to_mesh(grid=0.0, threshold=0.1, adaptivity=0.0)[source]

Uses a GridToMesh Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/volume/operations/volume_to_mesh.html

Parameters:
Return type:

ProcNode[MeshObject]

class procfunc.nodes.geo.ImageInfoResult[source]

Bases: NamedTuple

ImageInfoResult(width, height, has_alpha, frame_count, fps)

width: ProcNode[int]

Alias for field number 0

height: ProcNode[int]

Alias for field number 1

has_alpha: ProcNode[bool]

Alias for field number 2

frame_count: ProcNode[int]

Alias for field number 3

fps: ProcNode[float]

Alias for field number 4

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.image_info(image, frame=0)[source]

Uses a ImageInfo Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/input/scene/image_info.html

Parameters:
Return type:

ImageInfoResult

class procfunc.nodes.geo.ImageTextureResult[source]

Bases: NamedTuple

ImageTextureResult(color, alpha)

color: ProcNode[Color]

Alias for field number 0

alpha: ProcNode[float]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.image_texture(image, vector, frame=0, extension='REPEAT', interpolation='Linear')[source]

Uses a ImageTexture Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/texture/image.html

Parameters:
Return type:

ImageTextureResult

class procfunc.nodes.geo.IndexOfNearestResult[source]

Bases: NamedTuple

IndexOfNearestResult(index, has_neighbor)

index: ProcNode[int]

Alias for field number 0

has_neighbor: ProcNode[bool]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.index_of_nearest(position, group_id=0)[source]

Uses a IndexOfNearest Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/sample/index_of_nearest.html

Parameters:
Return type:

IndexOfNearestResult

procfunc.nodes.geo.input_active_camera()[source]

Uses a InputActiveCamera Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/input/scene/active_camera.html

Return type:

ProcNode[Object]

class procfunc.nodes.geo.InputCurveHandlePositionsResult[source]

Bases: NamedTuple

InputCurveHandlePositionsResult(left, right)

left: ProcNode[Vector]

Alias for field number 0

right: ProcNode[Vector]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.input_curve_handle_positions(relative=False)[source]

Uses a InputCurveHandlePositions Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/read/curve_handle_position.html

Parameters:

relative (ProcNode[bool] | bool)

Return type:

InputCurveHandlePositionsResult

procfunc.nodes.geo.input_curve_tilt()[source]

Uses a InputCurveTilt Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/read/curve_tilt.html

Return type:

ProcNode[float]

procfunc.nodes.geo.input_edge_smooth()[source]

Uses a InputEdgeSmooth Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/read/is_edge_smooth.html

Return type:

ProcNode[bool]

procfunc.nodes.geo.input_id()[source]

Uses a InputID Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/read/id.html

Return type:

ProcNode[int]

procfunc.nodes.geo.input_image(image=None)[source]

Uses a InputImage Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/input/constant/image.html

Parameters:

image (Image | None)

Return type:

ProcNode[Image]

procfunc.nodes.geo.input_index()[source]

Uses a InputIndex Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/read/input_index.html

Return type:

ProcNode[int]

procfunc.nodes.geo.input_instance_rotation()[source]

Uses a InputInstanceRotation Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/input/constant/rotation.html

Return type:

ProcNode[Vector]

procfunc.nodes.geo.input_instance_scale()[source]

Uses a InputInstanceScale Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/instances/instance_scale.html

Return type:

ProcNode[Vector]

procfunc.nodes.geo.input_material(material=None)[source]

Uses a InputMaterial Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/input/constant/material.html

Parameters:

material (Material | None)

Return type:

ProcNode[Material]

procfunc.nodes.geo.input_material_index()[source]

Uses a InputMaterialIndex Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/material/material_index.html

Return type:

ProcNode[int]

class procfunc.nodes.geo.InputMeshEdgeAngleResult[source]

Bases: NamedTuple

InputMeshEdgeAngleResult(unsigned_angle, signed_angle)

unsigned_angle: ProcNode[float]

Alias for field number 0

signed_angle: ProcNode[float]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.input_mesh_edge_angle()[source]

Uses a InputMeshEdgeAngle Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/read/edge_angle.html

Return type:

InputMeshEdgeAngleResult

procfunc.nodes.geo.input_mesh_edge_neighbors()[source]

Uses a InputMeshEdgeNeighbors Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/read/edge_neighbors.html

Return type:

ProcNode[int]

class procfunc.nodes.geo.InputMeshEdgeVerticesResult[source]

Bases: NamedTuple

InputMeshEdgeVerticesResult(vertex_index_1, vertex_index_2, position_1, position_2)

vertex_index_1: ProcNode[int]

Alias for field number 0

vertex_index_2: ProcNode[int]

Alias for field number 1

position_1: ProcNode[Vector]

Alias for field number 2

position_2: ProcNode[Vector]

Alias for field number 3

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.input_mesh_edge_vertices()[source]

Uses a InputMeshEdgeVertices Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/read/edge_vertices.html

Return type:

InputMeshEdgeVerticesResult

procfunc.nodes.geo.input_mesh_face_area()[source]

Uses a InputMeshFaceArea Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/read/face_area.html

Return type:

ProcNode[float]

procfunc.nodes.geo.input_mesh_face_is_planar(threshold=0.01)[source]

Uses a InputMeshFaceIsPlanar Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/read/face_is_planar.html

Parameters:

threshold (ProcNode[float] | float)

Return type:

ProcNode[bool]

class procfunc.nodes.geo.InputMeshFaceNeighborsResult[source]

Bases: NamedTuple

InputMeshFaceNeighborsResult(vertex_count, face_count)

vertex_count: ProcNode[int]

Alias for field number 0

face_count: ProcNode[int]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.input_mesh_face_neighbors()[source]

Uses a InputMeshFaceNeighbors Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/read/face_neighbors.html

Return type:

InputMeshFaceNeighborsResult

class procfunc.nodes.geo.InputMeshIslandResult[source]

Bases: NamedTuple

InputMeshIslandResult(island_index, island_count)

island_index: ProcNode[int]

Alias for field number 0

island_count: ProcNode[int]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.input_mesh_island()[source]

Uses a InputMeshIsland Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/read/mesh_island.html

Return type:

InputMeshIslandResult

class procfunc.nodes.geo.InputMeshVertexNeighborsResult[source]

Bases: NamedTuple

InputMeshVertexNeighborsResult(vertex_count, face_count)

vertex_count: ProcNode[int]

Alias for field number 0

face_count: ProcNode[int]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.input_mesh_vertex_neighbors()[source]

Uses a InputMeshVertexNeighbors Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/read/vertex_neighbors.html

Return type:

InputMeshVertexNeighborsResult

class procfunc.nodes.geo.InputNamedAttributeResult[source]

Bases: NamedTuple

InputNamedAttributeResult(attribute, exists)

attribute: ProcNode

Alias for field number 0

exists: ProcNode[bool]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.input_named_attribute(name='', data_type=None)[source]

Uses a InputNamedAttribute Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/read/named_attribute.html

Parameters:
Return type:

InputNamedAttributeResult

procfunc.nodes.geo.input_named_layer_selection(name='')[source]

Uses a InputNamedLayerSelection Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/read/selection.html

Parameters:

name (ProcNode[str] | str)

Return type:

ProcNode[bool]

procfunc.nodes.geo.input_normal()[source]

Uses a InputNormal Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/read/normal.html

Return type:

ProcNode[Vector]

procfunc.nodes.geo.input_position()[source]

Uses a InputPosition Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/read/position.html

Return type:

ProcNode[Vector]

procfunc.nodes.geo.input_radius()[source]

Uses a InputRadius Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/read/radius.html

Return type:

ProcNode[float]

class procfunc.nodes.geo.InputSceneTimeResult[source]

Bases: NamedTuple

InputSceneTimeResult(seconds, frame)

seconds: ProcNode[float]

Alias for field number 0

frame: ProcNode[int]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.input_scene_time()[source]

Uses a InputSceneTime Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/input/scene/scene_time.html

Return type:

InputSceneTimeResult

procfunc.nodes.geo.input_shade_smooth()[source]

Uses a InputShadeSmooth Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/write/set_shade_smooth.html

Return type:

ProcNode[bool]

class procfunc.nodes.geo.InputShortestEdgePathsResult[source]

Bases: NamedTuple

InputShortestEdgePathsResult(next_vertex_index, total_cost)

next_vertex_index: ProcNode[int]

Alias for field number 0

total_cost: ProcNode[float]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.input_shortest_edge_paths(end_vertex=False, edge_cost=1.0)[source]

Uses a InputShortestEdgePaths Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/read/shortest_edge_paths.html

Parameters:
Return type:

InputShortestEdgePathsResult

procfunc.nodes.geo.input_spline_cyclic()[source]

Uses a InputSplineCyclic Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/read/is_spline_cyclic.html

Return type:

ProcNode[bool]

procfunc.nodes.geo.input_spline_resolution()[source]

Uses a InputSplineResolution Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/read/spline_resolution.html

Return type:

ProcNode[int]

procfunc.nodes.geo.input_tangent()[source]

Uses a InputTangent Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/read/curve_tangent.html

Return type:

ProcNode[Vector]

procfunc.nodes.geo.instance_on_points(points, instance, rotation=(0, 0, 0), scale=(1, 1, 1), selection=True, pick_instance=False, instance_index=0)[source]

Uses a InstanceOnPoints Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/instances/instance_on_points.html

Parameters:
Return type:

ProcNode[Instances]

procfunc.nodes.geo.instance_transform()[source]

Uses a InstanceTransform Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/instances/instance_transform.html

Return type:

ProcNode

procfunc.nodes.geo.instances_to_points(position, instances, selection=True, radius=0.05)[source]

Uses a InstancesToPoints Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/instances/instances_to_points.html

Parameters:
Return type:

ProcNode[MeshObject | CurveObject]

class procfunc.nodes.geo.InterpolateCurvesResult[source]

Bases: NamedTuple

InterpolateCurvesResult(curves, closest_index, closest_weight)

curves: ProcNode[HairObject]

Alias for field number 0

closest_index: ProcNode[int]

Alias for field number 1

closest_weight: ProcNode[float]

Alias for field number 2

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.interpolate_curves(guide_curves, points, guide_up, point_up, guide_group_id=0, point_group_id=0, max_neighbors=4)[source]

Uses a InterpolateCurves Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/operations/interpolate_curves.html

Parameters:
Return type:

InterpolateCurvesResult

procfunc.nodes.geo.is_viewport()[source]

Uses a IsViewport Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/input/scene/is_viewport.html

Return type:

ProcNode[bool]

procfunc.nodes.geo.join_geometry(geometries)[source]

Uses a JoinGeometry Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/join_geometry.html

Parameters:

geometries (list[ProcNode[TAnyGeometry]])

Return type:

ProcNode[TAnyGeometry]

procfunc.nodes.geo.material_selection(material)[source]

Uses a MaterialSelection Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/material/material_selection.html

Parameters:

material (ProcNode[Material] | Material)

Return type:

ProcNode[bool]

procfunc.nodes.geo.merge_by_distance(geometry, selection=True, distance=0.001, mode='ALL')[source]

Uses a MergeByDistance Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/operations/merge_by_distance.html

Parameters:
Return type:

ProcNode[MeshObject | CurveObject | Instances | VolumeObject]

class procfunc.nodes.geo.MeshBooleanResult[source]

Bases: NamedTuple

MeshBooleanResult(mesh, intersecting_edges)

mesh: ProcNode[MeshObject]

Alias for field number 0

intersecting_edges: ProcNode[bool] | None

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.mesh_boolean(a, b, self_intersection=False, hole_tolerant=False, solver='FLOAT')[source]

Uses a MeshBoolean Geometry Node in DIFFERENCE mode (a minus b).

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/operations/mesh_boolean.html

Parameters:
Return type:

MeshBooleanResult

procfunc.nodes.geo.mesh_boolean_union(mesh, self_intersection=False, hole_tolerant=False, solver='FLOAT')[source]

Uses a MeshBoolean Geometry Node in UNION mode (combines the input meshes).

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/operations/mesh_boolean.html

Parameters:
Return type:

MeshBooleanResult

procfunc.nodes.geo.mesh_boolean_intersect(mesh, self_intersection=False, hole_tolerant=False, solver='FLOAT')[source]

Uses a MeshBoolean Geometry Node in INTERSECT mode (keeps the volume shared by all input meshes).

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/operations/mesh_boolean.html

Parameters:
Return type:

MeshBooleanResult

procfunc.nodes.geo.mesh_circle(vertices=32, radius=1.0, fill_type='NONE')[source]

Uses a MeshCircle Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/primitives/mesh_circle.html

Parameters:
Return type:

ProcNode[MeshObject]

class procfunc.nodes.geo.MeshResult[source]

Bases: NamedTuple

MeshResult(mesh, uv_map)

mesh: ProcNode[MeshObject]

Alias for field number 0

uv_map: ProcNode[MeshObject]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

class procfunc.nodes.geo.MeshConeResult[source]

Bases: NamedTuple

MeshConeResult(mesh, uv_map, top, bottom, side)

mesh: ProcNode[MeshObject]

Alias for field number 0

uv_map: ProcNode[MeshObject]

Alias for field number 1

top: ProcNode[MeshObject]

Alias for field number 2

bottom: ProcNode[MeshObject]

Alias for field number 3

side: ProcNode[MeshObject]

Alias for field number 4

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.mesh_cone(vertices=32, side_segments=1, fill_segments=1, radius_top=0.0, radius_bottom=1.0, depth=2.0, fill_type='NGON')[source]

Uses a MeshCone Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/primitives/cone.html

Parameters:
Return type:

MeshConeResult

procfunc.nodes.geo.mesh_cube(size=(1, 1, 1), vertices_x=2, vertices_y=2, vertices_z=2)[source]

Uses a MeshCube Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/primitives/cube.html

Parameters:
Return type:

MeshResult

class procfunc.nodes.geo.MeshCylinderResult[source]

Bases: NamedTuple

MeshCylinderResult(mesh, top, side, bottom, uv_map)

mesh: ProcNode[MeshObject]

Alias for field number 0

top: ProcNode[MeshObject]

Alias for field number 1

side: ProcNode[MeshObject]

Alias for field number 2

bottom: ProcNode[MeshObject]

Alias for field number 3

uv_map: ProcNode[MeshObject]

Alias for field number 4

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.mesh_cylinder(vertices=32, side_segments=1, fill_segments=1, radius=1.0, depth=2.0, fill_type='NGON')[source]

Uses a MeshCylinder Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/primitives/cylinder.html

Parameters:
Return type:

MeshCylinderResult

procfunc.nodes.geo.mesh_face_set_boundaries(face_group_id=0)[source]

Uses a MeshFaceSetBoundaries Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/read/face_group_boundaries.html

Parameters:

face_group_id (ProcNode[int] | int)

Return type:

ProcNode[bool]

procfunc.nodes.geo.mesh_grid(size_x=1.0, size_y=1.0, vertices_x=3, vertices_y=3)[source]

Uses a MeshGrid Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/primitives/grid.html

Parameters:
Return type:

MeshResult

procfunc.nodes.geo.mesh_icosphere(radius=1.0, subdivisions=1)[source]

Uses a MeshIcoSphere Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/primitives/icosphere.html

Parameters:
Return type:

MeshResult

procfunc.nodes.geo.mesh_line(start_location, offset, count=10, count_mode='TOTAL')[source]

Uses a MeshLine Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/primitives/mesh_line.html

Parameters:
Return type:

ProcNode[MeshObject]

procfunc.nodes.geo.mesh_line_from_endpoints(start_location, end_location, count=10, count_mode='TOTAL')[source]
Parameters:
Return type:

ProcNode[MeshObject]

procfunc.nodes.geo.mesh_to_curve(mesh, selection=True)[source]

Uses a MeshToCurve Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/operations/mesh_to_curve.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.mesh_to_density_grid(mesh, density=1.0, voxel_size=0.3, gradient_width=0.2)[source]

Uses a MeshToDensityGrid Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/operations/mesh_to_volume.html

Parameters:
Return type:

ProcNode

procfunc.nodes.geo.mesh_to_points(mesh, position, selection=True, radius=0.05, mode='VERTICES')[source]

Uses a MeshToPoints Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/operations/mesh_to_points.html

Parameters:
Return type:

ProcNode[MeshObject | CurveObject]

procfunc.nodes.geo.mesh_to_sdf_grid(mesh, voxel_size=0.3, band_width=3)[source]

Uses a MeshToSDFGrid Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/operations/mesh_to_volume.html

Parameters:
Return type:

ProcNode

procfunc.nodes.geo.mesh_to_volume(mesh, density=1.0, voxel_amount=64.0, interior_band_width=0.2, resolution_mode='VOXEL_AMOUNT')[source]

Uses a MeshToVolume Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/operations/mesh_to_volume.html

Parameters:
Return type:

ProcNode[VolumeObject]

procfunc.nodes.geo.mesh_uv_sphere(segments=32, rings=16, radius=1.0)[source]

Uses a MeshUVSphere Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/primitives/uv_sphere.html

Parameters:
Return type:

MeshResult

class procfunc.nodes.geo.ObjectInfoResult[source]

Bases: NamedTuple, Generic[TObjectInfo]

ObjectInfoResult(geometry, transform, location, rotation, scale)

geometry: ProcNode[TObjectInfo]

Alias for field number 0

transform: ProcNode[Vector]

Alias for field number 1

location: ProcNode[Vector]

Alias for field number 2

rotation: ProcNode[Vector]

Alias for field number 3

scale: ProcNode[Vector]

Alias for field number 4

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.object_info(object, as_instance=False, transform_space='ORIGINAL')[source]

Uses a ObjectInfo Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/input/scene/object_info.html

Parameters:
Return type:

ObjectInfoResult[TObjectInfo]

procfunc.nodes.geo.offset_corner_in_face(corner_index=0, offset=0)[source]

Uses a OffsetCornerInFace Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/topology/offset_corner_in_face.html

Parameters:
Return type:

ProcNode[int]

class procfunc.nodes.geo.OffsetPointInCurveResult[source]

Bases: NamedTuple

OffsetPointInCurveResult(is_valid_offset, point_index)

is_valid_offset: ProcNode[bool]

Alias for field number 0

point_index: ProcNode[int]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.offset_point_in_curve(point_index=0, offset=0)[source]

Uses a OffsetPointInCurve Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/topology/offset_point_in_curve.html

Parameters:
Return type:

OffsetPointInCurveResult

procfunc.nodes.geo.points(position, count=1, radius=0.1)[source]

Uses a Points Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/point/points.html

Parameters:
Return type:

ProcNode[MeshObject | CurveObject]

class procfunc.nodes.geo.PointsOfCurveResult[source]

Bases: NamedTuple

PointsOfCurveResult(point_index, total)

point_index: ProcNode[int]

Alias for field number 0

total: ProcNode[int]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.points_of_curve(curve_index=0, weights=0.0, sort_index=0)[source]

Uses a PointsOfCurve Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/topology/points_of_curve.html

Parameters:
Return type:

PointsOfCurveResult

procfunc.nodes.geo.points_to_curves(points, curve_group_id=0, weight=0.0)[source]

Uses a PointsToCurves Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/point/points_to_curves.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.points_to_sdf_grid(points, radius=0.5, voxel_size=0.3)[source]

Uses a PointsToSDFGrid Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/point/points_to_volume.html

Parameters:
Return type:

ProcNode

procfunc.nodes.geo.points_to_vertices(points, selection=True)[source]

Uses a PointsToVertices Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/point/points_to_vertices.html

Parameters:
Return type:

ProcNode[MeshObject]

procfunc.nodes.geo.points_to_volume(points, density=1.0, voxel_amount=64.0, radius=0.5, resolution_mode='VOXEL_AMOUNT')[source]

Uses a PointsToVolume Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/point/points_to_volume.html

Parameters:
Return type:

ProcNode[VolumeObject]

class procfunc.nodes.geo.ProximityResult[source]

Bases: NamedTuple

ProximityResult(position, distance, is_valid)

position: ProcNode[Vector]

Alias for field number 0

distance: ProcNode[float]

Alias for field number 1

is_valid: ProcNode[bool]

Alias for field number 2

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.proximity(geometry, sample_position, group_id=0, sample_group_id=0, target_element='FACES')[source]

Uses a Proximity Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/sample/geometry_proximity.html

Parameters:
Return type:

ProximityResult

class procfunc.nodes.geo.RaycastResult[source]

Bases: NamedTuple

RaycastResult(attribute, hit_distance, hit_normal, hit_position, is_hit)

attribute: ProcNode[Vector]

Alias for field number 0

hit_distance: ProcNode[float]

Alias for field number 1

hit_normal: ProcNode[Vector]

Alias for field number 2

hit_position: ProcNode[Vector]

Alias for field number 3

is_hit: ProcNode[bool]

Alias for field number 4

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.raycast(geometry, source_position, ray_direction, attribute=0, ray_length=100.0, mapping='INTERPOLATED', data_type=None)[source]

Uses a Raycast Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/sample/raycast.html

Parameters:
Return type:

RaycastResult

procfunc.nodes.geo.realize_instances(geometry, selection=True, realize_all=True, depth=0)[source]

Uses a RealizeInstances Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/instances/realize_instances.html

Parameters:
Return type:

ProcNode[MeshObject | CurveObject | Instances | VolumeObject]

procfunc.nodes.geo.remove_attribute(geometry, name='', pattern_mode='EXACT')[source]

Uses a RemoveAttribute Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/attribute/remove_named_attribute.html

Parameters:
Return type:

ProcNode[TAnyGeometry]

procfunc.nodes.geo.replace_material(geometry, old=None, new=None)[source]

Uses a ReplaceMaterial Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/material/replace_material.html

Parameters:
Return type:

ProcNode[MeshObject]

procfunc.nodes.geo.resample_curve_evaluated(curve, selection=True)[source]

Uses a ResampleCurve Geometry Node with mode=”EVALUATED”.

From Blender docs: Evaluate the spline’s points based on the resolution attribute for NURBS and Bézier splines. Changes nothing for poly splines. https://docs.blender.org/manual/en/latest/modeling/geometry_nodes/curve/operations/resample_curve.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.resample_curve_count(curve, selection=True, count=10)[source]

Uses a ResampleCurve Geometry Node with mode=”COUNT”. https://docs.blender.org/manual/en/latest/modeling/geometry_nodes/curve/operations/resample_curve.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.resample_curve_length(curve, selection=True, length=1.0)[source]

Uses a ResampleCurve Geometry Node with mode=”LENGTH”. https://docs.blender.org/manual/en/latest/modeling/geometry_nodes/curve/operations/resample_curve.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.reverse_curve(curve, selection=True)[source]

Uses a ReverseCurve Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/operations/reverse_curve.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.rotate_instances(instances, rotation=(0, 0, 0), pivot_point=(0, 0, 0), selection=True, local_space=True)[source]

Uses a RotateInstances Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/instances/rotate_instances.html

Parameters:
Return type:

ProcNode[Instances]

procfunc.nodes.geo.sdf_grid_boolean(a=0.0, b=0.0)[source]

Uses a SDFGridBoolean Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/volume/index.html

Parameters:
Return type:

ProcNode[MeshObject | CurveObject | Instances | VolumeObject]

class procfunc.nodes.geo.SampleCurveResult[source]

Bases: NamedTuple

SampleCurveResult(normal, position, tangent, value)

normal: ProcNode[Vector]

Alias for field number 0

position: ProcNode[Vector]

Alias for field number 1

tangent: ProcNode[Vector]

Alias for field number 2

value: ProcNode[TAttribute]

Alias for field number 3

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.sample_curve(curves, factor, curve_index=0, value=None, mode='FACTOR', use_all_curves=False, data_type=None)[source]

Uses a SampleCurve Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/sample/sample_curve.html

Parameters:
Return type:

SampleCurveResult

procfunc.nodes.geo.sample_curve_length(curves, length=0.0, curve_index=0, value=None, use_all_curves=False, data_type=None)[source]

Uses a SampleCurve Geometry Node with LENGTH mode.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/sample/sample_curve.html

Parameters:
Return type:

SampleCurveResult

procfunc.nodes.geo.sample_index(geometry, index=0, value=None, clamp=False, domain='POINT', data_type=None)[source]

Uses a SampleIndex Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/sample/sample_index.html

Parameters:
Return type:

ProcNode[TAttribute]

procfunc.nodes.geo.sample_nearest(geometry, sample_position, domain='POINT')[source]

Uses a SampleNearest Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/sample/sample_nearest.html

Parameters:
Return type:

ProcNode[int]

class procfunc.nodes.geo.SampleResult[source]

Bases: NamedTuple, Generic[TAttribute]

SampleResult(value, is_valid)

value: ProcNode[TAttribute]

Alias for field number 0

is_valid: ProcNode[bool]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.sample_nearest_surface(mesh, sample_position, value=None, group_id=0, sample_group_id=0, data_type=None)[source]

Uses a SampleNearestSurface Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/sample/sample_nearest_surface.html

Parameters:
Return type:

SampleResult[TAttribute]

procfunc.nodes.geo.sample_uv_surface(mesh, sample_uv, uv_map, value=None, data_type=None)[source]

Uses a SampleUVSurface Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/sample/sample_uv_surface.html

Parameters:
Return type:

SampleResult[TAttribute]

procfunc.nodes.geo.scale_elements(geometry, scale, center, selection=True, axis=None, domain='FACE', scale_mode='UNIFORM')[source]

Uses a ScaleElements Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/operations/scale_elements.html

Parameters:
Return type:

ProcNode[MeshObject | CurveObject | Instances | VolumeObject]

procfunc.nodes.geo.scale_instances(instances, scale=(1, 1, 1), center=(0, 0, 0), selection=True, local_space=True)[source]

Uses a ScaleInstances Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/instances/scale_instances.html

Parameters:
Return type:

ProcNode[Instances]

procfunc.nodes.geo.self_object()[source]

Uses a SelfObject Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/input/scene/self_object.html

Return type:

ProcNode[Object]

class procfunc.nodes.geo.SeparateComponentsResult[source]

Bases: NamedTuple

SeparateComponentsResult(mesh, curve, point_cloud, volume, instances)

mesh: ProcNode[MeshObject]

Alias for field number 0

curve: ProcNode[CurveObject]

Alias for field number 1

point_cloud: ProcNode[MeshObject | CurveObject]

Alias for field number 2

volume: ProcNode[VolumeObject]

Alias for field number 3

instances: ProcNode[Instances]

Alias for field number 4

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.separate_components(geometry)[source]

Uses a SeparateComponents Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/operations/separate_components.html

Parameters:

geometry (ProcNode[MeshObject | CurveObject | Instances | VolumeObject] | None)

Return type:

SeparateComponentsResult

class procfunc.nodes.geo.SeparateGeometryResult[source]

Bases: NamedTuple, Generic[TMeshOrCurve]

SeparateGeometryResult(selection, inverted)

selection: ProcNode[TMeshOrCurve]

Alias for field number 0

inverted: ProcNode[TMeshOrCurve]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.separate_geometry(geometry, selection=True, domain='POINT')[source]

Uses a SeparateGeometry Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/operations/separate_geometry.html

Parameters:
Return type:

SeparateGeometryResult[TMeshOrCurve]

procfunc.nodes.geo.set_curve_handle_positions(curve, position, offset, selection=True, mode='LEFT')[source]

Uses a SetCurveHandlePositions Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/write/set_handle_positions.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.set_curve_normal(curve, normal=None, selection=True, mode='MINIMUM_TWIST')[source]

Uses a SetCurveNormal Geometry Node.

The Normal socket only exists in FREE mode; MINIMUM_TWIST and Z_UP compute normals themselves, so normal is required for FREE and rejected otherwise.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/write/set_curve_normal.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.set_curve_radius(curve, selection=True, radius=0.005)[source]

Uses a SetCurveRadius Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/write/set_curve_radius.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.set_curve_tilt(curve, selection=True, tilt=0.0)[source]

Uses a SetCurveTilt Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/write/set_curve_tilt.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.set_id(geometry, selection=True, id=0)[source]

Uses a SetID Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/write/set_id.html

Parameters:
Return type:

ProcNode[TAnyGeometry]

procfunc.nodes.geo.set_instance_transform(instances, transform=None, selection=True)[source]

Uses a SetInstanceTransform Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/instances/set_instance_transform.html

Parameters:
Return type:

ProcNode[Instances]

procfunc.nodes.geo.set_material(geometry, material, selection=True)[source]

Uses a SetMaterial Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/material/set_material.html

Parameters:
Return type:

ProcNode[MeshObject]

procfunc.nodes.geo.set_material_index(geometry, selection=True, material_index=0)[source]

Uses a SetMaterialIndex Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/material/set_material_index.html

Parameters:
Return type:

ProcNode[MeshObject]

procfunc.nodes.geo.set_point_radius(points, selection=True, radius=0.05)[source]

Uses a SetPointRadius Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/point/set_point_radius.html

Parameters:
Return type:

ProcNode[PointCloudObject]

procfunc.nodes.geo.set_position(geometry, position=None, offset=None, selection=True)[source]

Uses a SetPosition Geometry Node.

A disconnected Position keeps the geometry’s existing position; a disconnected Offset applies no offset. We therefore omit these inputs entirely when None rather than passing None to a value socket (see strict-None policy).

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/write/set_position.html

Parameters:
Return type:

ProcNode[TAnyGeometry]

procfunc.nodes.geo.set_shade_smooth(geometry, selection=True, shade_smooth=True, domain='FACE')[source]

Uses a SetShadeSmooth Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/write/set_shade_smooth.html

Parameters:
Return type:

ProcNode[MeshObject]

procfunc.nodes.geo.set_spline_cyclic(curve, selection=True, cyclic=False)[source]

Uses a SetSplineCyclic Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/write/set_spline_cyclic.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.set_spline_resolution(curve, selection=True, resolution=12)[source]

Uses a SetSplineResolution Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/write/set_spline_resolution.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.sort_elements(geometry, selection=True, group_id=0, sort_weight=0.0, domain='POINT')[source]

Uses a SortElements Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/operations/sort_elements.html

Parameters:
Return type:

ProcNode[TAnyGeometry]

class procfunc.nodes.geo.SplineLengthResult[source]

Bases: NamedTuple

SplineLengthResult(length, point_count)

length: ProcNode[float]

Alias for field number 0

point_count: ProcNode[int]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.spline_length()[source]

Uses a SplineLength Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/read/spline_length.html

Return type:

SplineLengthResult

class procfunc.nodes.geo.SplineParameterResult[source]

Bases: NamedTuple

SplineParameterResult(factor, length, index)

factor: ProcNode[float]

Alias for field number 0

length: ProcNode[float]

Alias for field number 1

index: ProcNode[int]

Alias for field number 2

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.spline_parameter()[source]

Uses a SplineParameter Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/read/spline_parameter.html

Return type:

SplineParameterResult

procfunc.nodes.geo.split_edges(mesh, selection=True)[source]

Uses a SplitEdges Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/operations/split_edges.html

Parameters:
Return type:

ProcNode[MeshObject]

class procfunc.nodes.geo.SplitToInstancesResult[source]

Bases: NamedTuple

SplitToInstancesResult(instances, group_id)

instances: ProcNode[Instances]

Alias for field number 0

group_id: ProcNode[int]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.split_to_instances(geometry, selection=True, group_id=0, domain='POINT')[source]

Uses a SplitToInstances Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/operations/split_to_instances.html

Parameters:
Return type:

SplitToInstancesResult

procfunc.nodes.geo.store_named_attribute(geometry, name='', selection=True, value=None, domain='POINT', data_type=None)[source]

Uses a StoreNamedAttribute Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/attribute/store_named_attribute.html

Parameters:
Return type:

ProcNode[TMeshOrCurve]

procfunc.nodes.geo.store_named_grid(volume, grid=0.0, name='')[source]

Uses a StoreNamedGrid Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/volume/index.html

Parameters:
Return type:

ProcNode

procfunc.nodes.geo.string_join(strings, delimiter='')[source]

Uses a StringJoin Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/text/join_strings.html

Parameters:
Return type:

ProcNode[str]

class procfunc.nodes.geo.StringToCurvesResult[source]

Bases: NamedTuple

StringToCurvesResult(curve_instances, line, pivot_point)

curve_instances: ProcNode[Instances]

Alias for field number 0

line: ProcNode[CurveObject]

Alias for field number 1

pivot_point: ProcNode[Vector]

Alias for field number 2

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.string_to_curves(string, size=1.0, character_spacing=1.0, word_spacing=1.0, line_spacing=1.0, text_box_width=0.0, align_x='LEFT', align_y='TOP_BASELINE', overflow='OVERFLOW', pivot_mode='BOTTOM_LEFT')[source]

Uses a StringToCurves Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/utilities/text/string_to_curves.html

Parameters:
Return type:

StringToCurvesResult

procfunc.nodes.geo.subdivide_curve(curve, cuts=1)[source]

Uses a SubdivideCurve Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/operations/subdivide_curve.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.subdivide_mesh(mesh, level=1)[source]

Uses a SubdivideMesh Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/operations/subdivide_mesh.html

Parameters:
Return type:

ProcNode[MeshObject]

procfunc.nodes.geo.subdivision_surface(mesh, level=1, edge_crease=0.0, vertex_crease=0.0, boundary_smooth='ALL', uv_smooth='PRESERVE_BOUNDARIES')[source]

Uses a SubdivisionSurface Geometry Node.

See: http://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/operations/mesh/subdivision_surface.html

Parameters:
Return type:

ProcNode[MeshObject]

procfunc.nodes.geo.transform(geometry, translation=(0, 0, 0), rotation=(0, 0, 0), scale=(1, 1, 1))[source]

Uses a Transform Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/geometry/operations/transform_geometry.html

Parameters:
Return type:

ProcNode[TMeshOrCurve]

procfunc.nodes.geo.transform_by_matrix(geometry, matrix)[source]
Parameters:
procfunc.nodes.geo.translate_instances(instances, translation=(0, 0, 0), selection=True, local_space=True)[source]

Uses a TranslateInstances Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/instances/translate_instances.html

Parameters:
Return type:

ProcNode[Instances]

procfunc.nodes.geo.triangulate(mesh, selection=True, minimum_vertices=4, ngon_method='BEAUTY', quad_method='SHORTEST_DIAGONAL')[source]

Uses a Triangulate Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/operations/triangulate.html

Parameters:
Return type:

ProcNode[MeshObject]

procfunc.nodes.geo.trim_curve(curve, selection=True, start=0.0, end=1.0, mode='FACTOR')[source]

Uses a TrimCurve Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/curve/operations/trim_curve.html

Parameters:
Return type:

ProcNode[CurveObject]

procfunc.nodes.geo.uv_pack_islands(uv, selection=True, margin=0.001, rotate=True)[source]

Uses a UVPackIslands Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/uv/pack_uv_islands.html

Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.geo.uv_unwrap(selection=True, seam=False, margin=0.001, fill_holes=True, method='ANGLE_BASED')[source]

Uses a UVUnwrap Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/uv/uv_unwrap.html

Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.geo.vertex_of_corner(corner_index=0)[source]

Uses a VertexOfCorner Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/mesh/topology/vertex_of_corner.html

Parameters:

corner_index (ProcNode[int] | int)

Return type:

ProcNode[int]

class procfunc.nodes.geo.ViewportTransformResult[source]

Bases: NamedTuple

ViewportTransformResult(projection, view, is_orthographic)

projection: ProcNode

Alias for field number 0

view: ProcNode

Alias for field number 1

is_orthographic: ProcNode[bool]

Alias for field number 2

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.geo.viewport_transform()[source]

Uses a ViewportTransform Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/input/scene/viewport_transform.html

Return type:

ViewportTransformResult

procfunc.nodes.geo.volume_cube(density=1.0, background=0.0, min=(-1, -1, -1), max=(1, 1, 1), resolution_x=32, resolution_y=32, resolution_z=32)[source]

Uses a VolumeCube Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/volume/primitives/volume_cube.html

Parameters:
Return type:

ProcNode[VolumeObject]

procfunc.nodes.geo.volume_to_mesh(volume, threshold=0.1, adaptivity=0.0, resolution_mode='GRID')[source]

Uses a VolumeToMesh Geometry Node.

See: https://docs.blender.org/manual/en/4.2/modeling/geometry_nodes/volume/operations/volume_to_mesh.html

Parameters:
Return type:

ProcNode[MeshObject]

pf.nodes.math

Math and Vector Math Node bindings for Blender.

Also hosts general-purpose value/vector utilities (mix, map_range, combine/separate xyz, curves, constant) that work across shader and geometry trees - they live here rather than in shader.py or func.py to avoid implying they are specific to those contexts.

procfunc.nodes.math.clamp(value, min=0.0, max=1.0, clamp_type='MINMAX')[source]

Uses a Clamp Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/converter/clamp.html

Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.add(a, b)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.subtract(a, b)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.multiply(a, b)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.multiply_add(a, b, addend)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.divide(numerator, denominator)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.power(base, exponent)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.logarithm(value, base)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.sqrt(value)[source]
Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode[float]

procfunc.nodes.math.inverse_sqrt(value)[source]
Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode[float]

procfunc.nodes.math.absolute(value)[source]
Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode[float]

procfunc.nodes.math.exponent(value)[source]
Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode[float]

procfunc.nodes.math.minimum(a, b)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.maximum(a, b)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.less_than(a, b)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.greater_than(a, b)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.sign(value)[source]
Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode[float]

procfunc.nodes.math.compare(a, b, epsilon=0.001)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.smooth_minimum(a, b, distance=0.0)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.smooth_maximum(a, b, distance=0.0)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.round(value)[source]
Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode[float]

procfunc.nodes.math.floor(value)[source]
Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode[float]

procfunc.nodes.math.ceil(value)[source]
Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode[float]

procfunc.nodes.math.truncate(value)[source]
Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode[float]

procfunc.nodes.math.fraction(value)[source]
Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode[float]

procfunc.nodes.math.modulo(a, b)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.floor_mod(a, b)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.wrap(value, max_val=1.0, min_val=0.0)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.snap(value, increment=1.0)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.pingpong(value, scale=1.0)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.sin(value)[source]
Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode[float]

procfunc.nodes.math.cos(value)[source]
Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode[float]

procfunc.nodes.math.tan(value)[source]
Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode[float]

procfunc.nodes.math.asin(value)[source]
Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode[float]

procfunc.nodes.math.acos(value)[source]
Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode[float]

procfunc.nodes.math.atan(value)[source]
Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode[float]

procfunc.nodes.math.atan2(y, x)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.sinh(value)[source]
Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode[float]

procfunc.nodes.math.cosh(value)[source]
Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode[float]

procfunc.nodes.math.tanh(value)[source]
Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode[float]

procfunc.nodes.math.deg_to_rad(value)[source]
Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode[float]

procfunc.nodes.math.rad_to_deg(value)[source]
Parameters:

value (ProcNode[float] | float)

Return type:

ProcNode[float]

procfunc.nodes.math.vector_add(a, b)[source]

Add two vectors.

Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_subtract(a, b)[source]
Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_multiply(a, b)[source]
Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_multiply_add(a, b, addend)[source]
Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_divide(a, b)[source]
Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_cross_product(a, b)[source]
Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_project(vector, onto)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.vector_reflect(a, normal)[source]
Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_refract(incident, normal, ior=1.0)[source]
Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_faceforward(vector, surface, normal)[source]
Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_dot_product(a, b)[source]
Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_distance(a, b)[source]
Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_length(vector)[source]
Parameters:

vector (ProcNode[Vector] | Vector)

Return type:

ProcNode[float]

procfunc.nodes.math.vector_scale(vector, scale)[source]
Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_normalize(vector)[source]
Parameters:

vector (ProcNode[Vector] | Vector)

Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_wrap(vector, max_val, min_val)[source]
Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_snap(a, b)[source]
Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_floor(vector)[source]
Parameters:

vector (ProcNode[Vector] | Vector)

Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_ceil(vector)[source]
Parameters:

vector (ProcNode[Vector] | Vector)

Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_modulo(a, b)[source]
Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_fraction(vector)[source]
Parameters:

vector (ProcNode[Vector] | Vector)

Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_absolute(vector)[source]
Parameters:

vector (ProcNode[Vector] | Vector)

Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_minimum(a, b)[source]
Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_maximum(a, b)[source]
Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_sine(vector)[source]
Parameters:

vector (ProcNode[Vector] | Vector)

Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_cosine(vector)[source]
Parameters:

vector (ProcNode[Vector] | Vector)

Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_tangent(vector)[source]
Parameters:

vector (ProcNode[Vector] | Vector)

Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_rotate_axis_angle(vector, center=(0, 0, 0), axis=(0, 0, 1), angle=0.0, invert=False)[source]

Uses a VectorRotate Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/vector/vector_rotate.html

Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_rotate_euler(vector, center=(0, 0, 0), rotation=(0, 0, 0), invert=False)[source]
Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.math.vector_transform(vector, convert_from='WORLD', convert_to='OBJECT', vector_type='VECTOR')[source]

Uses a VectorTransform Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/vector/transform.html

Parameters:
  • vector (ProcNode[Vector] | Vector)

  • convert_from (Literal['WORLD', 'OBJECT', 'CAMERA'])

  • convert_to (Literal['WORLD', 'OBJECT', 'CAMERA'])

  • vector_type (Literal['POINT', 'VECTOR', 'NORMAL'])

Return type:

ProcNode[Vector]

procfunc.nodes.math.constant(value)[source]

Replaces all nodes which just store a constant e.g. ShaderNodeValue, ShaderNodeRGB, FunctionNodeInput*, etc

Dispatches on python type to a contextual node, resolved per tree type at execution time (e.g. vector -> FunctionNodeInputVector in geometry trees, a CombineXYZ with component socket defaults elsewhere).

Parameters:

value (TConstant)

Return type:

ProcNode[TConstant]

procfunc.nodes.math.mix(a, b, factor, clamp_factor=True, factor_mode='UNIFORM', data_type=None)[source]

Uses MixNode to mix float, vector, or color fields with a plain MIX blend.

For colors, prefer mix_rgb when you need a non-MIX blend mode or clamp_result; this function hardcodes blend_type=”MIX” and clamp_result=False.

Parameters:
Return type:

ProcNode[TMix]

procfunc.nodes.math.float_curve(factor, value, curve=None, handle_type='AUTO', use_clip=True)[source]

Uses a FloatCurve Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/converter/float_curve.html

Parameters:
Return type:

ProcNode[float]

procfunc.nodes.math.vector_curve(vector, fac=1.0, curves=None)[source]

Uses a VectorCurve Shader Node.

fac blends between the input and curve-mapped vector; the compositor variant (CompositorNodeCurveVec) has no Fac socket and always applies the curve fully, so fac is accepted there only at its no-op value 1.0.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/vector/curves.html

Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.math.combine_xyz(x=0.0, y=0.0, z=0.0)[source]

Uses a CombineXYZ Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/converter/combine_xyz.html

Parameters:
Return type:

ProcNode[Vector]

class procfunc.nodes.math.SeparateXyzResult[source]

Bases: NamedTuple

SeparateXyzResult(x, y, z)

x: ProcNode[float]

Alias for field number 0

y: ProcNode[float]

Alias for field number 1

z: ProcNode[float]

Alias for field number 2

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.math.separate_xyz(vector)[source]

Uses a SeparateXYZ Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/converter/separate_xyz.html

Parameters:

vector (ProcNode[Vector] | Vector)

Return type:

SeparateXyzResult

procfunc.nodes.math.map_range(value, from_max=1.0, from_min=0.0, to_max=1.0, to_min=0.0, clamp=True, interpolation_type='LINEAR', data_type=None)[source]

Uses a MapRange Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/converter/map_range.html

Parameters:
Return type:

ProcNode

pf.nodes.shader

procfunc.nodes.shader.add_shader(a, b)[source]

Uses a AddShader Shader Node.

Both inputs are required: an unconnected shader input renders pure black, so callers must pass an explicit None to deliberately leave one disconnected.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/add.html

Parameters:
Return type:

ProcNode[Shader]

class procfunc.nodes.shader.AmbientOcclusionResult[source]

Bases: NamedTuple

AmbientOcclusionResult(color, ao)

color: ProcNode[Color]

Alias for field number 0

ao: ProcNode[float]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.shader.ambient_occlusion(color=(1, 1, 1, 1), distance=1.0, normal=None, inside=False, only_local=False, samples=16)[source]

Uses a AmbientOcclusion Shader Node.

Parameters:
  • normal (ProcNode[Vector] | Vector) – Avoid using this input. We recommend using the shader’s Displacement output instead, which supports bumpmapping OR real mesh render/export.

  • color (ProcNode[Color] | Color)

  • distance (ProcNode[float] | float)

  • inside (bool)

  • only_local (bool)

  • samples (int)

Return type:

AmbientOcclusionResult

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/input/ao.html

class procfunc.nodes.shader.AttributeResult[source]

Bases: NamedTuple

AttributeResult(color, vector, fac, alpha)

color: ProcNode[Color]

Alias for field number 0

vector: ProcNode[Vector]

Alias for field number 1

fac: ProcNode[float]

Alias for field number 2

alpha: ProcNode[float]

Alias for field number 3

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.shader.attribute(attribute_name='', attribute_type='GEOMETRY')[source]

Uses a Attribute Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/input/attribute.html

Parameters:
  • attribute_name (str)

  • attribute_type (Literal['GEOMETRY', 'OBJECT', 'INSTANCER', 'VIEW_LAYER'])

Return type:

AttributeResult

procfunc.nodes.shader.background(color=(0.8, 0.8, 0.8, 1), strength=1.0)[source]

Uses a Background Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/background.html

Parameters:
Return type:

ProcNode[Shader]

procfunc.nodes.shader.bevel(radius=0.05, normal=None, samples=4)[source]

Uses a Bevel Shader Node.

Parameters:
  • normal (ProcNode[Vector] | Vector) – Avoid using this input. We recommend using the shader’s Displacement output instead, which supports bumpmapping OR real mesh render/export.

  • radius (ProcNode[float] | float)

  • samples (int)

Return type:

ProcNode[Vector]

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/input/bevel.html

procfunc.nodes.shader.anisotropic_bsdf(color=(0.8, 0.8, 0.8, 1), roughness=0.5, anisotropy=0.0, rotation=0.0, normal=None, tangent=(0, 0, 0), distribution='MULTI_GGX')[source]

Uses a BsdfAnisotropic Shader Node.

Parameters:
  • normal (ProcNode[Vector] | Vector) – Avoid using this input. We recommend using the shader’s Displacement output instead, which supports bumpmapping OR real mesh render/export.

  • color (ProcNode[Color] | Color)

  • roughness (ProcNode[float] | float)

  • anisotropy (ProcNode[float] | float)

  • rotation (ProcNode[float] | float)

  • tangent (ProcNode[Vector] | Vector)

  • distribution (Literal['BECKMANN', 'GGX', 'ASHIKHMIN_SHIRLEY', 'MULTI_GGX'])

Return type:

ProcNode[Shader]

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/principled.html

procfunc.nodes.shader.diffuse_bsdf(color=(0.8, 0.8, 0.8, 1), roughness=0.0, normal=None)[source]

Uses a BsdfDiffuse Shader Node.

Parameters:
  • normal (ProcNode[Vector] | Vector) – Avoid using this input. We recommend using the shader’s Displacement output instead, which supports bumpmapping OR real mesh render/export.

  • color (ProcNode[Color] | Color)

  • roughness (ProcNode[float] | float)

Return type:

ProcNode[Shader]

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/diffuse.html

procfunc.nodes.shader.glass_bsdf(color=(1, 1, 1, 1), roughness=0.0, ior=1.5, normal=None, distribution='MULTI_GGX')[source]

Uses a BsdfGlass Shader Node.

Parameters:
  • normal (ProcNode[Vector] | Vector) – Avoid using this input. We recommend using the shader’s Displacement output instead, which supports bumpmapping OR real mesh render/export.

  • color (ProcNode[Color] | Color)

  • roughness (ProcNode[float] | float)

  • ior (ProcNode[float] | float)

  • distribution (Literal['BECKMANN', 'GGX', 'MULTI_GGX'])

Return type:

ProcNode[Shader]

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/glass.html

procfunc.nodes.shader.hair_bsdf(color=(0.8, 0.8, 0.8, 1), offset=0.0, roughness_u=0.1, roughness_v=1.0, tangent=(0, 0, 0), component='Reflection')[source]

Uses a BsdfHair Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/hair.html

Parameters:
Return type:

ProcNode[Shader]

procfunc.nodes.shader.principled_hair_bsdf(color=(0.017513, 0.005763, 0.002059, 1), roughness=0.3, radial_roughness=0.3, coat=0.0, ior=1.55, offset=0.034907, random_roughness=0.0, random=0.0, model='CHIANG', parametrization='COLOR')[source]

Uses a BsdfHairPrincipled Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/hair_principled.html

Parameters:
Return type:

ProcNode[Shader]

procfunc.nodes.shader.principled_bsdf(base_color=(0.8, 0.8, 0.8, 1), metallic=0.0, roughness=0.5, ior=1.5, alpha=1.0, normal=None, subsurface_method='RANDOM_WALK', subsurface_weight=0.0, subsurface_radius=(1, 0.2, 0.1), subsurface_scale=0.05, subsurface_ior=None, subsurface_anisotropy=None, distribution='MULTI_GGX', specular_ior_level=0.5, specular_tint=(1, 1, 1, 1), anisotropic=0.0, anisotropic_rotation=0.0, tangent=None, transmission_weight=0.0, coat_weight=0.0, coat_roughness=0.03, coat_ior=1.5, coat_tint=(1, 1, 1, 1), coat_normal=None, sheen_weight=0.0, sheen_roughness=0.5, sheen_tint=(1, 1, 1, 1), emission_color=(1, 1, 1, 1), emission_strength=0.0, thin_film_thickness=0.0, thin_film_ior=1.33)[source]

Uses a BsdfPrincipled Shader Node.

Parameters:
Return type:

ProcNode[Shader]

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/principled.html

procfunc.nodes.shader.ray_portal_bsdf(color=(1, 1, 1, 1), position=(0, 0, 0), direction=(0, 0, 0))[source]

Uses a BsdfRayPortal Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/ray_portal.html

Parameters:
Return type:

ProcNode[Shader]

procfunc.nodes.shader.refraction_bsdf(color=(1, 1, 1, 1), roughness=0.0, ior=1.45, normal=None, distribution='BECKMANN')[source]

Uses a BsdfRefraction Shader Node.

Parameters:
  • normal (ProcNode[Vector] | Vector) – Avoid using this input. We recommend using the shader’s Displacement output instead, which supports bumpmapping OR real mesh render/export.

  • color (ProcNode[Color] | Color)

  • roughness (ProcNode[float] | float)

  • ior (ProcNode[float] | float)

  • distribution (Literal['BECKMANN', 'GGX'])

Return type:

ProcNode[Shader]

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/refraction.html

procfunc.nodes.shader.sheen_bsdf(color=(0.8, 0.8, 0.8, 1), roughness=0.5, normal=None, distribution='MICROFIBER')[source]

Uses a BsdfSheen Shader Node.

Parameters:
  • normal (ProcNode[Vector] | Vector) – Avoid using this input. We recommend using the shader’s Displacement output instead, which supports bumpmapping OR real mesh render/export.

  • color (ProcNode[Color] | Color)

  • roughness (ProcNode[float] | float)

  • distribution (Literal['ASHIKHMIN', 'MICROFIBER'])

Return type:

ProcNode[Shader]

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/sheen.html

procfunc.nodes.shader.toon_bsdf(color=(0.8, 0.8, 0.8, 1), size=0.5, smooth=0.0, normal=None, component='DIFFUSE')[source]

Uses a BsdfToon Shader Node.

Parameters:
  • normal (ProcNode[Vector] | Vector) – Avoid using this input. We recommend using the shader’s Displacement output instead, which supports bumpmapping OR real mesh render/export.

  • color (ProcNode[Color] | Color)

  • size (ProcNode[float] | float)

  • smooth (ProcNode[float] | float)

  • component (Literal['DIFFUSE', 'GLOSSY'])

Return type:

ProcNode[Shader]

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/toon.html

procfunc.nodes.shader.translucent_bsdf(color=(0.8, 0.8, 0.8, 1), normal=None)[source]

Uses a BsdfTranslucent Shader Node.

Parameters:
  • normal (ProcNode[Vector] | Vector) – Avoid using this input. We recommend using the shader’s Displacement output instead, which supports bumpmapping OR real mesh render/export.

  • color (ProcNode[Color] | Color)

Return type:

ProcNode[Shader]

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/translucent.html

procfunc.nodes.shader.transparent_bsdf(color=(1, 1, 1, 1))[source]

Uses a BsdfTransparent Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/transparent.html

Parameters:

color (ProcNode[Color] | Color)

Return type:

ProcNode[Shader]

procfunc.nodes.shader.bump(strength=1.0, distance=1.0, height=1.0, normal=None, invert=False)[source]

Uses a Bump Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/vector/bump.html

Parameters:
Return type:

ProcNode[Vector]

class procfunc.nodes.shader.CameraDataResult[source]

Bases: NamedTuple

CameraDataResult(view_vector, view_z_depth, view_distance)

view_vector: ProcNode[Vector]

Alias for field number 0

view_z_depth: ProcNode[float]

Alias for field number 1

view_distance: ProcNode[float]

Alias for field number 2

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.shader.camera_data()[source]

Uses a CameraData Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/input/camera_data.html

Return type:

CameraDataResult

procfunc.nodes.shader.displacement(height=0.0, midlevel=0.5, scale=1.0, normal=None, space='OBJECT')[source]

Uses a Displacement Shader Node.

A disconnected Normal defaults to the surface normal, so we omit the input entirely when None rather than passing None to a value socket (strict-None policy).

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/vector/displacement.html

Parameters:
Return type:

ProcNode[Vector]

procfunc.nodes.shader.eevee_specular(base_color=(0.8, 0.8, 0.8, 1), specular=(0.03, 0.03, 0.03, 1), roughness=0.2, emissive_color=(0, 0, 0, 1), transparency=0.0, normal=None, clear_coat=0.0, clear_coat_roughness=0.0, clear_coat_normal=None)[source]

Uses a EeveeSpecular Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/specular_bsdf.html

Parameters:
Return type:

ProcNode[Shader]

procfunc.nodes.shader.emission(color=(1, 1, 1, 1), strength=1.0)[source]

Uses a Emission Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/emission.html

Parameters:
Return type:

ProcNode[Shader]

procfunc.nodes.shader.fresnel(ior=1.5, normal=None)[source]

Uses a Fresnel Shader Node.

Parameters:
  • normal (ProcNode[Vector] | Vector) – Avoid using this input. We recommend using the shader’s Displacement output instead, which supports bumpmapping OR real mesh render/export.

  • ior (ProcNode[float] | float)

Return type:

ProcNode[float]

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/input/fresnel.html

class procfunc.nodes.shader.HairInfoResult[source]

Bases: NamedTuple

HairInfoResult(is_strand, intercept, length, thickness, tangent_normal, random)

is_strand: ProcNode[float]

Alias for field number 0

intercept: ProcNode[float]

Alias for field number 1

length: ProcNode[float]

Alias for field number 2

thickness: ProcNode[float]

Alias for field number 3

tangent_normal: ProcNode[Vector]

Alias for field number 4

random: ProcNode[float]

Alias for field number 5

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.shader.hair_info()[source]

Uses a HairInfo Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/input/hair_info.html

Return type:

HairInfoResult

procfunc.nodes.shader.holdout()[source]

Uses a Holdout Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/holdout.html

Return type:

ProcNode[Shader]

procfunc.nodes.shader.invert(fac=1.0, color=(0, 0, 0, 1))[source]

Uses a Invert Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/color/invert_color.html

Parameters:
Return type:

ProcNode[Color]

class procfunc.nodes.shader.LayerWeightResult[source]

Bases: NamedTuple

LayerWeightResult(fresnel, facing)

fresnel: ProcNode[float]

Alias for field number 0

facing: ProcNode[float]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.shader.layer_weight(blend=0.5, normal=(0.0, 0.0, 0.0))[source]

Uses a LayerWeight Shader Node.

Parameters:
  • normal (ProcNode[Vector] | Vector) – Avoid using this input. We recommend using the shader’s Displacement output instead, which supports bumpmapping OR real mesh render/export.

  • blend (ProcNode[float] | float)

Return type:

LayerWeightResult

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/input/layer_weight.html

class procfunc.nodes.shader.LightFalloffResult[source]

Bases: NamedTuple

LightFalloffResult(quadratic, linear, constant)

quadratic: ProcNode[float]

Alias for field number 0

linear: ProcNode[float]

Alias for field number 1

constant: ProcNode[float]

Alias for field number 2

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.shader.light_falloff(strength=100.0, smooth=0.0)[source]

Uses a LightFalloff Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/color/light_falloff.html

Parameters:
Return type:

LightFalloffResult

class procfunc.nodes.shader.LightPathResult[source]

Bases: NamedTuple

LightPathResult(is_camera_ray, is_shadow_ray, is_diffuse_ray, is_glossy_ray, is_singular_ray, is_reflection_ray, is_transmission_ray, ray_length, ray_depth, diffuse_depth, glossy_depth, transparent_depth, transmission_depth)

is_camera_ray: ProcNode[float]

Alias for field number 0

is_shadow_ray: ProcNode[float]

Alias for field number 1

is_diffuse_ray: ProcNode[float]

Alias for field number 2

is_glossy_ray: ProcNode[float]

Alias for field number 3

is_singular_ray: ProcNode[float]

Alias for field number 4

is_reflection_ray: ProcNode[float]

Alias for field number 5

is_transmission_ray: ProcNode[float]

Alias for field number 6

ray_length: ProcNode[float]

Alias for field number 7

ray_depth: ProcNode[float]

Alias for field number 8

diffuse_depth: ProcNode[float]

Alias for field number 9

glossy_depth: ProcNode[float]

Alias for field number 10

transparent_depth: ProcNode[float]

Alias for field number 11

transmission_depth: ProcNode[float]

Alias for field number 12

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.shader.light_path()[source]

Uses a LightPath Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/input/light_path.html

Return type:

LightPathResult

procfunc.nodes.shader.mapping(vector=(0, 0, 0), location=(0, 0, 0), rotation=(0, 0, 0), scale=(1, 1, 1), vector_type='POINT')[source]

Uses a Mapping Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/vector/mapping.html

Parameters:
  • vector (ProcNode[Vector] | Vector)

  • location (ProcNode[Vector] | Vector)

  • rotation (ProcNode[Vector] | Vector)

  • scale (ProcNode[Vector] | Vector)

  • vector_type (Literal['POINT', 'TEXTURE', 'VECTOR', 'NORMAL'])

Return type:

ProcNode[Vector]

procfunc.nodes.shader.mix_shader(factor, a, b)[source]

Uses a MixShader Shader Node.

All inputs are required: an unconnected shader input renders pure black, so callers must pass an explicit None to deliberately leave one disconnected.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/mix.html

Parameters:
Return type:

ProcNode[Shader]

class procfunc.nodes.shader.NormalResult[source]

Bases: NamedTuple

NormalResult(normal, dot)

normal: ProcNode[Vector]

Alias for field number 0

dot: ProcNode[float]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.shader.normal(normal=(0, 0, 1))[source]

Uses a Normal Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/vector/normal.html

Parameters:

normal (ProcNode[Vector] | Vector)

Return type:

NormalResult

procfunc.nodes.shader.normal_map(strength=1.0, color=(0.5, 0.5, 1, 1), space='TANGENT', uv_map='')[source]

Uses a NormalMap Shader Node.

This node is discouraged. We recommend using the shader’s Displacement output instead, which supports bumpmapping OR real mesh render/export.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/vector/normal_map.html

Parameters:
Return type:

ProcNode[Vector]

class procfunc.nodes.shader.ObjectInfoResult[source]

Bases: NamedTuple

ObjectInfoResult(location, color, alpha, object_index, material_index, random)

location: ProcNode[Vector]

Alias for field number 0

color: ProcNode[Color]

Alias for field number 1

alpha: ProcNode[float]

Alias for field number 2

object_index: ProcNode[int]

Alias for field number 3

material_index: ProcNode[int]

Alias for field number 4

random: ProcNode[float]

Alias for field number 5

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.shader.object_info()[source]

Uses a ObjectInfo Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/input/object_info.html

Return type:

ObjectInfoResult

class procfunc.nodes.shader.ParticleInfoResult[source]

Bases: NamedTuple

ParticleInfoResult(index, random, age, lifetime, location, size, velocity, angular_velocity)

index: ProcNode[int]

Alias for field number 0

random: ProcNode[float]

Alias for field number 1

age: ProcNode[float]

Alias for field number 2

lifetime: ProcNode[float]

Alias for field number 3

location: ProcNode[Vector]

Alias for field number 4

size: ProcNode[float]

Alias for field number 5

velocity: ProcNode[Vector]

Alias for field number 6

angular_velocity: ProcNode[Vector]

Alias for field number 7

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.shader.particle_info()[source]

Uses a ParticleInfo Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/input/particle_info.html

Return type:

ParticleInfoResult

class procfunc.nodes.shader.PointInfoResult[source]

Bases: NamedTuple

PointInfoResult(position, radius, random)

position: ProcNode[Vector]

Alias for field number 0

radius: ProcNode[float]

Alias for field number 1

random: ProcNode[float]

Alias for field number 2

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.shader.point_info()[source]

Uses a PointInfo Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/input/point_info.html

Return type:

PointInfoResult

procfunc.nodes.shader.script(bytecode='', bytecode_hash='', filepath='', mode='INTERNAL', script=None, use_auto_update=False)[source]

Uses a Script Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/osl.html

Parameters:
  • bytecode (str)

  • bytecode_hash (str)

  • filepath (str)

  • mode (Literal['INTERNAL', 'EXTERNAL'])

  • script (Any)

  • use_auto_update (bool)

Return type:

ProcNode[Shader]

class procfunc.nodes.shader.ShaderToRGBResult[source]

Bases: NamedTuple

ShaderToRGBResult(color, alpha)

color: ProcNode[Color]

Alias for field number 0

alpha: ProcNode[float]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.shader.shader_to_rgb(shader)[source]

Uses a ShaderToRGB Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/converter/shader_to_rgb.html

Parameters:

shader (ProcNode[Shader] | None)

Return type:

ShaderToRGBResult

procfunc.nodes.shader.squeeze(value=0.0, width=1.0, center=0.0)[source]

Uses a Squeeze Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/converter/map_range.html

Parameters:
Return type:

ProcNode[float]

procfunc.nodes.shader.subsurface_scattering(color=(0.8, 0.8, 0.8, 1), scale=0.05, radius=(1, 0.2, 0.1), ior=1.4, roughness=1.0, anisotropy=0.0, normal=(0.0, 0.0, 0.0), falloff='RANDOM_WALK')[source]

Uses a SubsurfaceScattering Shader Node.

Parameters:
Return type:

ProcNode[Shader]

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/volume_scatter.html

procfunc.nodes.shader.tangent(axis='Z', direction_type='RADIAL', uv_map='')[source]

Uses a Tangent Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/input/tangent.html

Parameters:
  • axis (Literal['X', 'Y', 'Z'])

  • direction_type (Literal['RADIAL', 'UV_MAP'])

  • uv_map (str)

Return type:

ProcNode[Vector]

class procfunc.nodes.shader.CoordResult[source]

Bases: NamedTuple

CoordResult(generated, normal, uv, object, camera, window, reflection)

generated: ProcNode[Vector]

Alias for field number 0

normal: ProcNode[Vector]

Alias for field number 1

uv: ProcNode[Vector]

Alias for field number 2

object: ProcNode[Vector]

Alias for field number 3

camera: ProcNode[Vector]

Alias for field number 4

window: ProcNode[Vector]

Alias for field number 5

reflection: ProcNode[Vector]

Alias for field number 6

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.shader.coord(from_instancer=False, object=None)[source]

Uses a TexCoord Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/input/texture_coordinate.html

Parameters:
  • from_instancer (bool)

  • object (Any)

Return type:

CoordResult

class procfunc.nodes.shader.GeometryResult[source]

Bases: NamedTuple

GeometryResult(position, normal, tangent, true_normal, incoming, parametric, backfacing, pointiness, random_per_island)

position: ProcNode[Vector]

Alias for field number 0

normal: ProcNode[Vector]

Alias for field number 1

tangent: ProcNode[Vector]

Alias for field number 2

true_normal: ProcNode[Vector]

Alias for field number 3

incoming: ProcNode[Vector]

Alias for field number 4

parametric: ProcNode[Vector]

Alias for field number 5

backfacing: ProcNode[float]

Alias for field number 6

pointiness: ProcNode[float]

Alias for field number 7

random_per_island: ProcNode[float]

Alias for field number 8

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.shader.geometry()[source]
Return type:

GeometryResult

procfunc.nodes.shader.uv_along_stroke(use_tips=False)[source]

Uses a UVAlongStroke Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/input/uv_map.html

Parameters:

use_tips (bool)

Return type:

ProcNode[Vector]

procfunc.nodes.shader.uv_map(from_instancer=False, uv_map='')[source]

Uses a UVMap Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/input/uv_map.html

Parameters:
  • from_instancer (bool)

  • uv_map (str)

Return type:

ProcNode[Vector]

procfunc.nodes.shader.vector_displacement(vector=(0.8, 0.8, 0.8, 1), midlevel=0.0, scale=1.0, space='TANGENT')[source]

Uses a VectorDisplacement Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/vector/vector_displacement.html

Parameters:
Return type:

ProcNode[Vector]

class procfunc.nodes.shader.VertexColorResult[source]

Bases: NamedTuple

VertexColorResult(color, alpha)

color: ProcNode[Color]

Alias for field number 0

alpha: ProcNode[float]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.shader.vertex_color(layer_name='')[source]

Uses a VertexColor Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/input/vertex_color.html

Parameters:

layer_name (str)

Return type:

VertexColorResult

procfunc.nodes.shader.volume_absorption(color=(0.8, 0.8, 0.8, 1), density=1.0)[source]

Uses a VolumeAbsorption Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/volume_absorption.html

Parameters:
Return type:

ProcNode[Shader]

class procfunc.nodes.shader.VolumeInfoResult[source]

Bases: NamedTuple

VolumeInfoResult(color, density, flame, temperature)

color: ProcNode[Color]

Alias for field number 0

density: ProcNode[float]

Alias for field number 1

flame: ProcNode[float]

Alias for field number 2

temperature: ProcNode[float]

Alias for field number 3

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.shader.volume_info()[source]

Uses a VolumeInfo Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/input/volume_info.html

Return type:

VolumeInfoResult

procfunc.nodes.shader.volume_principled(color=(0.5, 0.5, 0.5, 1), color_attribute='', density=1.0, density_attribute='density', anisotropy=0.0, absorption_color=(0, 0, 0, 1), emission_strength=0.0, emission_color=(1, 1, 1, 1), blackbody_intensity=0.0, blackbody_tint=(1, 1, 1, 1), temperature=1000.0, temperature_attribute='temperature')[source]

Uses a VolumePrincipled Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/volume_principled.html

Parameters:
Return type:

ProcNode[Shader]

procfunc.nodes.shader.volume_scatter(color=(0.8, 0.8, 0.8, 1), density=1.0, anisotropy=0.0)[source]

Uses a VolumeScatter Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/shader/volume_scatter.html

Parameters:
Return type:

ProcNode[Shader]

procfunc.nodes.shader.wavelength(wavelength=500.0)[source]

Uses a Wavelength Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/converter/wavelength.html

Parameters:

wavelength (ProcNode[float] | float)

Return type:

ProcNode[Color]

procfunc.nodes.shader.wireframe(size=0.01, use_pixel_size=False)[source]

Uses a Wireframe Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/input/wireframe.html

Parameters:
Return type:

ProcNode[float]

pf.nodes.texture

Texture node bindings for Blender (ShaderNodeTex*).

These pattern-generator nodes (noise, voronoi, etc.) work in BOTH shader and geometry node trees. They live in their own module to avoid the misleading implication that they are shader-only.

class procfunc.nodes.texture.TextureResult[source]

Bases: NamedTuple

TextureResult(fac, color)

fac: ProcNode[float]

Alias for field number 0

color: ProcNode[Color]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

class procfunc.nodes.texture.VoronoiResult[source]

Bases: NamedTuple

VoronoiResult(color, distance, position, w)

color: ProcNode[Color]

Alias for field number 0

distance: ProcNode[float]

Alias for field number 1

position: ProcNode[Vector]

Alias for field number 2

w: ProcNode[float] | None

Alias for field number 3

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

class procfunc.nodes.texture.PointDensityResult[source]

Bases: NamedTuple

PointDensityResult(color, density)

color: ProcNode[Color]

Alias for field number 0

density: ProcNode[float]

Alias for field number 1

Supported special methods: __add__, __contains__, __getitem__, __getnewargs__, __iter__, __len__, __mul__, __rmul__

procfunc.nodes.texture.brick(vector, color1=(0.8, 0.8, 0.8, 1), color2=(0.2, 0.2, 0.2, 1), mortar=(0, 0, 0, 1), scale=5.0, mortar_size=0.02, mortar_smooth=0.1, bias=0.0, brick_width=0.5, row_height=0.25, offset=0.5, offset_frequency=2, squash=1.0, squash_frequency=2)[source]

Uses a TexBrick Shader Node.

procfunc requires an explicit vector input - the node will not default to using texture coordinates or world coordinates the way Blender does

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/textures/brick.html

Parameters:
Return type:

TextureResult

procfunc.nodes.texture.checker(vector, color1=(0.8, 0.8, 0.8, 1), color2=(0.2, 0.2, 0.2, 1), scale=5.0)[source]

Uses a TexChecker Shader Node.

procfunc requires an explicit vector input - the node will not default to using texture coordinates or world coordinates the way Blender does

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/textures/checker.html

Parameters:
Return type:

TextureResult

procfunc.nodes.texture.environment(vector, image=None, interpolation='Linear', projection='EQUIRECTANGULAR')[source]

Uses a TexEnvironment Shader Node.

procfunc requires an explicit vector input - the node will not default to using texture coordinates or world coordinates the way Blender does

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/textures/environment.html

Parameters:
  • vector (ProcNode[Vector] | Vector)

  • image (Any)

  • interpolation (Literal['Linear', 'Closest', 'Cubic', 'Smart'])

  • projection (Literal['EQUIRECTANGULAR', 'MIRROR_BALL'])

Return type:

ProcNode[Color]

procfunc.nodes.texture.gradient(vector, gradient_type='LINEAR')[source]

Uses a TexGradient Shader Node.

procfunc requires an explicit vector input - the node will not default to using texture coordinates or world coordinates the way Blender does

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/textures/gradient.html

Parameters:
  • vector (ProcNode[Vector] | Vector)

  • gradient_type (Literal['LINEAR', 'QUADRATIC', 'EASING', 'DIAGONAL', 'SPHERICAL', 'QUADRATIC_SPHERE', 'RADIAL'])

Return type:

TextureResult

procfunc.nodes.texture.ies(vector, strength=1.0, filepath='', ies=None, mode='INTERNAL')[source]

Uses a TexIES Shader Node.

procfunc requires an explicit vector input - the node will not default to using texture coordinates or world coordinates the way Blender does

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/textures/ies.html

Parameters:
Return type:

ProcNode[float]

procfunc.nodes.texture.image(vector, image=None, extension='REPEAT', interpolation='Linear', projection='FLAT', projection_blend=0.0)[source]

Uses a TexImage Shader Node.

procfunc requires an explicit vector input - the node will not default to using texture coordinates or world coordinates the way Blender does

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/textures/image.html

Parameters:
  • vector (ProcNode[Vector] | Vector)

  • image (Image | None)

  • extension (Literal['REPEAT', 'EXTEND', 'CLIP', 'MIRROR'])

  • interpolation (Literal['Linear', 'Closest', 'Cubic', 'Smart'])

  • projection (Literal['FLAT', 'BOX', 'SPHERE', 'TUBE'])

  • projection_blend (float)

Return type:

TextureResult

procfunc.nodes.texture.magic(vector, scale=5.0, distortion=1.0, turbulence_depth=2)[source]

Uses a TexMagic Shader Node.

procfunc requires an explicit vector input - the node will not default to using texture coordinates or world coordinates the way Blender does

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/textures/magic.html

Parameters:
Return type:

TextureResult

procfunc.nodes.texture.noise(vector, scale=5.0, detail=2.0, roughness=0.5, lacunarity=2.0, offset=0.0, gain=1.0, distortion=0.0, noise_dimensions='3D', noise_type='FBM', normalize=True, w=None)[source]

Uses a TexNoise Shader Node.

Parameters:
  • offset (-) – Only supported for RIDGED_MULTIFRACTAL, HYBRID_MULTIFRACTAL, HETERO_TERRAIN noise types

  • gain (-) – Only supported for RIDGED_MULTIFRACTAL and HYBRID_MULTIFRACTAL noise types

  • distortion (-) – Only supported for RIDGED_MULTIFRACTAL, HYBRID_MULTIFRACTAL, HETERO_TERRAIN noise types

  • w (-) – Only supported for 1D and 4D noise dimensions

  • vector (-) – The coordinate to evaluate the noise at. Not available in 1D mode (pass vector=None and use w instead). Passing None explicitly falls back to blender’s implicit coordinates, gated by pf.context.globals.warn_mode_avoid_implicit_vector.

  • scale (ProcNode[float] | float)

  • detail (ProcNode[float] | float)

  • roughness (ProcNode[float] | float)

  • lacunarity (ProcNode[float] | float)

  • noise_dimensions (Literal['1D', '2D', '3D', '4D'])

  • noise_type (Literal['MULTIFRACTAL', 'FBM', 'RIDGED_MULTIFRACTAL', 'HYBRID_MULTIFRACTAL', 'HETERO_TERRAIN'])

  • normalize (bool)

Return type:

TextureResult

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/textures/noise.html

procfunc.nodes.texture.point_density(vector, interpolation='Linear', object=None, particle_color_source='PARTICLE_AGE', particle_system=None, point_source='PARTICLE_SYSTEM', radius=0.3, resolution=100, space='OBJECT', vertex_attribute_name='', vertex_color_source='VERTEX_COLOR')[source]

Uses a TexPointDensity Shader Node.

procfunc requires an explicit vector input - the node will not default to using texture coordinates or world coordinates the way Blender does

TODO: vertex_attribute_name and vertex_color_source are only available for point_source OBJECT

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/textures/point_density.html

Parameters:
  • vector (ProcNode[Vector] | Vector)

  • interpolation (Literal['Closest', 'Linear', 'Cubic'])

  • object (Any)

  • particle_color_source (Literal['PARTICLE_AGE', 'PARTICLE_SPEED', 'PARTICLE_VELOCITY'])

  • particle_system (Any)

  • point_source (Literal['OBJECT', 'PARTICLE_SYSTEM'])

  • radius (float)

  • resolution (int)

  • space (Literal['OBJECT', 'WORLD'])

  • vertex_attribute_name (str)

  • vertex_color_source (Literal['VERTEX_COLOR', 'VERTEX_NORMAL', 'VERTEX_WEIGHT'])

Return type:

PointDensityResult

procfunc.nodes.texture.sky(air_density=1.0, altitude=0.0, dust_density=1.0, ground_albedo=0.3, ozone_density=1.0, sky_type='NISHITA', sun_direction=(0.0, 0.0, 1.0), sun_disc=True, sun_elevation=0.261799, sun_intensity=1.0, sun_rotation=0.0, sun_size=0.009512, turbidity=2.2)[source]

Uses a TexSky Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/textures/sky.html

Parameters:
Return type:

ProcNode[Color]

procfunc.nodes.texture.voronoi(vector, scale=5.0, detail=0.0, roughness=0.5, lacunarity=2.0, randomness=1.0, exponent=0.0, distance='EUCLIDEAN', feature='F1', normalize=False, voronoi_dimensions='3D', w=None)[source]

Uses a TexVoronoi Shader Node.

Parameters:
Return type:

VoronoiResult

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/textures/voronoi.html

procfunc.nodes.texture.voronoi_distance(vector, scale=5.0, detail=0.0, roughness=0.5, lacunarity=2.0, randomness=1.0, normalize=False, voronoi_dimensions='3D', w=None)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.texture.voronoi_smooth_f1(vector, scale=5.0, detail=0.0, roughness=0.5, lacunarity=2.0, smoothness=0.5, randomness=1.0, distance='EUCLIDEAN', normalize=False, voronoi_dimensions='3D', w=None)[source]
Parameters:
Return type:

VoronoiResult

procfunc.nodes.texture.voronoi_n_spheres_distance(vector, scale=5.0, randomness=1.0, normalize=False)[source]
Parameters:
Return type:

ProcNode[float]

procfunc.nodes.texture.wave(vector, scale=5.0, distortion=0.0, detail=2.0, detail_scale=1.0, detail_roughness=0.5, phase_offset=0.0, bands_direction='X', rings_direction='X', wave_profile='SIN', wave_type='BANDS')[source]

Uses a TexWave Shader Node.

TODO: bands_direction and rings_direction are only available for wave_type BANDS or RINGS respectively

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/textures/wave.html

Parameters:
Return type:

TextureResult

procfunc.nodes.texture.white_noise(vector=None, noise_dimensions='3D', w=None)[source]

Uses a TexWhiteNoise Shader Node.

See: https://docs.blender.org/manual/en/4.2/render/shader_nodes/textures/white_noise.html

Parameters:
Return type:

TextureResult