PGCRYPT/OpenBlender_Train huggingface dataset:
user: How do I use Properties in Blender? Include parameters, examples, warnings and best practices.

assistant: Dimensions
:   The dimensions of the space to evaluate the noise in.

    1D:
    :   The *W* input is used as seed.

    2D:
    :   The X and Y components of the *Vector* input are used as seed.

    3D:
    :   The *Vector* input is used as seed.

    4D:
    :   Both the *Vector* input and the *W* input are used as seed.
user: What is Selection and how is it used in Blender Python scripting?

assistant: Splits (disconnects) the selection from the rest of the mesh.
The border edge to any non-selected elements are duplicated.

Note that the “copy” is left exactly at the same position as the original, so you must move it
`G` to see it clearly…
user: Describe Set Caps from the Blender manual or Python API, including usage steps and snippets.

assistant: Toggle ending cap styles of the stroke.

Rounded
:   Sets stroke start and end points to rounded (default).

Flat
:   Toggle stroke start and end points caps to flat or rounded.

Toggle Start
:   Toggle stroke start point cap to flat or rounded.

Toggle End
:   Toggle stroke end point cap to flat or rounded.

|  |  |  |
| --- | --- | --- |
| ../../../_images/grease-pencil_modes_edit_stroke-menu_cap-1.png   Stroke ending with rounded caps. | ../../../_images/grease-pencil_modes_edit_stroke-menu_cap-2.png   Stroke ending with flat caps. | ../../../_images/grease-pencil_modes_edit_stroke-menu_cap-3.png   Stroke ending with combined caps. |
user: Give a detailed overview of Inputs: syntax, arguments, return values, common patterns.

assistant: Geometry
:   The input geometry containing the hair curves to straighten.

Amount
:   Controls how much each curve is straightened.
    A value of 0.0 leaves the hair unchanged, while 1.0 fully aligns points along a straight line.
    Negative values exaggerate curve irregularities, causing crumpling or distortion.

Shape
:   Defines how the straightening influence changes along the length of each curve.
    A value of 0.0 applies a constant effect, while 0.5 produces a linear falloff from root to tip.

Preserve Length
:   When enabled, keeps the original length of each curve during deformation.
    When disabled, curves may shorten or stretch slightly as they are straightened.
user: What is Node Closures and how is it used in Blender Python scripting?

assistant: # Node Closures

A *closure* allows passing custom functionality into a node group.
It acts like a function input, enabling user-defined behavior to be evaluated inside another node tree.

Closures make node groups more flexible and reusable by letting users inject part of a node network into another.
This allows building higher-level tools where specific parts of a process can be customized without modifying the
group itself.

[image reference removed]

Using a closure to customize tree scattering within a terrain generator.
user: How do I use Transfer Weights in Blender? Include parameters, examples, warnings and best practices.

assistant: Copy weights from other objects to the vertex groups of the active object.

