PGCRYPT/OpenBlender_Train huggingface dataset:
user: Explain GreasePencilTimeModifierSegment(bpy_struct) in complete detail according to the official Blender documentation.

assistant: # GreasePencilTimeModifierSegment(bpy_struct)

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

*class* bpy.types.GreasePencilTimeModifierSegment(*bpy_struct*)
:   Configuration for a single dash segment

    name
    :   Name of the dash segment

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

    segment_end
    :   Last frame of the segment

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

    segment_mode
    :   - `NORMAL`
          Regular – Apply offset in usual animation direction.
        - `REVERSE`
          Reverse – Apply offset in reverse animation direction.
        - `PINGPONG`
          Ping Pong – Loop back and forth.

        Type:
        :   enum in [`'NORMAL'`, `'REVERSE'`, `'PINGPONG'`], default `'NORMAL'`

    segment_repeat
    :   Number of cycle repeats

        Type:
        :   int in [1, 32767], default 1

    segment_start
    :   First frame of the segment

        Type:
        :   int in [0, 32767], default 1

    *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 Vertex Weights, preserving all code examples.

assistant: # Vertex Weights

[image reference removed]

Vertex Weights panel.

A [vertex group](index.xhtml) assigns a weight
(a number between 0 and 1) to each vertex it contains. A group can have multiple vertices,
and each vertex can be part of multiple groups.

The *Vertex Weights* panel in the 3D Viewport’s Sidebar shows the vertex groups for
the active vertex, and lets you see and edit the associated weights.
It’s available in Edit Mode, as well as in Weight Paint Mode when Vertex Selection
is enabled in the header.
user: Show practical ways to work with Duplicate in a Blender add-on or script – include code.

assistant: # Duplicate

As in mesh editing, by pressing `Shift`-`D` the selected bones will be duplicated.
The duplicates become the selected elements and they are placed in select mode,
so you can move them wherever you like.

If you select part of a chain, by duplicating it you will get a copy of the selected chain,
so the copied bones are interconnected exactly like the original ones.

