PGCRYPT/OpenBlender_Train huggingface dataset:
user: What is GeometryNodeInputShortestEdgePaths(GeometryNode) and how is it used in Blender Python scripting?

assistant: # GeometryNodeInputShortestEdgePaths(GeometryNode)

base classes — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), [`Node`](bpy.types.Node.html#bpy.types.Node "bpy.types.Node"), [`NodeInternal`](bpy.types.NodeInternal.html#bpy.types.NodeInternal "bpy.types.NodeInternal"), [`GeometryNode`](bpy.types.GeometryNode.html#bpy.types.GeometryNode "bpy.types.GeometryNode")

*class* bpy.types.GeometryNodeInputShortestEdgePaths(*GeometryNode*)
:   Find the shortest paths along mesh edges to selected end vertices, with customizable cost per edge

    *classmethod* is_registered_node_type()
    :   True if a registered node type

        Returns:
        :   Result

        Return type:
        :   boolean

    *classmethod* input_template(*index*)
    :   Input socket template

        Parameters:
        :   **index** (*int in* *[**0**,* *inf**]*) – Index

        Returns:
        :   result

        Return type:
        :   [`NodeInternalSocketTemplate`](bpy.types.NodeInternalSocketTemplate.html#bpy.types.NodeInternalSocketTemplate "bpy.types.NodeInternalSocketTemplate")

    *classmethod* output_template(*index*)
    :   Output socket template

        Parameters:
        :   **index** (*int in* *[**0**,* *inf**]*) – Index

        Returns:
        :   result

        Return type:
        :   [`NodeInternalSocketTemplate`](bpy.types.NodeInternalSocketTemplate.html#bpy.types.NodeInternalSocketTemplate "bpy.types.NodeInternalSocketTemplate")

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Show practical ways to work with MaskSpline(bpy_struct) in a Blender add-on or script – include code.

assistant: # MaskSpline(bpy_struct)

base class — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct")

*class* bpy.types.MaskSpline(*bpy_struct*)
:   Single spline used for defining mask shape

    offset_mode
    :   The method used for calculating the feather offset

        - `EVEN`
          Even – Calculate even feather offset.
        - `SMOOTH`
          Smooth – Calculate feather offset as a second curve.

        Type:
        :   enum in [`'EVEN'`, `'SMOOTH'`], default `'EVEN'`

    points
    :   Collection of points

        Type:
        :   [`MaskSplinePoints`](bpy.types.MaskSplinePoints.html#bpy.types.MaskSplinePoints "bpy.types.MaskSplinePoints") [`bpy_prop_collection`](bpy.types.bpy_prop_collection.html#bpy.types.bpy_prop_collection "bpy.types.bpy_prop_collection") of [`MaskSplinePoint`](bpy.types.MaskSplinePoint.html#bpy.types.MaskSplinePoint "bpy.types.MaskSplinePoint"), (readonly)

    use_cyclic
    :   Make this spline a closed loop

        Type:
        :   boolean, default False

    use_fill
    :   Make this spline filled

        Type:
        :   boolean, default False

    use_self_intersection_check
    :   Prevent feather from self-intersections

        Type:
        :   boolean, default False

    weight_interpolation
    :   The type of weight interpolation for spline

        Type:
        :   enum in [`'LINEAR'`, `'EASE'`], default `'LINEAR'`

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Provide the full official documentation entry for Example, preserving all code examples.

assistant: Closures are useful when part of a node group’s logic should be user-defined.
For example, a terrain generator can use a closure to define tree placement:

- The [Evaluate Closure](evaluate_closure.xhtml)
  node is placed where tree instances are distributed.
- A closure input is exposed on the group’s interface.
- A [Closure](closure.xhtml)
  node is connected defining any custom placement logic.

When the closure is evaluated, the contents of the connected node graph
are executed inside the context of the terrain generator.
This allows the generator to provide stable infrastructure
(e.g., scattering, masks, attributes) while users supply their own functional behavior.

[image reference removed]

A terrain generator node group using closures for custom tree placement.
user: What is Density and how is it used in Blender Python scripting?

assistant: # Density

The Density brush is specifically meant for use with
[Dyntopo](../tool_settings/dyntopo.html)
to remove/add detail in the mesh.

Even when the [Refine Method](../tool_settings/dyntopo.html#bpy-types-sculpt-detail-refine-method)
is set to *Subdivide Edges*, this brush is always able to collapse edges.
This ensures that while focusing on adding detail to your sculpt, the *Density* brush
can always be used to simplify and polish surfaces.

This brush has no effect if Dyntopo is disabled.
user: How do I use Troubleshooting macOS – AMD in Blender? Include parameters, examples, warnings and best practices.

assistant: # Troubleshooting macOS – AMD

Blender uses OpenGL for the 3D Viewport and user interface. The graphics processing unit (GPU) and driver have a big
impact on Blender’s behavior and performance.

This section lists possible solutions for graphics glitches, problems with EEVEE and Cycles, and crashes related to
your GPU.
user: Provide the full official documentation entry for ShaderNodeBevel(ShaderNode), preserving all code examples.

assistant: # ShaderNodeBevel(ShaderNode)

base classes — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), [`Node`](bpy.types.Node.html#bpy.types.Node "bpy.types.Node"), [`NodeInternal`](bpy.types.NodeInternal.html#bpy.types.NodeInternal "bpy.types.NodeInternal"), [`ShaderNode`](bpy.types.ShaderNode.html#bpy.types.ShaderNode "bpy.types.ShaderNode")

*class* bpy.types.ShaderNodeBevel(*ShaderNode*)
:   Generates normals with round corners.
    Note: only supported in Cycles, and may slow down renders

    samples
    :   Number of rays to trace per shader evaluation

        Type:
        :   int in [2, 128], default 0

    *classmethod* is_registered_node_type()
    :   True if a registered node type

        Returns:
        :   Result

        Return type:
        :   boolean

    *classmethod* input_template(*index*)
    :   Input socket template

        Parameters:
        :   **index** (*int in* *[**0**,* *inf**]*) – Index

        Returns:
        :   result

        Return type:
        :   [`NodeInternalSocketTemplate`](bpy.types.NodeInternalSocketTemplate.html#bpy.types.NodeInternalSocketTemplate "bpy.types.NodeInternalSocketTemplate")

    *classmethod* output_template(*index*)
    :   Output socket template

        Parameters:
        :   **index** (*int in* *[**0**,* *inf**]*) – Index

        Returns:
        :   result

        Return type:
        :   [`NodeInternalSocketTemplate`](bpy.types.NodeInternalSocketTemplate.html#bpy.types.NodeInternalSocketTemplate "bpy.types.NodeInternalSocketTemplate")

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Describe NodeGroup(NodeInternal) from the Blender manual or Python API, including usage steps and snippets.

assistant: # NodeGroup(NodeInternal)

base classes — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), [`Node`](bpy.types.Node.html#bpy.types.Node "bpy.types.Node"), [`NodeInternal`](bpy.types.NodeInternal.html#bpy.types.NodeInternal "bpy.types.NodeInternal")

*class* bpy.types.NodeGroup(*NodeInternal*)
:   node_tree
    :   Type:
        :   [`NodeTree`](bpy.types.NodeTree.html#bpy.types.NodeTree "bpy.types.NodeTree")

    *classmethod* is_registered_node_type()
    :   True if a registered node type

        Returns:
        :   Result

        Return type:
        :   boolean

    *classmethod* input_template(*index*)
    :   Input socket template

        Parameters:
        :   **index** (*int in* *[**0**,* *inf**]*) – Index

        Returns:
        :   result

        Return type:
        :   [`NodeInternalSocketTemplate`](bpy.types.NodeInternalSocketTemplate.html#bpy.types.NodeInternalSocketTemplate "bpy.types.NodeInternalSocketTemplate")

    *classmethod* output_template(*index*)
    :   Output socket template

        Parameters:
        :   **index** (*int in* *[**0**,* *inf**]*) – Index

        Returns:
        :   result

        Return type:
        :   [`NodeInternalSocketTemplate`](bpy.types.NodeInternalSocketTemplate.html#bpy.types.NodeInternalSocketTemplate "bpy.types.NodeInternalSocketTemplate")

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Give a detailed overview of MovieTrackingObjectPlaneTracks(bpy_struct): syntax, arguments, return values, common patterns.

assistant: # MovieTrackingObjectPlaneTracks(bpy_struct)

base class — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct")

*class* bpy.types.MovieTrackingObjectPlaneTracks(*bpy_struct*)
:   Collection of tracking plane tracks

    active
    :   Active track in this tracking data object

        Type:
        :   [`MovieTrackingTrack`](bpy.types.MovieTrackingTrack.html#bpy.types.MovieTrackingTrack "bpy.types.MovieTrackingTrack")

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Provide the full official documentation entry for References, preserving all code examples.

assistant: |  |  |
| --- | --- |
| - [`Linesets.active`](bpy.types.Linesets.html#bpy.types.Linesets.active "bpy.types.Linesets.active") - [`Linesets.new`](bpy.types.Linesets.html#bpy.types.Linesets.new "bpy.types.Linesets.new") | - [`Linesets.remove`](bpy.types.Linesets.html#bpy.types.Linesets.remove "bpy.types.Linesets.remove") - [`FreestyleSettings.linesets`](bpy.types.FreestyleSettings.html#bpy.types.FreestyleSettings.linesets "bpy.types.FreestyleSettings.linesets") |
user: What is NodeCombineBundleItems(bpy_struct) and how is it used in Blender Python scripting?

assistant: # NodeCombineBundleItems(bpy_struct)

base class — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct")

*class* bpy.types.NodeCombineBundleItems(*bpy_struct*)
:   Collection of combine bundle items

    new(*socket_type*, *name*)
    :   Add an item at the end

        Parameters:
        :   - **socket_type** (enum in [Node Socket Data Type Items](bpy_types_enum_items/node_socket_data_type_items.html#rna-enum-node-socket-data-type-items)) – Socket Type, Socket type of the item
            - **name** (*string**,* *(**never None**)*) – Name

        Returns:
        :   Item, New item

        Return type:
        :   [`NodeCombineBundleItem`](bpy.types.NodeCombineBundleItem.html#bpy.types.NodeCombineBundleItem "bpy.types.NodeCombineBundleItem")

    remove(*item*)
    :   Remove an item

        Parameters:
        :   **item** ([`NodeCombineBundleItem`](bpy.types.NodeCombineBundleItem.html#bpy.types.NodeCombineBundleItem "bpy.types.NodeCombineBundleItem"), (never None)) – Item, The item to remove

    clear()
    :   Remove all items

    move(*from_index*, *to_index*)
    :   Move an item to another position

        Parameters:
        :   - **from_index** (*int in* *[**0**,* *inf**]*) – From Index, Index of the item to move
            - **to_index** (*int in* *[**0**,* *inf**]*) – To Index, Target index for the item

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Show practical ways to work with Shrinkwrap Modifier in a Blender add-on or script – include code.

assistant: # Shrinkwrap Modifier

The *Shrinkwrap* modifier allows a Grease Pencil object to “shrink” to the surface of another object.
It moves each point of the object being modified to the closest position on the surface of the given mesh.
user: What is Fresnel Node and how is it used in Blender Python scripting?

assistant: # Fresnel Node

[image reference removed]

The *Fresnel* or *Dielectric Fresnel* node computes how much light is reflected off a layer,
where the rest will be refracted through the layer.
The resulting weight can be used for layering shaders with the *Mix Shader* node.
It is dependent on the angle between the surface normal and the viewing direction.

The most common use is to mix between two BSDFs using it as a blending factor in a Mix Shader node.
For a simple glass material you would mix between a glossy refraction and glossy reflection.
At grazing angles more light will be reflected than refracted as happens in reality.

For a two-layered material with a diffuse base and a glossy coating,
you can use the same setup, mixing between a diffuse and glossy BSDF. By using the Fresnel as
the blending factor you are specifying that any light which is refracted through the glossy
coating layer would hit the diffuse base and be reflected off that.
user: Give a detailed overview of Working Offline: syntax, arguments, return values, common patterns.

assistant: For security or other reasons, workstation may not have internet access.

By default Blender does not access the internet, however this can be
enabled in the System preferences with the
[Online Access](../editors/preferences/system.xhtml#bpy-types-preferencessystem-use-online-access) option.

Working offline can be enforced by running with the `--offline-mode`
[command line argument](command_line/arguments.xhtml#command-line-args-network-options). Users
will then be unable to enable online access in the preferences.
user: Explain Properties in complete detail according to the official Blender documentation.

assistant: [image reference removed]

Label Size
:   Font size of the label. For example, for subordinate frames to have smaller titles.

Shrink
:   Once a node is placed in the Frame, the Frame shrinks around it so as to remove wasted space.
    At this point it is no longer possible to select the edge of the Frame to resize it, instead resizing occurs
    automatically when nodes within the Frame are rearranged.
    This behavior can be changed by disabling this option.

Text
:   When you need to display more comprehensive text, frame nodes can display the contents of a text data-block.
    This is read-only, so you will need to use the *Text Editor* to modify the contents.
user: What is GeometryNodeOffsetPointInCurve(GeometryNode) and how is it used in Blender Python scripting?

assistant: # GeometryNodeOffsetPointInCurve(GeometryNode)

base classes — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), [`Node`](bpy.types.Node.html#bpy.types.Node "bpy.types.Node"), [`NodeInternal`](bpy.types.NodeInternal.html#bpy.types.NodeInternal "bpy.types.NodeInternal"), [`GeometryNode`](bpy.types.GeometryNode.html#bpy.types.GeometryNode "bpy.types.GeometryNode")

*class* bpy.types.GeometryNodeOffsetPointInCurve(*GeometryNode*)
:   Offset a control point index within its curve

    *classmethod* is_registered_node_type()
    :   True if a registered node type

        Returns:
        :   Result

        Return type:
        :   boolean

    *classmethod* input_template(*index*)
    :   Input socket template

        Parameters:
        :   **index** (*int in* *[**0**,* *inf**]*) – Index

        Returns:
        :   result

        Return type:
        :   [`NodeInternalSocketTemplate`](bpy.types.NodeInternalSocketTemplate.html#bpy.types.NodeInternalSocketTemplate "bpy.types.NodeInternalSocketTemplate")

    *classmethod* output_template(*index*)
    :   Output socket template

        Parameters:
        :   **index** (*int in* *[**0**,* *inf**]*) – Index

        Returns:
        :   result

        Return type:
        :   [`NodeInternalSocketTemplate`](bpy.types.NodeInternalSocketTemplate.html#bpy.types.NodeInternalSocketTemplate "bpy.types.NodeInternalSocketTemplate")

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Give a detailed overview of Notes: syntax, arguments, return values, common patterns.

assistant: Iterations
:   The filter can be applied multiple times by chaining the node multiple times.
    This chaining can produce more flat filtering.

    |  |  |
    | --- | --- |
    | ../../../_images/compositing_types_filter_kuwahara-node_original.webp   Original. | ../../../_images/compositing_types_filter_kuwahara-node_iterations1.webp   Iterations: 1. |
    | ../../../_images/compositing_types_filter_kuwahara-node_iterations2.webp   Iterations: 2. | ../../../_images/compositing_types_filter_kuwahara-node_iterations3.webp   Iterations: 3. |

Performance
:   The filter can be expensive to compute for high size input and high resolution
    images. To improve performance, consider scaling down the image, applying the
    filter, then scaling it up again. This can work well because the filter
    already attenuates low frequency details.
user: Give a detailed overview of Toggle Bold, Italics, Underline, Small Caps: syntax, arguments, return values, common patterns.

assistant: To apply the *Bold*, *Italics*, *Underline* or *Small Caps* attribute to a set of characters,
you either turn on the related setting prior to typing characters,
or select existing text, and then toggle desired style from the menu.
user: Describe NodeSocketVectorVelocity(NodeSocketStandard) from the Blender manual or Python API, including usage steps and snippets.

assistant: # NodeSocketVectorVelocity(NodeSocketStandard)

base classes — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), [`NodeSocket`](bpy.types.NodeSocket.html#bpy.types.NodeSocket "bpy.types.NodeSocket"), [`NodeSocketStandard`](bpy.types.NodeSocketStandard.html#bpy.types.NodeSocketStandard "bpy.types.NodeSocketStandard")

*class* bpy.types.NodeSocketVectorVelocity(*NodeSocketStandard*)
:   3D vector socket of a node

    default_value
    :   Input value used for unconnected socket

        Type:
        :   [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf], default (0.0, 0.0, 0.0)

    links
    :   List of node links from or to this socket.

        Type:
        :   [`NodeLinks`](bpy.types.NodeLinks.html#bpy.types.NodeLinks "bpy.types.NodeLinks")

        (readonly)

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Give a detailed overview of Transform: syntax, arguments, return values, common patterns.

assistant: # Transform

When in *Edit Mode* you can use this panel to control position and roll of individual bones.
Whereas in *Pose Mode* you can only set location for the main bone, and you can now set rotation and scale.

In addition, in *Pose Mode* it is possible to restrict changes in position,
rotation and scale by axis on each bone in the armature.

Head X, Y, Z
:   Location of head end of the bone.

Tail X, Y, Z
:   Location of tail end of the bone.

Roll
:   Bone rotation around head-tail axis.

Length
:   The distance from the bone’s head to it’s tail. Changing the length moves the tail end.

Lock
:   Bone is not able to be transformed when in Edit Mode.
user: Show practical ways to work with Overview in a Blender add-on or script – include code.

assistant: Closures are a socket type that represent callable node graphs.
They define a set of inputs and outputs that can be evaluated inside another node group through the
[Evaluate Closure](evaluate_closure.xhtml) node.

When a closure is connected, its internal node graph is *injected* into the evaluation of the node group where it is
used. This allows procedural systems to remain flexible while exposing clear, customizable control points.

Closures can be thought of as function parameters for node groups.
They let users define operations that can be executed in a controlled environment defined by the parent node tree.
user: Provide the full official documentation entry for Modes, preserving all code examples.

assistant: Depending on the type of object you are trying to model, there are different types
of modeling [modes](../editors/3dview/modes.html).
Since modes are not specific to modeling they are covered in different parts of the manual.

Switching between modes while modeling is common.
Some tools may be available in more than one mode while others may be unique to a particular mode.

### Edit Mode

Edit Mode is the main mode where modeling takes place.
Edit Mode is used to edit the following types of objects:

- Meshes
- Curves
- Surfaces
- Metaballs
- Text objects
- Lattice

You can only modify the mesh of the objects you are editing.
To modify other objects you can leave Edit Mode, select another object and enter Edit Mode,
or use [Multi-Object Editing](../editors/3dview/modes.html#dview-multi-object-mode).
user: Provide the full official documentation entry for GeometryNodeVolumeCube(GeometryNode), preserving all code examples.

assistant: # GeometryNodeVolumeCube(GeometryNode)

base classes — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), [`Node`](bpy.types.Node.html#bpy.types.Node "bpy.types.Node"), [`NodeInternal`](bpy.types.NodeInternal.html#bpy.types.NodeInternal "bpy.types.NodeInternal"), [`GeometryNode`](bpy.types.GeometryNode.html#bpy.types.GeometryNode "bpy.types.GeometryNode")

*class* bpy.types.GeometryNodeVolumeCube(*GeometryNode*)
:   Generate a dense volume with a field that controls the density at each grid voxel based on its position

    *classmethod* is_registered_node_type()
    :   True if a registered node type

        Returns:
        :   Result

        Return type:
        :   boolean

    *classmethod* input_template(*index*)
    :   Input socket template

        Parameters:
        :   **index** (*int in* *[**0**,* *inf**]*) – Index

        Returns:
        :   result

        Return type:
        :   [`NodeInternalSocketTemplate`](bpy.types.NodeInternalSocketTemplate.html#bpy.types.NodeInternalSocketTemplate "bpy.types.NodeInternalSocketTemplate")

    *classmethod* output_template(*index*)
    :   Output socket template

        Parameters:
        :   **index** (*int in* *[**0**,* *inf**]*) – Index

        Returns:
        :   result

        Return type:
        :   [`NodeInternalSocketTemplate`](bpy.types.NodeInternalSocketTemplate.html#bpy.types.NodeInternalSocketTemplate "bpy.types.NodeInternalSocketTemplate")

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Give a detailed overview of Cache: syntax, arguments, return values, common patterns.

assistant: # Cache

In order to improve real-time response and avoid unnecessary recalculation of particles,
the particle data can be cached in memory or stored on a drive.

The *Emitter* particle system uses a unified system for caching and baking (together with Soft Body and Cloth).

[image reference removed]

Particles Cache settings.
user: How do I use Inputs in Blender? Include parameters, examples, warnings and best practices.

assistant: String
:   The input string to be evaluated.

Operation
:   Determines how the input string is compared to the key:

    Starts With:
    :   True if the input string begins with the key.

    Ends With:
    :   True if the input string ends with the key.

    Contains:
    :   True if the input string contains the key anywhere within it.

Key
:   The target string to compare against.
user: Explain Examples in complete detail according to the official Blender documentation.

assistant: Below are examples of blending modes, as well as some practical use cases.

[image reference removed]

Blending a colored pattern with a flat color (top row) and a circular mask (bottom row).

### Fixing overexposure

The Compositing setup below shows how to fix an overexposed render by
darkening it and increasing contrast.

[image reference removed]

Example node setup showing two RGB Curves nodes and a Mix node for composition.

The top [RGB Curves Node](../../../compositing/types/color/adjust/rgb_curves.xhtml) darkens the image by linearly scaling each
color value to a smaller one.

The bottom curve node increases contrast by making small values smaller and large values larger.

Finally, the Mix node blends the two together.

### Watermark Images

In the old days, a pattern was pressed into the paper mush as it dried,
creating a mark that identified who made the paper and where it came from.
The mark was barely perceptible except in just the right light.
Probably the first form of subliminal advertising.

Nowadays, people watermark their images to identify them as personal intellectual property,
for subliminal advertising of the author or hosting service,
or simply to track their image’s proliferation throughout the web.

Blender provides a complete set of tools for you to both encode your watermark
and to tell if an image has your watermark.

#### Encoding your Watermark in an Image

First, construct your own personal watermark.
You can use your name, a word, or a shape or image not easily replicated.
While neutral gray works best using the encoding method suggested,
you are free to use other colors or patterns.
It can be a single pixel or a whole gradient; it is up to you.

In the example below, we are encoding the watermark in a specific location
in the image using the *Translate* node;
this helps later because we only have to look at a specific location for the mark.
We then use the *RGB to BW node* to convert the color image to grayscale numbers,
which we then feed into the *Map Range* node to reduce the mark to one-tenth of
its original intensity.

The *Add* node (*Mix* node with blending mode *Add*) adds the corresponding pixels,
making the ones containing the mark ever-so-slightly brighter.

[image reference removed]

Embedding a watermark in an image.

Of course, if you *want* people to notice your mark, do not scale it so much,
or make it a contrasting color. There are also many other ways,
using other mix settings and fancier rigs. Feel free to experiment!

#### Decoding an Image for your Watermark

When you see an image that you think might be yours,
use the node tree below to compare it to your stock image (non-watermarked original).
In this tree, the *Mix* node is set to Difference,
and the *Map Value* node amplifies any difference.
You can see how the original mark clearly stands out.

[image reference removed]

Checking an image for your watermark.
user: Explain Workflow in complete detail according to the official Blender documentation.

assistant: The workflow for working with pull requests can be found in the
[Blender Developer’s Documentation](https://developer.blender.org/docs/handbook/contributing/pull_requests/).

Note, some text in the above guideline is focused on the main Blender repository, however, the workflow is the same
for any Blender project.
user: Give a detailed overview of Density: syntax, arguments, return values, common patterns.

assistant: # Density

The Density brush is specifically meant for use with
[Dyntopo](../tool_settings/dyntopo.xhtml)
to remove/add detail in the mesh.

Even when the [Refine Method](../tool_settings/dyntopo.xhtml#bpy-types-sculpt-detail-refine-method)
is set to *Subdivide Edges*, this brush is always able to collapse edges.
This ensures that while focusing on adding detail to your sculpt, the *Density* brush
can always be used to simplify and polish surfaces.

This brush has no effect if Dyntopo is disabled.
user: Provide the full official documentation entry for Quickstart, preserving all code examples.

assistant: # Quickstart

This API is generally stable
but some areas are still being extended and improved.

Blender Python API features:

- Edit any data the user interface can (Scenes, Meshes, Particles etc.).
- Modify user preferences, keymaps and themes.
- Run tools with own settings.
- Create user interface elements such as menus, headers and panels.
- Create new tools.
- Create interactive tools.
- Create new rendering engines that integrate with Blender.
- Subscribe to changes to data and it’s properties.
- Define new settings in existing Blender data.
- Draw in the 3D Viewport using Python.

(Still) missing features:

- Create new space types.
- Assign custom properties to every type.
user: What is Gizmogroup Operators and how is it used in Blender Python scripting?

assistant: # Gizmogroup Operators

bpy.ops.gizmogroup.gizmo_select(*\**, *extend=False*, *deselect=False*, *toggle=False*, *deselect_all=False*, *select_passthrough=False*)
:   Select the currently highlighted gizmo

    Parameters:
    :   - **extend** (*boolean**,* *(**optional**)*) – Extend, Extend selection instead of deselecting everything first
        - **deselect** (*boolean**,* *(**optional**)*) – Deselect, Remove from selection
        - **toggle** (*boolean**,* *(**optional**)*) – Toggle Selection, Toggle the selection
        - **deselect_all** (*boolean**,* *(**optional**)*) – Deselect On Nothing, Deselect all when nothing under the cursor
        - **select_passthrough** (*boolean**,* *(**optional**)*) – Only Select Unselected, Ignore the select action when the element is already selected

bpy.ops.gizmogroup.gizmo_tweak()
:   Tweak the active gizmo
user: What is Editing Vertex Groups and how is it used in Blender Python scripting?

assistant: [image reference removed]

Vertex Group panel in Edit or Weight Paint Mode.

When you switch either to Edit Mode or to Weight Paint Mode, vertex weights can be edited.
The same operations are available in the 3D Viewport’s
Vertex ‣ Vertex Groups menu or `Ctrl`-`G`.

Assign
:   To assign the selected vertices to the active group with the weight as defined in the *Weight* (see below).

Remove
:   To remove the selected vertices from the active group (and thus also delete their weight values).

Select
:   To select all vertices contained in the group.

Deselect
:   To deselect all vertices contained in the group.

Weight
:   The weight value that gets assigned to the selected vertices.

Auto Normalize
:   Ensure all bone-deforming vertex groups add up to 1.0 while weight painting or assigning to vertices.
user: What is Keying Node and how is it used in Blender Python scripting?

assistant: # Keying Node

[image reference removed]

The *Keying* node is a one-stop-shop for “green screen” / “blue screen” removal.
It performs both chroma keying to remove the backdrop and despill to correct color cast from the backdrop.
Additionally, you can perform common operations used to tweak the resulting matte.
user: Provide the full official documentation entry for Path Guiding, preserving all code examples.

assistant: Path guiding helps reduce noise in scenes where finding a path to a light source is difficult for
regular path tracing, for example when a room is lit through a small door opening.
Important light directions are learned over time, improving as more samples are taken.

Training Samples
:   The maximum number of samples to use for training. A value of 0 will keep training until
    the end of the render. Usually 128 to 256 training samples is enough for accurate guiding.
    Higher values can lead to a minor increases in guiding quality but with increased render times.

Surface
:   Enable path guiding for the diffuse and glossy components of surfaces.

Volume
:   Enable path guiding inside volumes.
user: Describe Toolbar from the Blender manual or Python API, including usage steps and snippets.

assistant: [image reference removed]

Expanded tool group.

The Toolbar contains buttons for the various tools.
Buttons with a small triangle in their bottom right corner are tool groups
which can be opened by holding `LMB` on them for a moment
(or dragging `LMB` to open them instantly).

Hovering your cursor over a tool for a short time will show its name,
while hovering longer will show the full tooltip.

Resizing the Toolbar horizontally will display the icons with two columns.
Expanding it further will display the icon and its text.
user: What is Shading and how is it used in Blender Python scripting?

assistant: ### Shadow Terminator

Geometry Offset
:   Offset rays from the surface to reduce shadow terminator artifacts on low-poly geometry.
    Higher values affect more triangles, a value of one affecting all triangles and zero having no effect.
    The default value only affects triangles at grazing angles to light and should eliminate most artifacts.

    Unlike the *Shading Offset*, this option has little affect on the lighting
    making it the preferable method to handle shadow terminator artifacts.

Shading Offset
:   Pushes the shadow terminator (the line that divides the light and dark) towards the light
    to hide artifacts on low-poly geometry such as the ones below:

    |  |  |
    | --- | --- |
    | ../../../_images/render_cycles_object-settings_object-data_shading-terminator1.jpg   Shadow Terminator Artifacts. | ../../../_images/render_cycles_object-settings_object-data_shading-terminator2.jpg   Result of using an offset of 0.15. |

### Fast GI Approximation

AO Distance
:   Override for the world’s [AO Distance](../render_settings/light_paths.xhtml#bpy-types-cyclesrendersettings-use-fast-gi),
    if the value is zero the world’s distance is used.

### Caustics

Mark objects as caustic casters or receivers. This is used in conjunction with a
[Light](../light_settings.xhtml#bpy-types-cycleslightsettings-is-caustics-light) or
[World Shader](../world_settings.xhtml#bpy-types-cyclesworldsettings-is-caustics-light) with *Shadow Caustics* enabled
to selectively speed up caustic rendering of objects in your scene.

Cast Shadow Caustics
:   Mark an object as a caustic caster.

Receive Shadow Caustics
:   Mark an object as a caustic receiver.

|  |  |
| --- | --- |
| ../../../_images/render_cycles_object-settings_caustics-example1.png   Rendering caustics inside an eye without MNEE at 32 samples per pixel. | ../../../_images/render_cycles_object-settings_caustics-example2.png   Rendering caustics inside an eye using MNEE at 32 samples per pixel. |

### Light Group

Light Group
:   Select the [Light Group](../../layers/passes.xhtml#bpy-types-viewlayer-active-lightgroup-index) to add the
    current *Object* or *Light* too.

    Add Light Group
    :   If the name input into the *Light Group* field does not align with an existing
        Light Group, then pressing this button will create a *Light Group* with that name
        and assign the selected *Object* or *Light* to it.

### Light Linking

Limit light influence to specified objects, with [Light Linking](../../lights/light_linking.xhtml#bpy-types-object-light-linking).

Receiver Collection
:   Collection of objects that will receive light emitted from the object.

### Shadow Linking

Limit shadows to specified objects, with [Light Linking](../../lights/light_linking.xhtml#bpy-types-object-light-linking).

Shadow Blocker Collection
:   Collection of objects that will act as shadow blockers for light emitted from the object.
user: Describe Outputs from the Blender manual or Python API, including usage steps and snippets.

assistant: Curve Index
:   The index of each curve within the geometry component.
    This can be used for deterministic indexing or pattern generation.

Curve ID
:   A stable unique ID for each curve.
    Unlike *Curve Index*, this value remains consistent even if curves are added or removed.

Length
:   The total length of each curve, measured along its evaluated spline.
    Useful for scaling effects or adjusting deformation strength based on hair length.

Direction
:   A normalized vector pointing from the root toward the tip of each curve.
    This represents the overall direction of the curve and can be used for
    orienting instances or driving direction-dependent effects.

Random
:   A random vector assigned per curve, based on the *Curve ID*.
    It provides consistent randomization between evaluations, allowing for
    reproducible but varied results across curves.

Surface UV
:   The UV coordinates on the surface mesh where each curve is attached.
    This is typically used for sampling textures, transferring color data,
    or controlling procedural effects based on surface location.
user: Describe NodeMenuSwitchItems(bpy_struct) from the Blender manual or Python API, including usage steps and snippets.

assistant: # NodeMenuSwitchItems(bpy_struct)

base class — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct")

*class* bpy.types.NodeMenuSwitchItems(*bpy_struct*)
:   Collection of items that make up an enum

    new(*name*)
    :   Add an a new enum item

        Parameters:
        :   **name** (*string**,* *(**never None**)*) – Name

        Returns:
        :   Item, New item

        Return type:
        :   [`NodeEnumItem`](bpy.types.NodeEnumItem.html#bpy.types.NodeEnumItem "bpy.types.NodeEnumItem")

    remove(*item*)
    :   Remove an item

        Parameters:
        :   **item** ([`NodeEnumItem`](bpy.types.NodeEnumItem.html#bpy.types.NodeEnumItem "bpy.types.NodeEnumItem"), (never None)) – Item, The item to remove

    clear()
    :   Remove all items

    move(*from_index*, *to_index*)
    :   Move an item to another position

        Parameters:
        :   - **from_index** (*int in* *[**0**,* *inf**]*) – From Index, Index of the item to move
            - **to_index** (*int in* *[**0**,* *inf**]*) – To Index, Target index for the item

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Give a detailed overview of Inherited Properties: syntax, arguments, return values, common patterns.

assistant: |  |  |
| --- | --- |
| - [`bpy_struct.id_data`](bpy.types.bpy_struct.html#bpy.types.bpy_struct.id_data "bpy.types.bpy_struct.id_data") - [`FileHandler.bl_idname`](bpy.types.FileHandler.html#bpy.types.FileHandler.bl_idname "bpy.types.FileHandler.bl_idname") - [`FileHandler.bl_import_operator`](bpy.types.FileHandler.html#bpy.types.FileHandler.bl_import_operator "bpy.types.FileHandler.bl_import_operator") | - [`FileHandler.bl_export_operator`](bpy.types.FileHandler.html#bpy.types.FileHandler.bl_export_operator "bpy.types.FileHandler.bl_export_operator") - [`FileHandler.bl_label`](bpy.types.FileHandler.html#bpy.types.FileHandler.bl_label "bpy.types.FileHandler.bl_label") - [`FileHandler.bl_file_extensions`](bpy.types.FileHandler.html#bpy.types.FileHandler.bl_file_extensions "bpy.types.FileHandler.bl_file_extensions") |
user: Explain Brush Settings in complete detail according to the official Blender documentation.

assistant: ### General

### Unique

Deformation
:   The surface alteration that is used in the brush.

    Grab:
    :   Used to drag a group of vertices around.

    Bi-scale Grab:
    :   Like *Grab* but the falloff is more localized to the center of the brush.

    Tri-scale Grab:
    :   Like *Bi-scale Grab* but the falloff is more localized to the center of the brush.

    Scale:
    :   Displaces vertices away from the active vertex.

    Twist:
    :   Vertices are rotated around the active vertex.

Volume Preservation
:   Higher values preserve volumes more, but also lead to more bulging.
    (This value determines the poisson ratio for elastic deformation)
user: Describe Brush Tool from the Blender manual or Python API, including usage steps and snippets.

assistant: [image reference removed]

The *Brush* tool.

Painting or sculpting with brushes requires the brush tool to be active. Activating a brush from an
asset shelf or brush selector also activates the brush tool for convenience.
user: Provide the full official documentation entry for Properties, preserving all code examples.

assistant: Domain
:   The [attribute domain](../../attributes_reference.xhtml#attribute-domains) used for evaluation of the *Value* input.
    This is useful because it can be a different domain than the domain from the
    [field context](../../fields.xhtml#field-context), i.e. to choose a vertex for each face.
user: What is Examples and how is it used in Blender Python scripting?

assistant: [image reference removed]

A chain created from a single link.
[Sample blend-file](https://archive.blender.org/wiki/2015/index.php/File:Dev-ArrayModifier-Chain01.blend).

[image reference removed]

A tentacle created with an Array Modifier followed by a Curve Modifier.

The segment in the foreground is the base mesh for the tentacle; the tentacle is capped by two
specially-modeled objects deformed by the same Curve object as the main part of the tentacle.
[Sample blend-file](https://archive.blender.org/wiki/2015/index.php/File:Manual-Modifier-Array-Tentacle01.blend).

### Fractal

|  |  |
| --- | --- |
| <../../../_images/modeling_modifiers_generate_array_example-fractal-1.jpg>   Multi-level array animated with motion blur. | <../../../_images/modeling_modifiers_generate_array_example-fractal-2.png>   Fractal created with multiple arrays. [Sample blend-file](https://archive.blender.org/wiki/2015/index.php/File:Dev-ArrayModifier-Fractal01.blend). |
user: How do I use Options in Blender? Include parameters, examples, warnings and best practices.

assistant: [image reference removed]

UI for a Fluid Flow force field.

Domain Object
:   An object that is used as a domain for the smoke simulation.

Apply Density
:   Adjust the force strength based on the smoke density.
user: Show practical ways to work with Examples in a Blender add-on or script – include code.

assistant: Mirror around the individual origins.

|  |  |
| --- | --- |
| ../../../_images/modeling_meshes_editing_mesh_mirror_cursor-before.png   Mesh before mirroring. | ../../../_images/modeling_meshes_editing_mesh_mirror_individual-after.png   Mesh after mirroring along the X axis. |

The next example shows mirroring around the *3D Cursor*, with the orientation set to *Local*:

Mirror around the 3D Cursor.

|  |  |
| --- | --- |
| ../../../_images/modeling_meshes_editing_mesh_mirror_cursor-before.png   Mesh before mirroring. | ../../../_images/modeling_meshes_editing_mesh_mirror_cursor-after.png   Mesh after mirroring along the X axis using the 3D Cursor as the pivot point. |