By default this tool copies only the active (selected) vertex group of the source object
to the active vertex group of target object or creates a new one if the group does not exist.
However, you can change the tool’s behavior in the [Adjust Last Operation](../../interface/undo_redo.xhtml#bpy-ops-screen-redo-last) panel.

For example, to transfer all existing vertex groups from the source objects to the target,
change the *Source Layers Selection* option to *By Name*.

### Prepare the Copy

You first select all source objects, and finally the target object
(the target object must be the active object).

It is important that the source objects and the target object are at the same location.
If they are placed side-by-side, then the weight transfer will not work. (See the *Vertex Mapping* option.)
You can place the objects on different layers,
but you have to ensure that all objects are visible when you call the tool.

Now ensure that the target object is in Weight Paint Mode.
Open the Toolbar and call the *Transfer Weights* tool in the *Weight Tools* panel.

### Adjust Last Operation Panel Confusion

You may notice that the [Adjust Last Operation](../../interface/undo_redo.xhtml#bpy-ops-screen-redo-last) panel stays available
after the weight transfer is done. The panel only disappears
when you call another Operator that has its own [Adjust Last Operation](../../interface/undo_redo.xhtml#bpy-ops-screen-redo-last) panel.
This can lead to confusion when you use Transfer weights repeatedly after you changed your vertex groups.
If you then use the still-visible [Adjust Last Operation](../../interface/undo_redo.xhtml#bpy-ops-screen-redo-last) panel,
then Blender will reset your work to its state right before you initially called the *Transfer Weights* tool.

So when you want to call the *Transfer Weights* tool again after you made some changes to your
vertex groups, then **always** use the *Transfer Weights* button,
even if the [Adjust Last Operation](../../interface/undo_redo.xhtml#bpy-ops-screen-redo-last) panel is still available.
Unless you really want to reset your changes to the initial call of the tool.
user: What is UIPieMenu(bpy_struct) and how is it used in Blender Python scripting?

assistant: # UIPieMenu(bpy_struct)

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

*class* bpy.types.UIPieMenu(*bpy_struct*)
:   layout
    :   Type:
        :   [`UILayout`](bpy.types.UILayout.html#bpy.types.UILayout "bpy.types.UILayout"), (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: How do I use Workflow & Examples in Blender? Include parameters, examples, warnings and best practices.

assistant: # Workflow & Examples

Simple Drivers can be configured from the pop-over that appears when adding a new Driver.
When adding multiple Drivers or for more advanced configurations,
it is useful to have open the [Drivers Editor](../../editors/drivers_editor.xhtml).
user: Give a detailed overview of Properties: syntax, arguments, return values, common patterns.

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: Describe Properties from the Blender manual or Python API, including usage steps and snippets.

assistant: Movie Clip
:   Used to select the movie clip whose plane track to use.
    For controls see [Data-Block Menu](../../../interface/controls/templates/data_block.xhtml#ui-data-block).

Object
:   Used to select the object to which the plane track is linked.

Track
:   Used to select the plane track to use.
user: How do I use Clear an Override in Blender? Include parameters, examples, warnings and best practices.

assistant: Reset the selected overrides to their original values, and if possible without breaking the
existing hierarchy, delete them and replace them by their linked reference data.
Otherwise, keep the overrides but mark them as non-editable.
user: Explain Translate Instances Node in complete detail according to the official Blender documentation.

assistant: # Translate Instances Node

[image reference removed]

The *Translate Instances* node moves top-level geometry instances in local or global space.

The [Instances](../instances.xhtml) page contains more information about geometry instances.
user: Explain Push/Pull in complete detail according to the official Blender documentation.

assistant: # Push/Pull

[image reference removed]

Push/Pull distance.

Moves the selected elements closer to (Push) or further away from (Pull) the pivot point,
all by the same distance. You can control this distance by moving the mouse up or down,
typing a number, or using the slider in the [Adjust Last Operation](../../../../../interface/undo_redo.xhtml#bpy-ops-screen-redo-last) panel.
user: How do I use Options in Blender? Include parameters, examples, warnings and best practices.

assistant: Mode
:   The Mask Modifier can hide parts of a mesh based on two different modes, selectable from this select menu.

    Vertex Group
    :   Hides all vertices not included in the chosen vertex group.

        The Mask modifier in Vertex Group mode.

        |  |  |
        | --- | --- |
        | ../../../_images/modeling_modifiers_generate_mask_vertex-group.png | ../../../_images/modeling_modifiers_generate_mask_panel-vertex-group.png |

    Armature
    :   When in Pose Mode,
        vertices belonging to the vertex group associated with the active bone (same names) will be visible.
        Vertices not in that group will be hidden.

        The Mask modifier in Armature mode.

        |  |  |
        | --- | --- |
        | ../../../_images/modeling_modifiers_generate_mask_armature.png | ../../../_images/modeling_modifiers_generate_mask_panel-armature.png |

Smooth
:   When using Vertex Group *Mode*, use weights to cut faces at the weight contour.
    This option will result in a mask that has smoother removing the sharp edges along the mask edges.

    [image reference removed]

Invert
:   Normally, vertices belonging to the selected vertex group (or group associated with the active pose bone)
    will be shown. The *Invert* toggle allows you to reverse this behavior, instead only showing vertices
    which do not belong to the vertex group.

Threshold
:   Hides vertices with weights less than or equal to this value.
user: Provide the full official documentation entry for skin.stretchy_chain, preserving all code examples.

assistant: This rig extends the basic chain with automation that propagates movement of the start and end,
and an optional middle control, to other controls. This results in stretching the whole chain
when moving one of the ends, rather than just the immediately adjacent B-Bones.

Middle Control Position
:   Specifies the position of the middle control within the chain; disabled when zero.

Falloff
:   Specifies the influence falloff curves of the start, middle and end controls.
    Zero results in linear falloff, increasing widens the influence, and -10 disables
    the influence propagation from that control completely.

Spherical Falloff
:   Toggle buttons to change the shape of the falloff curve from a power curve that at falloff 1 forms a parabola
    \(1 - x^{2^f}\) to a curve forming a circle \((1 - x^{2^f})^{2^{-f}}\).

Falloff Along Chain Curve
:   Computes the falloff curve along the length of the chain, instead of projecting on the straight
    line connecting its start and end points.

Propagate Twist
:   Specifies whether twist of the chain should be propagated to control points between main controls.

Propagate Scale
:   Specifies whether perpendicular scaling of the chain should be propagated to control points between main controls.

Propagate to Controls
:   Allows other chains to see propagated twist and scale via *Merge Parent Rotation and Scale* when their
    controls are merged into this chain, instead of it being completely local to this chain.

Primary Control Layers
:   Optionally specifies bone collections for the end controls.

Secondary Control Layers
:   Optionally specifies bone collections for the middle control, falling back to *Primary Control Layers* if not set.

The main controls with active falloff have the effect of *Merge Parent Rotation and Scale*
automatically enabled just for them.
user: Show practical ways to work with Inherited Properties in a Blender add-on or script – include code.

assistant: |  |  |
| --- | --- |
| - [`bpy_struct.id_data`](bpy.types.bpy_struct.html#bpy.types.bpy_struct.id_data "bpy.types.bpy_struct.id_data") - [`TextureSlot.texture`](bpy.types.TextureSlot.html#bpy.types.TextureSlot.texture "bpy.types.TextureSlot.texture") - [`TextureSlot.name`](bpy.types.TextureSlot.html#bpy.types.TextureSlot.name "bpy.types.TextureSlot.name") - [`TextureSlot.offset`](bpy.types.TextureSlot.html#bpy.types.TextureSlot.offset "bpy.types.TextureSlot.offset") - [`TextureSlot.scale`](bpy.types.TextureSlot.html#bpy.types.TextureSlot.scale "bpy.types.TextureSlot.scale") | - [`TextureSlot.color`](bpy.types.TextureSlot.html#bpy.types.TextureSlot.color "bpy.types.TextureSlot.color") - [`TextureSlot.blend_type`](bpy.types.TextureSlot.html#bpy.types.TextureSlot.blend_type "bpy.types.TextureSlot.blend_type") - [`TextureSlot.default_value`](bpy.types.TextureSlot.html#bpy.types.TextureSlot.default_value "bpy.types.TextureSlot.default_value") - [`TextureSlot.output_node`](bpy.types.TextureSlot.html#bpy.types.TextureSlot.output_node "bpy.types.TextureSlot.output_node") |
user: Explain Example in complete detail according to the official Blender documentation.

assistant: The *speed vector* in this example was created by animating the patterned sphere horizontally and
using a frame at the mid-point of the sequence.

|  |  |
| --- | --- |
| ../../../../_images/compositing_types_filter_vector-blur_example-base.jpg   Render result, no post-processing. | ../../../../_images/compositing_types_filter_vector-blur_example-1.jpg   Composite, with Samples set to 32 and Blur set to 1.0. |
user: Show practical ways to work with Mesh Elements in a Blender add-on or script – include code.

assistant: pes.BMLoop")

    tag
    :   Generic attribute scripts can use for own logic

        Type:
        :   bool

    uv_select_edge
    :   UV selected state of this element.

        Type:
        :   bool

    uv_select_vert
    :   UV selected state of this element.

        Type:
        :   bool

    vert
    :   The loop’s vertex (read-only).

        Type:
        :   [`bmesh.types.BMVert`](#bmesh.types.bmesh.types.BMVert "bmesh.types.bmesh.types.BMVert")
user: Show practical ways to work with Inputs in a Blender add-on or script – include code.

assistant: Position
:   A 2D vector that defines the location of the split line in normalized coordinates.
    The *X* and *Y* values range from 0 to 1, where (0.5, 0.5) places the split line
    at the center of the image.

Rotation
:   Adjusts the angle of the split line in degrees.

Image
:   The first image input, displayed on one side of the split.

Image
:   The second image input, displayed on the opposite side of the split.
user: Provide the full official documentation entry for TextureNodeDistance(TextureNode), preserving all code examples.

assistant: # TextureNodeDistance(TextureNode)

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"), [`TextureNode`](bpy.types.TextureNode.html#bpy.types.TextureNode "bpy.types.TextureNode")

*class* bpy.types.TextureNodeDistance(*TextureNode*)
:   *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: Explain NodeTreeInterfaceSocketVectorXYZ(NodeTreeInterfaceSocket) in complete detail according to the official Blender documentation.

assistant: # NodeTreeInterfaceSocketVectorXYZ(NodeTreeInterfaceSocket)

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

*class* bpy.types.NodeTreeInterfaceSocketVectorXYZ(*NodeTreeInterfaceSocket*)
:   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)

    dimensions
    :   Dimensions of the vector socket

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

    max_value
    :   Maximum value

        Type:
        :   float in [-inf, inf], default 0.0

    min_value
    :   Minimum value

        Type:
        :   float in [-inf, inf], default 0.0

    subtype
    :   Subtype of the default value

        Type:
        :   enum in [`'DEFAULT'`], default `'DEFAULT'`

    draw(*context*, *layout*)
    :   Draw interface socket settings

        Parameters:
        :   **layout** ([`UILayout`](bpy.types.UILayout.html#bpy.types.UILayout "bpy.types.UILayout"), (never None)) – Layout, Layout in the UI

    init_socket(*node*, *socket*, *data_path*)
    :   Initialize a node socket instance

        Parameters:
        :   - **node** ([`Node`](bpy.types.Node.html#bpy.types.Node "bpy.types.Node"), (never None)) – Node, Node of the socket to initialize
            - **socket** ([`NodeSocket`](bpy.types.NodeSocket.html#bpy.types.NodeSocket "bpy.types.NodeSocket"), (never None)) – Socket, Socket to initialize
            - **data_path** (*string**,* *(**never None**)*) – Data Path, Path to specialized socket data

    from_socket(*node*, *socket*)
    :   Setup template parameters from an existing socket

        Parameters:
        :   - **node** ([`Node`](bpy.types.Node.html#bpy.types.Node "bpy.types.Node"), (never None)) – Node, Node of the original socket
            - **socket** ([`NodeSocket`](bpy.types.NodeSocket.html#bpy.types.NodeSocket "bpy.types.NodeSocket"), (never None)) – Socket, Original socket

    *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: How do I use Example in Blender? Include parameters, examples, warnings and best practices.

assistant: Fixed Mode sample.

|  |  |  |  |
| --- | --- | --- | --- |
| <../../../_images/grease-pencil_modifiers_generate_simplify_fixed-iterations-0.png>   Original Model. | <../../../_images/grease-pencil_modifiers_generate_simplify_fixed-iterations-1.png>   Iteration: 1. | <../../../_images/grease-pencil_modifiers_generate_simplify_fixed-iterations-2.png>   Iteration: 2. | <../../../_images/grease-pencil_modifiers_generate_simplify_fixed-iterations-3.png>   Iteration: 3. |

Adaptive Mode sample.

|  |  |  |  |
| --- | --- | --- | --- |
| <../../../_images/grease-pencil_modifiers_generate_simplify_adaptive-factor-0.png>   Original Model. | <../../../_images/grease-pencil_modifiers_generate_simplify_adaptive-factor-01.png>   Factor: 0.1. | <../../../_images/grease-pencil_modifiers_generate_simplify_adaptive-factor-02.png>   Factor: 0.5. | <../../../_images/grease-pencil_modifiers_generate_simplify_adaptive-factor-05.png>   Factor: 1. |
user: Provide the full official documentation entry for TEXTURE_UL_texpaintslots(UIList), preserving all code examples.

assistant: # TEXTURE_UL_texpaintslots(UIList)

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

*class* bpy.types.TEXTURE_UL_texpaintslots(*UIList*)
:   draw_item(*_context*, *layout*, *_data*, *item*, *_icon*, *_active_data*, *_active_propname*, *_index*)

    *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 Inputs: syntax, arguments, return values, common patterns.

assistant: Vector
:   Texture coordinate to sample texture at;
    defaults to Generated texture coordinates if the socket is left unconnected.

Color1, Color 2
:   Color of the checkers.

Scale
:   Overall texture scale. The scale is a factor of the bounding box of the face divided by the scale.
    For example, a scale of 15 will result in 15 alternate patterns over the overall UV bounding box.
    Different patterns could be achieved using other nodes to give different input patterns to this socket.
    For example, using the Math Node.
user: What is Usage and how is it used in Blender Python scripting?

assistant: The tool is interactive and has two steps:

1. Choose the face loop to cut

   After activating the tool, move the cursor over an edge through which the cut should pass
   (that is, an edge that’s perpendicular to the cutting direction). Blender shows a yellow line
   previewing the cut that will be made. Click `LMB` to confirm and move to the next step,
   or `RMB` to abort.
2. Slide the new edge loop(s)

   You can now move the mouse to change the position of the new edge loop.
   Click `LMB` to create the cut at the chosen location,
   or `RMB` to create it at the center.

|  |  |  |
| --- | --- | --- |
| ../../../../_images/modeling_meshes_tools_loop_before.png   Mesh before inserting edge loop. | ../../../../_images/modeling_meshes_tools_loop_preview.png   Choosing the face loop. | ../../../../_images/modeling_meshes_tools_loop_placement.png   Sliding the new edge loop. |
user: Show practical ways to work with FModifierEnvelope(FModifier) in a Blender add-on or script – include code.

assistant: # FModifierEnvelope(FModifier)

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

*class* bpy.types.FModifierEnvelope(*FModifier*)
:   Scale the values of the modified F-Curve

    control_points
    :   Control points defining the shape of the envelope

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

    default_max
    :   Upper distance from Reference Value for 1:1 default influence

        Type:
        :   float in [-inf, inf], default 1.0

    default_min
    :   Lower distance from Reference Value for 1:1 default influence

        Type:
        :   float in [-inf, inf], default -1.0

    reference_value
    :   Value that envelope’s influence is centered around / based on

        Type:
        :   float in [-inf, inf], default 0.0

    *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 Voxelize Grid Node in a Blender add-on or script – include code.

assistant: # Voxelize Grid Node

[image reference removed]

The *Voxelize Grid* node converts all active tiles in a sparse voxel grid
into fully populated voxel regions, removing sparseness.

In voxel-based grids such as signed distance fields (SDF) or fog volumes,
inactive areas are often stored as *tiles*—compact representations that save
memory by not allocating individual voxel values. This node expands those tiles
into explicit voxels, making every voxel within an active tile directly
accessible and editable.

This can be useful before performing operations that require dense voxel data,
such as sampling, filtering, or arithmetic operations that depend on
neighboring voxel values.
user: Show practical ways to work with FunctionNodeInputRotation(FunctionNode) in a Blender add-on or script – include code.

assistant: # FunctionNodeInputRotation(FunctionNode)

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"), [`FunctionNode`](bpy.types.FunctionNode.html#bpy.types.FunctionNode "bpy.types.FunctionNode")

*class* bpy.types.FunctionNodeInputRotation(*FunctionNode*)
:   Provide a rotation value that can be connected to other nodes in the tree

    rotation_euler
    :   Input value used for unconnected socket

        Type:
        :   [`mathutils.Euler`](mathutils.html#mathutils.Euler "mathutils.Euler") rotation of 3 items in [-inf, inf], default (0.0, 0.0, 0.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: Provide the full official documentation entry for Title, preserving all code examples.

assistant: The title shows the name/type of the node;
it can be overridden by changing the node’s [Label](node_editors.xhtml#bpy-types-node-label).
On the left side of the title is the *collapse* toggle
which can be used to collapse the node. This can also be done with `H`.

[image reference removed]

How a node appears when collapsed.

### Preview

Previews are an overlay that shows a small image above the node displaying the node result.
Not all nodes support previews, but the ones that do can be toggled using
the / icons in the top right-hand corner of the node next to the title.

Previews can be disabled for the whole node tree by using
[Previews](node_editors.xhtml#bpy-types-spacenodeoverlay-show-previews) overlay toggle.
user: What is Notes and how is it used in Blender Python scripting?

assistant: While the noise is random in nature, it follows a certain pattern that might not evaluate to
random values in some configurations. For instance, consider the following configuration
where a grid of objects have a material that evaluates a noise texture at their locations.
One might expect the objects to have random values since they have different locations,
but this is not the case.

[image reference removed]

An example configuration where the noise evaluates to a constant value.

It seems all objects have a value of 0.5. To understand why this happens, let us
look at the following plot of a 1D noise texture.

[image reference removed]

A plot of a 1D noise with zero details and zero distortion.

The horizontal line denotes a value of 0.5 and the vertical lines denotes whole numbers assuming
a noise scale of 1. As can be seen, the noise always intersects the 0.5 line at whole numbers.
Since the aforementioned objects were distributed on a grid and have whole number locations,
they all evaluate to 0.5. Which explains the issue at hand.

Generally, any discrete evaluation of noise at integer multiples of the reciprocal of
the noise scale will always evaluate to 0.5. It also follows that evaluations closer to
that will have values close to 0.5. In such cases, it is almost always preferred to use
the White Noise Texture.

Regardless, one can mitigate this issue in a number of ways:

- Adjust the scale of the noise to avoid aligning the noise with the evaluation domain.
- Add an arbitrary offset to the texture coordinates to break the alignment with the evaluation domain.
- Evaluate the noise at a higher dimension and adjust the extra dimension
  until a satisfactory result is achieved.

|  |  |
| --- | --- |
| ../../../_images/render_shader-nodes_textures_noise_issue-constant-value.png   Constant value issue. | ../../../_images/render_shader-nodes_textures_noise_solution1-constant-value.png   Mitigating the issue by adjusting the scale. |
| ../../../_images/render_shader-nodes_textures_noise_solution2-constant-value.png   Mitigating the issue by adding an arbitrary offset. | ../../../_images/render_shader-nodes_textures_noise_solution3-constant-value.png   Mitigating the issue by evaluating at a higher dimension. |

Similarly, in other configurations, one might experience some banding patterns in the noise,
where there are bands of high contrast areas followed by banding of low contrast areas.
For instance, planar surfaces that are slightly tilted along one of the axis
will have such a banding pattern.

[image reference removed]

An example configuration where the noise have a banding pattern.

This happens because the slight tilt along one of the axis causes values along
the perpendicular axis to change very slowly making the grid structure of
the noise more apparent. The easiest way to mitigate this issue to rotate
the coordinates by an arbitrary amount.

[image reference removed]

Mitigating the issue by rotating the coordinates by an arbitrary amount.
user: Give a detailed overview of Usage: syntax, arguments, return values, common patterns.

assistant: Extrude Point
:   `LMB` click to add a new point connected to the currently selected point.
    The new point will have [handle type](../../../../modeling/curves/structure.html#curve-bezier-handle-type) of *Vector*.
    `Shift`-`LMB` click will add point as type *Auto*.
    However, the handle type switches to *Align* when handles are moved (See *Move Point*).

Delete Point
:   `Ctrl`-`LMB` click on an existing point to delete it.

Insert Point
:   `Ctrl`-`LMB` click on a [Curve Segment](../../../../glossary/index.html#term-Curve-Segment) to insert a new control point between the two
    adjacent control points. `Ctrl`-`LMB` click and drag to control the handles of the inserted points.

Move Segment
:   `LMB` drag on a segment in between two control points to adjust the handles, changing the shape of the
    curve without affecting the location of any control points.

Select Point
:   `LMB` click to select a single point or handle at a time.

Move Point
:   `LMB` drag to move existing points or handles. With an endpoint of a stroke selected,
    click and drag on empty space to *Extrude Point* and move the handle at the same time.

Close Stroke
:   Make the stroke [Cyclic](../../../../glossary/index.html#term-Cyclic) by clicking the endpoints.

Cycle Handle Type
:   Double `LMB` click on the control point to cycle through all handle types.
user: How do I use Inputs in Blender? Include parameters, examples, warnings and best practices.

assistant: Format
:   A string using either python format style or Blender’s format specifier.
    For example, `Count: {}` inserts the first input value in place of the {}.

Additional input values (Float, Integer, or String) can be managed in the Format Items list in the sidebar.
user: Explain Chromatic Aberration Node in complete detail according to the official Blender documentation.

assistant: # Chromatic Aberration Node

[image reference removed]

The *Chromatic Aberration* node simulates the dispersion of light caused by a camera lens,
where different wavelengths (colors) of light are refracted by slightly different amounts.
This effect produces subtle color fringing near edges or high-contrast transitions
and can be used for both realistic lens simulation and stylistic distortion effects.

It can also be combined with other post-processing effects such as
[Vignette](vignette.xhtml) or
[Lens Distortion](../transform/lens_distortion.xhtml)
to create convincing camera imperfections.
user: What is Add Duplicate and how is it used in Blender Python scripting?

assistant: Duplicates the selected control points and creates a new surface based on them.
The new control points are placed in the *Move* mode: move the mouse to bring
them to the desired position, then click `LMB` to confirm. Alternatively,
press `RMB` or `Esc` to keep them at their original position.

Note that the selected control points must form a single, valid sub grid.
If this is not the case, the duplication will fail with an error.
user: How do I use View Types in Blender? Include parameters, examples, warnings and best practices.

assistant: The Video Sequencer has three view types which can be
changed using the View Type selector (see figure 1; top left).

[image reference removed]

Figure 2: Three view types for the Video Sequence Editor

Sequencer
:   View timeline and strip properties.

Preview
:   View preview window and preview properties.

Sequencer & Preview
:   Combined view of preview and timeline and their properties.
user: Show practical ways to work with Bpy.Types.Greasepencillengthmodifier in a Blender add-on or script – include code.

assistant: truct.property_unset bpy_struct.rna_ancestors bpy_struct.type_recast bpy_struct.values Modifier.bl_rna_get_subclass Modifier.bl_rna_get_subclass_py Next GreasePencilLineartModifier(Modifier) Previous GreasePencilLayerMasks(bpy_struct) Copyright &#169; Blender Authors Made with Furo Report issue on this page On this page GreasePencilLengthModifier(Modifier) GreasePencilLengthModifier GreasePencilLengthModifier.end_factor GreasePencilLengthModifier.end_length GreasePencilLengthModifier.invert_curvature GreasePencilLengthModifier.invert_layer_filter GreasePencilLengthModifier.invert_layer_pass_filter GreasePencilLengthModifier.invert_material_filter GreasePencilLengthModifier.invert_material_pass_filter GreasePencilLengthModifier.layer_pass_filter GreasePencilLengthModifier.material_filter GreasePencilLengthModifier.material_pass_filter GreasePencilLengthModifier.max_angle GreasePencilLengthModifier.mode GreasePencilLengthModifier.open_curvature_panel GreasePencilLengthModifier.open_influence_panel GreasePencilLengthModifier.open_random_panel GreasePencilLengthModifier.overshoot_factor GreasePencilLengthModifier.point_density GreasePencilLengthModifier.random_end_factor GreasePencilLengthModifier.random_offset GreasePencilLengthModifier.random_start_factor GreasePencilLengthModifier.seed GreasePencilLengthModifier.segment_influence GreasePencilLengthModifier.start_factor GreasePencilLengthModifier.start_length GreasePencilLengthModifier.step GreasePencilLengthModifier.tree_node_filter GreasePencilLengthModifier.use_curvature GreasePencilLengthModifier.use_layer_group_filter GreasePencilLengthModifier.use_layer_pass_filter GreasePencilLengthModifier.use_material_pass_filter GreasePencilLengthModifier.use_random GreasePencilLengthModifier.bl_rna_get_subclass() GreasePencilLengthModifier.bl_rna_get_subclass_py() Inherited Properties Inherited Functions
user: What is GPU Texture Utilities (gpu.texture) and how is it used in Blender Python scripting?

assistant: # GPU Texture Utilities (gpu.texture)

This module provides utilities for textures.

gpu.texture.from_image(*image*)
:   Get GPUTexture corresponding to an Image data-block. The GPUTexture memory is shared with Blender.
    Note: Colors read from the texture will be in scene linear color space and have premultiplied or straight alpha matching the image alpha mode.

    Parameters:
    :   **image** ([`bpy.types.Image`](bpy.types.Image.html#bpy.types.Image "bpy.types.Image")) – The Image data-block.

    Returns:
    :   The GPUTexture used by the image.

    Return type:
    :   [`gpu.types.GPUTexture`](gpu.types.html#gpu.types.GPUTexture "gpu.types.GPUTexture")
user: Show practical ways to work with ShaderNodeScript(ShaderNode) in a Blender add-on or script – include code.

assistant: # ShaderNodeScript(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.ShaderNodeScript(*ShaderNode*)
:   Generate an OSL shader from a file or text data-block.
    Note: OSL shaders are not supported on all GPU backends

    bytecode
    :   Compile bytecode for shader script node

        Type:
        :   string, default “”, (never None)

    bytecode_hash
    :   Hash of compile bytecode, for quick equality checking

        Type:
        :   string, default “”, (never None)

    filepath
    :   Shader script path

        Type:
        :   string, default “”, (never None, blend relative `//` prefix supported)

    mode
    :   - `INTERNAL`
          Internal – Use internal text data-block.
        - `EXTERNAL`
          External – Use external .osl or .oso file.

        Type:
        :   enum in [`'INTERNAL'`, `'EXTERNAL'`], default `'INTERNAL'`

    script
    :   Internal shader script to define the shader

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

    use_auto_update
    :   Automatically update the shader when the .osl file changes (external scripts only)

        Type:
        :   boolean, default False

    *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: What is Assigning Materials and how is it used in Blender Python scripting?

assistant: Each character can have a different *Material index* in order to have different materials
on different characters.

You can assign indices either as you type, or after by selecting blocks of text and
clicking on the *Assign* button in the *Materials* panel.

[image reference removed]

Red Green Blue text example.
user: Give a detailed overview of Group Input: syntax, arguments, return values, common patterns.

assistant: Exposes the inputs of the node group. You can have multiple of these nodes in your tree to keep it clean,
bringing in each input right where you need it (rather than dragging long links all across your graph).

The input slots can be edited in the *Group* tab of the *Sidebar*.
user: What is Bpy.Types.Light and how is it used in Blender Python scripting?

assistant: n_data Light.color Light.cutoff_distance Light.cycles Light.diffuse_factor Light.exposure Light.node_tree Light.normalize Light.specular_factor Light.temperature Light.temperature_color Light.transmission_factor Light.type Light.use_custom_distance Light.use_nodes Light.use_shadow Light.use_temperature Light.volume_factor Light.area() Light.inline_shader_nodes() Light.bl_rna_get_subclass() Light.bl_rna_get_subclass_py() Inherited Properties Inherited Functions References
user: How do I use Follow Active Quads in Blender? Include parameters, examples, warnings and best practices.

assistant: Starts from the active quad and recursively attaches its neighboring, selected mesh quads to its
pre-existing UV quad. Non-quad faces are ignored.

### Options

The [Adjust Last Operation](../../../interface/undo_redo.xhtml#bpy-ops-screen-redo-last) panel allows fine control over how the mesh is unwrapped:

Edge Length Mode
:   How to calculate the lengths of the UV edges for the newly attached quads.

    Even
    :   Give each new UV edge the same length as the UV edge it’s extending,
        regardless of its length on the mesh.

    Length
    :   Give each new UV edge a length that’s proportional to its length on the mesh.

    Length Average
    :   Give each new UV edge a length that’s proportional to the average edge length
        in its [edge ring](../selecting/loops.xhtml#modeling-meshes-selecting-edge-rings) on the mesh.
user: What is Clear Tilt and how is it used in Blender Python scripting?

assistant: You can also reset the tilt to its default value (i.e. perpendicular to the original curve plane).
With NURBS, the tilt is always smoothly interpolated. However, with Bézier,
you can choose the [interpolation algorithm](../properties/active_spline.html#bpy-types-spline-tilt-interpolation).
user: Show practical ways to work with Monkey in a Blender add-on or script – include code.

assistant: Adds a stylized monkey head mesh named “Suzanne”.
Suzanne is a gift from old NaN to the community and
remains in Blender as a playful “Easter egg” and is widely recognized as Blender’s mascot.

This primitive is commonly used for testing materials, lighting setups, and modifiers such as
[Subdivision Surface](../../glossary/index.html#term-Subdivision-Surface).

It serves a similar purpose to well-known test models like the
[Utah Teapot](https://en.wikipedia.org/wiki/Utah_teapot) or the
[Stanford Bunny](https://en.wikipedia.org/wiki/Stanford_Bunny).

Size
:   Controls the overall scale of the mesh.
user: Describe Inputs from the Blender manual or Python API, including usage steps and snippets.

assistant: String
:   String value to be sliced.

Position
:   Integer value used to determine the starting point of the new string within the input string.
    The first letter of the string is at index 0.

Length
:   Integer value used to determine how many characters are extracted from the input string.
user: Show practical ways to work with Usage in a Blender add-on or script – include code.

assistant: # Usage

For example, we will take an existing blend-file
that was made for monoscopic rendering and transform it to be stereo 3D ready.

[image reference removed]

Creature Factory 2 by Andy Goralczyk rendered in stereo 3D (anaglyph).