The duplicate of a bone which is parented to another bone will also be parented to the same
bone, even if the root bone is not selected for the duplication. Be aware, though,
that if a bone is parented **and** connected to an unselected bone,
its copy will be parented, but **not** connected to the unselected bone
(see Fig. [Duplication example.](#fig-rig-bone-duplication)).

Duplication example.

|  |  |
| --- | --- |
| ../../../../_images/animation_armatures_bones_editing_duplicate_example-1.png   An armature with three selected bones and a selected single root. | ../../../../_images/animation_armatures_bones_editing_duplicate_example-2.png   The three duplicated bones. Note that the selected chain is preserved in the copy, and that Bone.006 is parented but not connected to Bone.001, as indicated by the black dashed line. Similarly, Bone.007 is parented but not connected to Bone.003. |
user: How do I use Examples in Blender? Include parameters, examples, warnings and best practices.

assistant: - A single colored texture (0.5, 0.0, 0.5) creates a force in the direction of the positive Y axis,
  e.g. hair is orientated to the Y axis.
- A blend texture with color ramp can be used to created a force “plane”. E.g. on the left side (0.5, 0.5, 0.5),
  on the right side (1.0, 0.5, 0.5) you have a force plane perpendicular to XY (i.e. parallel to Z).
  If you use an object for the coordinates, you can use the object to push particles around.
- An animated wood texture can be used to create a wave like motion.
user: Show practical ways to work with CurveModifier(Modifier) in a Blender add-on or script – include code.

assistant: # CurveModifier(Modifier)

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

*class* bpy.types.CurveModifier(*Modifier*)
:   Curve deformation modifier

    deform_axis
    :   The axis that the curve deforms along

        Type:
        :   enum in [`'POS_X'`, `'POS_Y'`, `'POS_Z'`, `'NEG_X'`, `'NEG_Y'`, `'NEG_Z'`], default `'POS_X'`

    invert_vertex_group
    :   Invert vertex group influence

        Type:
        :   boolean, default False

    object
    :   Curve object to deform with

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

    vertex_group
    :   Name of Vertex Group which determines influence of modifier per point

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

    *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 Group and how is it used in Blender Python scripting?

assistant: # Group

A [Group Node](../../interface/controls/nodes/groups.html) combines a set of nodes into a single one,
and selectively exposes inputs and outputs of those nodes.

Group nodes can simplify a node tree by hiding away complexity and reusing functionality.
user: Provide the full official documentation entry for Guiding Lines, preserving all code examples.

assistant: # Guiding Lines

The *Guiding Lines* modifier replaces a stroke by a straight line connecting both of its ends.

Offset
:   Offset the start and end points along the original stroke, before generating the new straight one.

This modifier will produce reasonable results when strokes are short enough,
because shorter strokes are more likely to be well approximated by straight lines.
Therefore, it is recommended to use this modifier together with one of the splitting options
(by 2D angle or by 2D length) from the *Strokes* panel.

[image reference removed]

Guiding Lines modifier Demo by T.K.
([blend-file](https://archive.blender.org/wiki/2015/index.php/File:Toycar_Guiding_Line.zip)).
user: What is Header and how is it used in Blender Python scripting?

assistant: Action
:   A [data-block menu](../../../interface/controls/templates/data_block.xhtml#ui-data-block) that lets you change – or clear – the object’s active action.

Slot Display Name
:   Name of the slot, for display in the user interface.
    This name combined with the slot’s data-block type is unique within its Action.
user: What is NodeSocketFloatUnsigned(NodeSocketStandard) and how is it used in Blender Python scripting?

assistant: # NodeSocketFloatUnsigned(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.NodeSocketFloatUnsigned(*NodeSocketStandard*)
:   Floating-point number socket of a node

    default_value
    :   Input value used for unconnected socket

        Type:
        :   float in [0, inf], default 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: Provide the full official documentation entry for Menu Selection Tools, preserving all code examples.

assistant: These tools are variants of the previously described ones.
They’re available in the menu rather than the Toolbar
and work slightly differently.

### Box Select

To use this tool, you first activate the menu item or keyboard shortcut
and then drag a box as usual. Unlike *Select Box*, the default behavior
here is to add the items inside the box to the selection.
(The ones outside the box are not deselected.)

To remove the items inside the box from the selection,
hold `Shift`, or drag with `MMB` instead.

While dragging, you can additionally hold `Spacebar` to move the box around with the mouse.

### Circle Select

To use this tool, you first activate the menu item or keyboard shortcut
and then drag a circle around as usual. Unlike *Select Circle*, the default
behavior here is to add the items inside the circle to the selection.
(The ones outside the circle are not deselected.)

To remove the items inside the circle from the selection,
hold `Shift`, or drag with `MMB` instead.

You can change the radius of the circle by scrolling with the `Wheel`
or using the `NumpadPlus` and `NumpadMinus` keys.

Once activated, *Circle Select* stays active: you can release the mouse button
and start dragging somewhere else without having to press `C` again.
At the same time, however, it blocks all other parts of Blender while it’s active.
To deactivate the tool again, press `RMB`, `Return`, or `Esc`.

### Lasso Select

To use this tool, you first activate the menu item and drag a freeform shape
around the item(s) you want to select with `LMB`. The menu lets you choose
whether to set, extend or reduce the selection.

Alternatively, you can immediately start dragging with `Ctrl`-`RMB`.
Unlike *Select Lasso*, the default behavior then is to add the items inside
the lasso to the selection. (The ones outside the lasso are not deselected.)

To remove the items inside the lasso from the selection,
drag with `Shift`-`Ctrl`-`RMB` instead.

While dragging, you can additionally hold `Spacebar` to move the lasso
around with the mouse.
user: Show practical ways to work with GeometryNodeSetGreasePencilDepth(GeometryNode) in a Blender add-on or script – include code.

assistant: # GeometryNodeSetGreasePencilDepth(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.GeometryNodeSetGreasePencilDepth(*GeometryNode*)
:   Set the Grease Pencil depth order to use

    depth_order
    :   Type:
        :   enum in [Stroke Depth Order Items](bpy_types_enum_items/stroke_depth_order_items.html#rna-enum-stroke-depth-order-items), default `'2D'`

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

assistant: Grid
:   The input grid whose background value will be modified.

Background
:   The value to assign to inactive or uninitialized voxels and tiles.

    When sampling outside the defined region of the grid, this value will be
    returned instead of zero.
user: How do I use Download Blender in Blender? Include parameters, examples, warnings and best practices.

assistant: Blender offers a variety of different binary packages to choose from depending on their level of stability. Each
package has the trade off of newest features versus stability. The package that is right for you depends on your
requirements for those two. A studio, for example, might want to have *long-term support*, while a hobbyist may want
newer features, while others may just want to test upcoming features. Each package described below has something just
right for everyone.

[Stable Release](https://www.blender.org/download/)
:   A package that contains the latest features and is considered stable without regressions. A new stable version is
    available roughly every three months.

[Long-term Support](https://www.blender.org/download/lts/)
:   A package designed for long-lasting projects requiring a very stable version of Blender. LTS releases are supported for two years and will not have any new features, API changes or
    improvements. A new long-term support version is available every year. *These LTS releases will occasionally have
    minor patches (such as 4.2.6) which improve stability or fix critical bugs.*

[Daily Builds](https://builder.blender.org/download/)
:   A package updated daily to include the newest changes in development. These versions are automatically built on a
    schedule. They are not as thoroughly tested as the release types above, and might break or crash. Builds marked as
    **Alpha** are still undergoing major changes and feature additions, while those marked **Beta** are
    feature-complete and are under development for refinement and stability.

    Stability can be expected to increase from Alpha to Beta to Release Candidate (RC) to a final release.

[Build from Source](https://developer.blender.org/docs/handbook/building_blender/)
:   Blender’s source code is available for free to either reference or to build and use. While normal users are
    **not** expected to compile Blender, it does have advantages:

    - Blender is always up to date.
    - It allows access to any version or branch where a feature is being developed.
    - It can be freely customized.
    - Curious users can look through the source code and make small changes to see the effects to better understand how
      Blender works.

The procedure for installing a binary, either the latest stable release or a daily build, is the same. Follow the
steps for your platform listed below.
user: Describe CollectionChildren(bpy_struct) from the Blender manual or Python API, including usage steps and snippets.

assistant: # CollectionChildren(bpy_struct)

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

*class* bpy.types.CollectionChildren(*bpy_struct*)
:   Collection of child collections

    link(*child*)
    :   Add this collection as child of this collection

        Parameters:
        :   **child** ([`Collection`](bpy.types.Collection.html#bpy.types.Collection "bpy.types.Collection"), (never None)) – Collection to add

    unlink(*child*)
    :   Remove this child collection from a collection

        Parameters:
        :   **child** ([`Collection`](bpy.types.Collection.html#bpy.types.Collection "bpy.types.Collection")) – Collection to remove

    *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 Move/Scale Texture Space: syntax, arguments, return values, common patterns.

assistant: # Move/Scale Texture Space

The Move/Scale Texture Space tool transforms the [Texture Space](../../../../modeling/meshes/uv/uv_texture_spaces.xhtml#properties-texture-space)
of the object, instead of the object or element itself.
user: What is Parenting and how is it used in Blender Python scripting?

assistant: # Parenting

You can edit the relationships between bones (and hence create/modify the chains of bones)
both from the 3D Viewport and the Properties. Whatever method you prefer,
it’s always a matter of deciding, for each bone, if it has to be parented to another one,
and if so, if it should be connected to it.

To parent and/or connect bones, you can:

In the *3D Viewport*, select the bone and *then* its future parent, and press `Ctrl`-`P`
(or Armature ‣ Parent ‣ Make Parent…).
In the small *Make Parent* menu that pops up, choose *Connected*
if you want the child to be connected to its parent, else click on *Keep Offset*.
If you have selected more than two bones, they will all be parented to the last selected one.
If you only select one already-parented bone, or all selected bones are already parented to the last selected one,
your only choice is to connect them, if not already done.
If you select only one non-parented bone, you will get the *Need selected bone(s)* error message…

In the *Properties*, Bones tab, for each selected bone,
you can select its parent in the *Parent* data ID to the upper right corner of its Relations panel.
If you want them to be connected, just enable the checkbox to the right of the list.

Parenting example.

|  |  |
| --- | --- |
| ../../../../_images/animation_armatures_bones_editing_parenting_start.png   The starting armature, with Bone.005 parented and connected to Bone.004. | ../../../../_images/animation_armatures_bones_editing_parenting_unconnected.png   Bone.005 re-parented to Bone.002, but not connected to it (same result, using either `Ctrl`-`P` `2` in 3D Viewport, or the Bones tab settings). |
| ../../../../_images/animation_armatures_bones_editing_parenting_connected.png   Bone.005 parented and connected to Bone.002, using `Ctrl`-`P` `1` in 3D Viewport. | ../../../../_images/animation_armatures_bones_editing_parenting_data-id.png   Bone.005 parented and connected to Bone.002.  Using the Parent data ID of Bone.005 Relations panel. |

To disconnect and/or free bones, you can:

- In a 3D Viewport, select the desired bones, and press `Alt`-`P`
  (or Armature ‣ Parent ‣ Clear Parent…).
  In the small *Clear Parent* menu that pops up, choose *Clear Parent* to completely free all selected bones,
  or *Disconnect Bone* if you just want to break their connections.
- In the Properties, *Bones* tab, for each selected bone, you can select no parent
  in the *Parent* data ID of its Relations panel, to free it completely.
  If you just want to disconnect it from its parent, disable the *Connected* checkbox.

Note that relationships with non-selected children are never modified.
user: Provide the full official documentation entry for ShaderNodeBsdfRayPortal(ShaderNode), preserving all code examples.

assistant: # ShaderNodeBsdfRayPortal(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.ShaderNodeBsdfRayPortal(*ShaderNode*)
:   Continue tracing from an arbitrary new position and in a new direction

    *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 Attribute Domain Without Corner Items in a Blender add-on or script – include code.

assistant: # Attribute Domain Without Corner Items

POINT:
:   Point.

    Attribute on point.

EDGE:
:   Edge.

    Attribute on mesh edge.

FACE:
:   Face.

    Attribute on mesh faces.

CURVE:
:   Spline.

    Attribute on spline.

INSTANCE:
:   Instance.

    Attribute on instance.

LAYER:
:   Layer.

    Attribute on Grease Pencil layer.
user: What is Instance Transform Node and how is it used in Blender Python scripting?

assistant: # Instance Transform Node

[image reference removed]

The *Instance Transform* outputs the [Transformation Matrix](../../../glossary/index.html#term-Transformation-Matrix) of each top-level instance in the
local space of the modifier object.

The [Instances](../instances.html) page contains more information about geometry instances.
user: How do I use Inputs in Blender? Include parameters, examples, warnings and best practices.

assistant: Volume
:   Standard volume geometry input.

Mode
:   Random:
    :   Distribute points randomly inside of the volume. The local point count is implicitly
        defined as a product of the global from the *Density* input and the local voxel value.
        This method creates a distribution that is not stable as the input volume deforms.

    Grid:
    :   Distribute the points in a grid pattern inside of the volume. At each grid point, the voxel
        value is used to determine whether to add a point.

Density Random
:   Number of points to sample per unit volume.

Seed Random
:   Seed used by the random number generator to generate random points

Spacing Grid
:   Spacing between grid points.

Threshold Grid
:   Minimum value of a volume cell to contain a grid point.
user: Explain Group Output in complete detail according to the official Blender documentation.

assistant: Receives the outputs of the node group. You can have multiple of these nodes in your tree to keep it clean,
outputting each result right where it’s produced (rather than dragging long links all across your graph).

The output slots can be edited in the *Group* tab of the *Sidebar*.
user: Provide the full official documentation entry for SurfaceCurve(Curve), preserving all code examples.

assistant: # SurfaceCurve(Curve)

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

*class* bpy.types.SurfaceCurve(*Curve*)
:   Curve data-block used for storing surfaces

    *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 Sculpt Mode Overlays, preserving all code examples.

assistant: Mask
:   Show [Masks](../../../sculpt_paint/sculpting/editing/mask.html#sculpt-mask-menu) as overlays on an object. The opacity of the overlay can be adjusted.

Face Sets
:   Show [Face Sets](../../../sculpt_paint/sculpting/editing/face_sets.html#sculpting-editing-facesets) as overlays on an object.
    The opacity of the overlay can be adjusted.
user: Give a detailed overview of limbs.super_finger: syntax, arguments, return values, common patterns.

assistant: Will create a bendy and stretchy finger chain with a master control bone that controls the rotation of
all joints through its scale.

Requirement: A chain of at least two connected bones.

Bend Rotation Axis (Automatic, X, Y, Z, -X, -Y, -Z)
:   Defines the automatic rotation axis to be linked to the scale of the master bone.

B-Bone Segments (integer)
:   Defines the number of b-bone segments each tweak control will be split into.

IK Control
:   Generates a very simple IK mechanism with only one control.

    IK starts its work with the shape of the finger defined by FK controls and adjusts it
    to make the fingertip touch the IK control. It is designed as a tool to temporarily keep
    the fingertip locked to a surface it touches, rather than a fully featured posing system.

    To improve performance, the switchable parent for the IK control contains only one option beside None.
    Thus it is advised to add a ‘held object’ control using the [basic.raw_copy](basic.xhtml#rigify-rigs-basic-pivot)
    rig to act as the common parent for the fingers with a fully functional parent switch.

IK Local Location
:   Specifies the value of the Local Location option for IK controls, which decides if the location
    channels are aligned to the local control orientation or world.

Assign Tweak Layers
:   If enabled, allows placing the Tweak controls in different bone collections from the main controls.

Assign Extra IK Layers
:   If enabled, allows placing the extra IK control in different bone collections from the main controls.
user: What is Subdivision and how is it used in Blender Python scripting?

assistant: GPU Subdivision
:   Under certain circumstances, the GPU will be used to subdivide a mesh with a
    [Subdivision Surface modifier](../../modeling/modifiers/generate/subdivision_surface.html).
    This typically results in increased subdivision performance.

    This feature is not supported on Qualcomm GPUs on Windows
user: How do I use Animation in Blender? Include parameters, examples, warnings and best practices.

assistant: Controls animation data for scene-level properties, including active [Actions](../../animation/actions.html)
and their assigned [Slot](../../animation/actions.html#animation-actions-slots).

See [Manually Assigning Actions and Slots](../../animation/actions.html#animation-actions-slots-manual-assign) for more information.

Scene
:   Specifies the action and slot where animation data for scene properties is stored/retrieved.
user: Provide the full official documentation entry for Environment Variables, preserving all code examples.

assistant: BLENDER_USER_RESOURCES:
:   Replace default directory of all user files.
    Other `BLENDER_USER_*` variables override when set.

BLENDER_USER_CONFIG:
:   Directory for user configuration files.

BLENDER_USER_SCRIPTS:
:   Directory for user scripts.

BLENDER_USER_EXTENSIONS:
:   Directory for user extensions.

BLENDER_USER_DATAFILES:
:   Directory for user data files (icons, translations, ..).

BLENDER_SYSTEM_RESOURCES:
:   Replace default directory of all bundled resource files.

BLENDER_SYSTEM_SCRIPTS:
:   Directories to add extra scripts.

BLENDER_SYSTEM_EXTENSIONS:
:   Directory for system extensions repository.

BLENDER_SYSTEM_DATAFILES:
:   Directory to replace bundled datafiles.

BLENDER_SYSTEM_PYTHON:
:   Directory to replace bundled Python libraries.

BLENDER_CUSTOM_SPLASH:
:   Full path to an image that replaces the splash screen.

BLENDER_CUSTOM_SPLASH_BANNER:
:   Full path to an image to overlay on the splash screen.

BLENDER_OCIO:
:   Path to override the OpenColorIO configuration file.
    If not set, the `OCIO` environment variable is used.

TEMP:
:   Store temporary files here (MS-Windows).

TMPDIR:
:   Store temporary files here (UNIX Systems).
    The path must reference an existing directory or it will be ignored.
user: Describe Axis Angle to Rotation Node from the Blender manual or Python API, including usage steps and snippets.

assistant: # Axis Angle to Rotation Node

[image reference removed]

The *Axis Angle to Rotation* node converts a [axis angle](../../../../advanced/appendices/rotations.xhtml#axis-angle-mode) rotation to a standard rotation
value.
user: Explain Bump Node in complete detail according to the official Blender documentation.

assistant: # Bump Node

[image reference removed]

The *Bump* node generates a perturbed normal from a height texture, for bump mapping.
The height value will be sampled at the shading point and two nearby points
on the surface to determine the local direction of the normal.
user: Give a detailed overview of ThemeRegionsScrubbing(bpy_struct): syntax, arguments, return values, common patterns.

assistant: # ThemeRegionsScrubbing(bpy_struct)

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

*class* bpy.types.ThemeRegionsScrubbing(*bpy_struct*)
:   back
    :   Type:
        :   float array of 4 items in [0, 1], default (0.0, 0.0, 0.0, 0.0)

    text
    :   Type:
        :   [`mathutils.Color`](mathutils.html#mathutils.Color "mathutils.Color") of 3 items in [0, 1], default (0.0, 0.0, 0.0)

    time_marker
    :   Type:
        :   float array of 4 items in [0, 1], default (0.0, 0.0, 0.0, 0.0)

    time_marker_selected
    :   Type:
        :   float array of 4 items in [0, 1], default (0.0, 0.0, 0.0, 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: Provide the full official documentation entry for Plane, preserving all code examples.

assistant: # Plane

Moves vertices toward or away from the brush plane along its normal direction.

The *Plane* brush flattens geometry to a virtual plane
or raises the surface relative to it, depending on brush settings.
The *Height* and *Depth* parameters control the range of influence above and below the plane,
allowing precise shaping of flat surfaces or plateaus.
user: Describe GeometryNodeGridAdvect(GeometryNode) from the Blender manual or Python API, including usage steps and snippets.

assistant: # GeometryNodeGridAdvect(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.GeometryNodeGridAdvect(*GeometryNode*)
:   Move grid values through a velocity field using numerical integration. Supports multiple integration schemes for different accuracy and performance trade-offs

    data_type
    :   Node socket data type

        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), default `'FLOAT'`

    *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 Store Named Grid Node and how is it used in Blender Python scripting?

assistant: # Store Named Grid Node

[image reference removed]

The *Store Named Grid* node stores a voxel grid inside a volume geometry under a specified name.
This allows multiple grids (such as *density*, *temperature*, or *velocity*) to
be contained within a single volume object and accessed later using the
[Get Named Grid](../read/get_named_grid.xhtml) node.

If a grid with the same name already exists in the input volume, it will be replaced by the new grid.
This makes it possible to update or overwrite grids during a geometry node
evaluation, for example when generating or modifying simulation fields.
user: Provide the full official documentation entry for References, preserving all code examples.

assistant: |  |  |
| --- | --- |
| - [`bpy.context.texture_user_property`](bpy.context.html#bpy.context.texture_user_property "bpy.context.texture_user_property") - [`Function.parameters`](bpy.types.Function.html#bpy.types.Function.parameters "bpy.types.Function.parameters") | - [`Struct.properties`](bpy.types.Struct.html#bpy.types.Struct.properties "bpy.types.Struct.properties") |
user: Give a detailed overview of Tool Settings: syntax, arguments, return values, common patterns.

assistant: Create Quads
:   When creating a new triangle that shares an edge with an existing one,
    automatically [dissolves](../editing/mesh/delete.html#bpy-ops-mesh-dissolve) this edge so you’re left with a quad.
user: How do I use About Blender in Blender? Include parameters, examples, warnings and best practices.

assistant: # About Blender

Blender is the free and open-source 3D creation suite. It supports the entirety of the 3D pipeline: modeling, rigging,
animation, simulation, rendering, compositing, motion tracking and video editing.

Blender provides a consistent experience across Linux, macOS, and Windows operating systems via OpenGL.

[image reference removed]
user: What is Utility Brushes and how is it used in Blender Python scripting?

assistant: [image reference removed]

No clear color assignment.
These brushes are general purpose brushes or specific.

Density
:   Brush Type: [Density](simplify.xhtml)

    Cleans up geometry by collapsing short edges. Specifically for use with [Dyntopo](../introduction/adaptive.xhtml#dyntopo-introduction).

Mask
:   Brush Type: [Mask](mask.xhtml)

    Shortcut: `M`

    Paints a selection on parts of the mesh to be unaffected by other brushes.

Draw Face Sets
:   Brush Type: [Draw Face Sets](draw_facesets.xhtml)

    Paint new, smooth or extend existing Face Sets.

Erase Multires Displacement
:   Brush Type: [Erase Multires Displacement](multires_displacement_eraser.xhtml)

    Remove displacement information on a Multiresolution modifier.

Smear Multires Displacement
:   Brush Type: [Smear Multires Displacement](multires_displacement_smear.xhtml)

    Smear displacement information on a Multiresolution modifier.
user: Provide the full official documentation entry for Socket Syncing, preserving all code examples.

assistant: Closures rely on matching socket names to connect inputs and outputs correctly.
If the connected *Closure Zone* and *Evaluate Closure* nodes have mismatched signatures, Blender can synchronize them
automatically.

- A sync icon appears when the socket layout differs.
- Clicking the icon updates sockets to match the connected closure.
- Automatic syncing occurs the first time a closure is connected.
- Existing sockets are never modified automatically afterward to prevent data loss.
user: Describe BlendDataMovieClips(bpy_struct) from the Blender manual or Python API, including usage steps and snippets.

assistant: # BlendDataMovieClips(bpy_struct)

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

*class* bpy.types.BlendDataMovieClips(*bpy_struct*)
:   Collection of movie clips

    tag(*value*)
    :   tag

        Parameters:
        :   **value** (*boolean*) – Value

    remove(*clip*, *\**, *do_unlink=True*, *do_id_user=True*, *do_ui_user=True*)
    :   Remove a movie clip from the current blendfile.

        Parameters:
        :   - **clip** ([`MovieClip`](bpy.types.MovieClip.html#bpy.types.MovieClip "bpy.types.MovieClip"), (never None)) – Movie clip to remove
            - **do_unlink** (*boolean**,* *(**optional**)*) – Unlink all usages of this movie clip before deleting it
            - **do_id_user** (*boolean**,* *(**optional**)*) – Decrement user counter of all data-blocks used by this movie clip
            - **do_ui_user** (*boolean**,* *(**optional**)*) – Make sure interface does not reference this movie clip

    load(*filepath*, *\**, *check_existing=False*)
    :   Add a new movie clip to the main database from a file (while `check_existing` is disabled for consistency with other load functions, behavior with multiple movie-clips using the same file may incorrectly generate proxies)

        Parameters:
        :   - **filepath** (string, (never None, blend relative `//` prefix supported)) – path for the data-block
            - **check_existing** (*boolean**,* *(**optional**)*) – Using existing data-block if this file is already loaded

        Returns:
        :   New movie clip data-block

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

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

assistant: ### Available Keys

When customizing keymaps it’s useful to use keys which won’t conflict with Blender’s default keymap.

Here are keys which aren’t used and aren’t likely to be used in the future.

F-Keys (`F5` - `F8`)
:   These F-keys (including modifier combination)
    have been intentionally kept free for users to bind their own keys to.

`OSKey` (also known as the `Windows-Key`, `Cmd` or `Super`)
:   Blender doesn’t use this key for any bindings.

    *macOS* is an exception, where `Cmd` replaces `Ctrl`
    except in cases it would conflict with the system’s key bindings.

`Hyper` is a modifier available on Wayland and X11
:   Blender doesn’t use this key for any bindings.

    Note that this modifier typically needs to be configured,
    see: [!136340](https://projects.blender.org/blender/blender/pulls/136340) for details.

Modifier Double Click
:   Binding modifier keys as primary keys is supported,
    to avoid conflicts with regular usage you can bind them to double click.

### Multi-Action Keys

#### Click/Drag

It’s possible to configure a single key to perform multiple operations
using *Click* event instead of *Press*. Then you may bind *Drag* to a separate action.

This is useful for mixing actions where one uses a drag event, e.g:
Toggle a setting using with `Tab`, drag to open a pie menu showing all options related to the setting.

This is used in the default keymap in the 3D Viewport,
`Alt`-`MMB` dragging in different directions rotates the view.
user: Provide the full official documentation entry for ShaderNodeTexIES(ShaderNode), preserving all code examples.

assistant: # ShaderNodeTexIES(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.ShaderNodeTexIES(*ShaderNode*)
:   Match real world lights with IES files, which store the directional intensity distribution of light sources

    filepath
    :   IES light path

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

    ies
    :   Internal IES file

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

    mode
    :   Whether the IES file is loaded from disk or from a text data-block

        - `INTERNAL`
          Internal – Use internal text data-block.
        - `EXTERNAL`
          External – Use external .ies file.

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

    *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 Swap in complete detail according to the official Blender documentation.

assistant: The *Swap* operator replaces the selected node with another node type chosen from the menu.

All existing links are automatically reconnected where possible,
matching input and output sockets by name and type.
If a connection cannot be matched, it is left unconnected.
user: How do I use Outputs in Blender? Include parameters, examples, warnings and best practices.

assistant: Vertex Count
:   This output is simply the number of sides of each face, or how many corners each face has.

Neighboring Face Count
:   The number of faces that connect to this face with at least one edge. On a regular manifold
    mesh with only quads and triangles, this will be the same as the vertex count, otherwise it might
    be completely different.
user: Show practical ways to work with Asset in a Blender add-on or script – include code.

assistant: If you want to move a tool into a menu of your choice, reuse it in other blend-files,
or share it with other people, you need to turn it into an
[asset](../../files/asset_libraries/introduction.xhtml). Simply right-click the node group name
in the Geometry Node Editor’s header and choose *Mark as Asset*.

Once this is done, the node group will appear in the [Asset Browser](../../editors/asset_browser.xhtml)’s
*Unassigned* [catalog](../../files/asset_libraries/catalogs.xhtml). You can then move it into a catalog
named after a menu to make it appear at the end of that menu.

Finally, you can save the blend-file as an [asset bundle](../../editors/asset_browser.xhtml#asset-bundles) and copy it into
an asset library (described on linked page). From then on, the tool will be available in any
blend-file you work with. You can also share the asset bundle file with others.