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

assistant: # GeometryNodeIndexOfNearest(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.GeometryNodeIndexOfNearest(*GeometryNode*)
:   Find the nearest element in a group. Similar to the “Sample Nearest” node

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Describe Cursor from the Blender manual or Python API, including usage steps and snippets.

assistant: The cursor can be disabled by toggling the checkbox in the *Cursor* header.

Color
:   Set the color of the brush ring. Depending on the current mode there will
    be options to set a single Color or a Color for Adding/Subtracting.
user: Describe Bundled Assets from the Blender manual or Python API, including usage steps and snippets.

assistant: Blender includes many assets out of the box, these are contained in the “Essentials” library.

Included in this library are:

- [Hair node groups](../../modeling/geometry_nodes/hair/index.xhtml)
- [Smooth By Angle Node Group](../../modeling/geometry_nodes/normals/smooth_by_angle.xhtml)
- Brushes:

  - [Mesh Sculpt](../../sculpt_paint/sculpting/brushes/index.xhtml)
  - [Curve Sculpt](../../sculpt_paint/curves_sculpting/brushes/index.xhtml)
  - [Texture Paint](../../sculpt_paint/texture_paint/brushes.xhtml)
  - [Vertex Paint](../../sculpt_paint/vertex_paint/brushes.xhtml)
  - [Weight Paint](../../sculpt_paint/weight_paint/brushes.xhtml)
user: How do I use ShaderNodeShaderToRGB(ShaderNode) in Blender? Include parameters, examples, warnings and best practices.

assistant: # ShaderNodeShaderToRGB(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.ShaderNodeShaderToRGB(*ShaderNode*)
:   Convert rendering effect (such as light and shadow) to color. Typically used for non-photorealistic rendering, to apply additional effects on the output of BSDFs.
    Note: only supported in EEVEE

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

assistant: F-Curves are similar to [Curve objects](../../../modeling/curves/introduction.xhtml) in that they interpolate
between a set of user-defined control points. However, because their purpose is to define a *single*
value on every frame, there’s an important difference: F-curves can’t be closed or otherwise made to
turn back on themselves. They always continue going further to the right.

If you try to make a curve go left by dragging one control point past another,
it switches the order of the points to prevent this.

Two control points switching: the curve cannot go back in time!

|  |  |
| --- | --- |
| ../../../_images/editors_graph-editor_fcurves_introduction_moving1.png   Before moving the second keyframe. | ../../../_images/editors_graph-editor_fcurves_introduction_moving2.png   After moving the second keyframe. |
user: How do I use References in Blender? Include parameters, examples, warnings and best practices.

assistant: |  |  |
| --- | --- |
| - [`MovieTrackingReconstruction.cameras`](bpy.types.MovieTrackingReconstruction.html#bpy.types.MovieTrackingReconstruction.cameras "bpy.types.MovieTrackingReconstruction.cameras") |  |
user: Explain Strip Video Modifier Type Items in complete detail according to the official Blender documentation.

assistant: # Strip Video Modifier Type Items

BRIGHT_CONTRAST:
:   Brightness/Contrast.

COLOR_BALANCE:
:   Color Balance.

COMPOSITOR:
:   Compositor.

CURVES:
:   Curves.

HUE_CORRECT:
:   Hue Correct.

MASK:
:   Mask.

TONEMAP:
:   Tone Map.

WHITE_BALANCE:
:   White Balance.
user: Give a detailed overview of NodeSocketFloat(NodeSocketStandard): syntax, arguments, return values, common patterns.

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

    default_value
    :   Input value used for unconnected socket

        Type:
        :   float in [-inf, 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: Give a detailed overview of BlendDataMeshes(bpy_struct): syntax, arguments, return values, common patterns.

assistant: # BlendDataMeshes(bpy_struct)

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

*class* bpy.types.BlendDataMeshes(*bpy_struct*)
:   Collection of meshes

    new(*name*)
    :   Add a new mesh to the main database

        Parameters:
        :   **name** (*string**,* *(**never None**)*) – New name for the data-block

        Returns:
        :   New mesh data-block

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

    new_from_object(*object*, *\**, *preserve_all_data_layers=False*, *depsgraph=None*)
    :   Add a new mesh created from given object (undeformed geometry if object is original, and final evaluated geometry, with all modifiers etc., if object is evaluated)

        Parameters:
        :   - **object** ([`Object`](bpy.types.Object.html#bpy.types.Object "bpy.types.Object"), (never None)) – Object to create mesh from
            - **preserve_all_data_layers** (*boolean**,* *(**optional**)*) – Preserve all data layers in the mesh, like UV maps and vertex groups. By default Blender only computes the subset of data layers needed for viewport display and rendering, for better performance.
            - **depsgraph** ([`Depsgraph`](bpy.types.Depsgraph.html#bpy.types.Depsgraph "bpy.types.Depsgraph"), (optional)) – Dependency Graph, Evaluated dependency graph which is required when preserve_all_data_layers is true

        Returns:
        :   Mesh created from object, remove it if it is only used for export

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

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

        Parameters:
        :   - **mesh** ([`Mesh`](bpy.types.Mesh.html#bpy.types.Mesh "bpy.types.Mesh"), (never None)) – Mesh to remove
            - **do_unlink** (*boolean**,* *(**optional**)*) – Unlink all usages of this mesh before deleting it (WARNING: will also delete objects instancing that mesh data)
            - **do_id_user** (*boolean**,* *(**optional**)*) – Decrement user counter of all data-blocks used by this mesh data
            - **do_ui_user** (*boolean**,* *(**optional**)*) – Make sure interface does not reference this mesh data

    tag(*value*)
    :   tag

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

    *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 NodeTreeInterfaceSocketImage(NodeTreeInterfaceSocket) in Blender? Include parameters, examples, warnings and best practices.

assistant: # NodeTreeInterfaceSocketImage(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.NodeTreeInterfaceSocketImage(*NodeTreeInterfaceSocket*)
:   Image socket of a node

    default_value
    :   Input value used for unconnected socket

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

    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: Give a detailed overview of Extrude Faces Along Normals: syntax, arguments, return values, common patterns.

assistant: # Extrude Faces Along Normals

Extrusion and offset will be locked in to only move along the local normals of the selected mesh.

Flip Normals
:   Only the *normals* of the new faces created from the extrusion will be flipped.

Dissolve Orthogonal Edges
:   Removes and connects edges whose faces form a flat surface and intersect new edges.

Offset
:   Amount to move geometry along the normals.

Offset Even
:   The length of the new edges will be uniform.

Proportional Editing
:   The extruded face will affect nearby geometry.
    See [Proportional Editing](../../../../editors/3dview/controls/proportional_editing.xhtml) for a full reference.
user: Show practical ways to work with Object Info Node in a Blender add-on or script – include code.

assistant: # Object Info Node

[image reference removed]

The *Object Info* node gets information from objects.
This can be useful to control parameters in the geometry node tree with an external object,
either directly by using its geometry, or via its transformation properties.

An *Object Info* node can be added quickly by dragging an object into the node editor.
user: Explain Noise in complete detail according to the official Blender documentation.

assistant: # Noise

Adding noise to the gas simulation creates a finer detailed looking simulation on top of the base.
This makes it possible to add more details to gases (i.e. fire or smoke or both) without changing
the overall fluid motion.

Besides enabling parts of the interface, checking *Noise* lets the cache know
which simulation data to read. If, for example, *Noise* is enabled but
there is no noise simulation data to read it will show an empty domain.
The checkbox does not reset the cache and can be used to switch
the view between base resolution and noise view.

Upres Factor
:   Factor by which to enhance the resolution of the noise. The scaling factor is coupled
    to the [Resolution Divisions](../settings.xhtml#bpy-types-fluiddomainsettings-resolution-max).

Strength
:   Strength of the noise. Higher values result in more turbulent vortices.

Scale
:   Scale of the noise. Greater values result in larger vortices.

Time
:   Animation time of the noise. This value has an influence on where the noise field is evaluated.
    It can be used as a seed to give wavelet noise a slightly different look in two domains that are
    otherwise the same.

    Smoke plume with varying animation time. While the fluid motion of all four smoke
    plumes are alike each example has a unique look.

    |  |  |
    | --- | --- |
    | ../../../../../_images/physics_fluid_type_domain_gas_noise_timeanim-0-1.png   Animation Time: 0.1 | ../../../../../_images/physics_fluid_type_domain_gas_noise_timeanim-1-0.png   Animation Time: 1.0 |
    | ../../../../../_images/physics_fluid_type_domain_gas_noise_timeanim-2-5.png   Animation Time: 2.5 | ../../../../../_images/physics_fluid_type_domain_gas_noise_timeanim-10-0.png   Animation Time: 10.0 |

    Comparison of fire simulations with and without noise at the same grid
    resolution.

    |  |  |
    | --- | --- |
    | ../../../../../_images/physics_fluid_type_domain_gas_noise_base-res-1.png   Resolution Divisions: 200, without noise | ../../../../../_images/physics_fluid_type_domain_gas_noise_base-res-2.png   Resolution Divisions: 100, Noise scale: 2. |

    Low division simulations with lots of *Upres Factor* divisions generally appear smaller in
    real-world scale and can be used to achieve pyroclastic plumes such as in the following image:

    [image reference removed]

Bake Noise, Free Noise
:   This option is only available when using the [Modular](../cache.xhtml#bpy-types-fluiddomainsettings-cache-type) cache type.

    The progress will be displayed in the status bar. Pressing `Esc` will pause the simulation.

    Once the simulation has been baked, the cache can be deleted by pressing *Free Noise*.
    It is possible to pause or resume a *Bake Noise* process.
user: Describe Clock from the Blender manual or Python API, including usage steps and snippets.

assistant: The simulation is tied to the animation system, with support for sub-steps.
It will only be evaluated while the animation frame changes, and is cached like
the existing physics simulations in Blender.
user: How do I use B in Blender? Include parameters, examples, warnings and best practices.

assistant: |  |  |
| --- | --- |
| - [**Baking**](glossary/index.xhtml#term-Baking) - [**Bevel**](glossary/index.xhtml#term-Bevel) - [**Bézier**](glossary/index.xhtml#term-Bezier) - [**Bit Depth**](glossary/index.xhtml#term-Bit-Depth) - [**Blend Modes**](glossary/index.xhtml#term-Blend-Modes) - [**Blender Session**](glossary/index.xhtml#term-Blender-Session) - [**Bone**](glossary/index.xhtml#term-Bone) - [**Bone Collection**](glossary/index.xhtml#term-Bone-Collection) | - [**Boolean**](glossary/index.xhtml#term-Boolean) - [**Bounding Box**](glossary/index.xhtml#term-Bounding-Box) - [**Bounding Volume Hierarchy**](glossary/index.xhtml#term-Bounding-Volume-Hierarchy) - bssrdf()   - [built-in function](render/cycles/osl/index.xhtml#id0) - built-in function   - [bssrdf()](render/cycles/osl/index.xhtml#id0) - [**Bump Mapping**](glossary/index.xhtml#term-Bump-Mapping) - [**BVH**](glossary/index.xhtml#term-BVH) |
user: What is ForeachGeometryElementInputItem(bpy_struct) and how is it used in Blender Python scripting?

assistant: # ForeachGeometryElementInputItem(bpy_struct)

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

*class* bpy.types.ForeachGeometryElementInputItem(*bpy_struct*)
:   color
    :   Color of the corresponding socket type in the node editor

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

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

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

assistant: *Link* creates a reference to data in a source file such that changes made there will be
reflected in the current file the next time it is reloaded.
In the [File Browser](../../editors/file_browser.html), navigate to the external source blend-file
and select the data-blocks you want to reuse.

Linked data-blocks are indicated with a chain icon in the [Outliner](../../editors/outliner/introduction.html).
They’re also listed in the Outliner’s *Blender File* [Display Mode](../../editors/outliner/interface.html#bpy-types-spaceoutliner-display-mode),
along with the path of the blend-file they originate from.

Linked data-blocks are initially not editable. This even includes the location/rotation/scale
of linked objects, which are locked to the transformation they have in the source file.
There are ways around this, however:

- If you link a collection with *Instance Collections* enabled or some
  [object data](../../scene_layout/object/introduction.html) with
  *Instance Object Data* enabled, the collection/object data will be referenced through
  an object created inside the current blend-file, which *can* be transformed.
  (This new object will be created at the [3D Cursor](../../editors/3dview/3d_cursor.html#editors-3dview-3d-cursor).)
- You can also do some level of editing/animating on linked (and thus normally locked)
  data-blocks using [Library Overrides](library_overrides.html).

### Options

These options are available in the right-hand panel of the File Browser.

Relative Path
:   Reference the external blend-file using a
    [relative path](../blend/open_save.html#files-blend-relative-paths) rather than an absolute one.

Select
:   Select the newly added objects.

Active Collection
:   When enabled, objects and collections will be added to the active collection of the active
    [view layer](../../render/layers/introduction.html).
    Otherwise, they will be added to a new “Linked Data” collection in the active view layer.

Instance Collections
:   When enabled, each linked collection will be added to the scene as an
    [instance collection](../../scene_layout/object/properties/instancing/collection.html)
    (that is, a single object that represents the entire collection).
    You can add more such instances using Add ‣ Collection Instance,
    or replace an instance by the collection contents using [Make Instances Real](../../scene_layout/object/editing/apply.html#bpy-ops-object-duplicates-make-real).

    When disabled, the collections will be added as-is so you can see their content in the
    Outliner and create Library Overrides.

Instance Object Data
:   When enabled, an object will be created for each directly linked object data.
    Otherwise, no object will be created and the object data will not be visible in
    the scene until you create one yourself (e.g. by dragging the object data from the
    Outliner into the 3D Viewport).
user: Provide the full official documentation entry for Select Linked, preserving all code examples.

assistant: Selects all control points connected to the active control point.

This operator makes it easier to select or deselect entire segments of a curve, especially in
dense or complex curves, where manually selecting each point would be time-consuming.

### Select Linked Pick

Selects (`L`) or deselects (`Shift`-`L`) control points
connected to the control point nearest the mouse cursor.
user: Show practical ways to work with Sensitivity in a Blender add-on or script – include code.

assistant: The collision margin is used to improve the performance and stability of rigid bodies.
Depending on the shape, it behaves differently: some shapes embed it,
while others have a visible gap around them.

The margin is *embedded* for these shapes:

- Sphere
- Box
- Capsule
- Cylinder
- Convex Hull: Only allows for uniform scale when embedded.

The margin is *not embedded* for these shapes:

- Cone
- Active Triangle Mesh
- Passive Triangle Mesh: Can be set to 0 most of the time.

Margin
:   Threshold of distance near the surface where collisions are still considered (best results when nonzero).
user: Give a detailed overview of CompositorNodeLevels(CompositorNode): syntax, arguments, return values, common patterns.

assistant: # CompositorNodeLevels(CompositorNode)

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

*class* bpy.types.CompositorNodeLevels(*CompositorNode*)
:   Compute average and standard deviation of pixel values

    *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")

    update()

    *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 Property Subtype Items, preserving all code examples.

assistant: # Property Subtype Items

NONE:
:   None.

FILE_PATH:
:   File Path.

DIR_PATH:
:   Directory Path.

FILE_NAME:
:   File Name.

BYTE_STRING:
:   Byte String.

PASSWORD:
:   Password.

    A string that is displayed hidden (’\*\*\*\*\*\*\*\*’).

PIXEL:
:   Pixel.

    A distance on screen.

PIXEL_DIAMETER:
:   Pixel.

    A distance on screen, specifically representing a diameter value.

UNSIGNED:
:   Unsigned.

PERCENTAGE:
:   Percentage.

    A percentage between 0 and 100.

FACTOR:
:   Factor.

    A factor between 0.0 and 1.0.

ANGLE:
:   Angle.

    A rotational value specified in radians.

TIME:
:   Time (Scene Relative).

    Time specified in frames, converted to seconds based on scene frame rate.

TIME_ABSOLUTE:
:   Time (Absolute).

    Time specified in seconds, independent of the scene.

DISTANCE:
:   Distance.

    A distance between two points.

DISTANCE_DIAMETER:
:   Distance.

    A distance between two points, specifically representing a diameter value.

DISTANCE_CAMERA:
:   Camera Distance.

POWER:
:   Power.

TEMPERATURE:
:   Temperature.

WAVELENGTH:
:   Wavelength.

COLOR_TEMPERATURE:
:   Color Temperature.

FREQUENCY:
:   Frequency.

COLOR:
:   Linear Color.

    Color in the scene linear working color space.

TRANSLATION:
:   Translation.

DIRECTION:
:   Direction.

VELOCITY:
:   Velocity.

ACCELERATION:
:   Acceleration.

MATRIX:
:   Matrix.

EULER:
:   Euler Angles.

    Euler rotation angles in radians.

QUATERNION:
:   Quaternion.

    Quaternion rotation (affects NLA blending).

AXISANGLE:
:   Axis-Angle.

    Angle and axis to rotate around.

XYZ:
:   XYZ.

XYZ_LENGTH:
:   XYZ Length.

COLOR_GAMMA:
:   sRGB Color.

    Color in sRGB color space (mainly for user interface colors).

COORDINATES:
:   Coordinates.

LAYER:
:   Layer.

LAYER_MEMBER:
:   Layer Member.
user: Describe Snapping from the Blender manual or Python API, including usage steps and snippets.

assistant: ### Move

[image reference removed]

One unit (default zoom level).

Snapping while moving objects changes the object location in 1 unit increments.
While in an [aligned view](../../../../../editors/3dview/navigate/align.xhtml),
The increment amount is changed based on the [zoom level](../../../../../editors/3dview/navigate/navigation.xhtml#bpy-ops-view3d-zoom).
For example, at a base zoom level objects are moved in increments of 1 unit (i.e. between the two light gray lines).
Zooming in enough to see the next set of gray lines will snap in increments of 1/10 of a unit.
Zooming in further until will snap in increments of 1/100 of a unit and so on until the zoom limit is reached.
Zooming out will have the opposite effect and
cause movement to happen by increments of 10, 100 units, etc.

### Rotation

Holding `Ctrl` will cause rotations of 5 degrees.

### Scale

Holding `Ctrl` will cause size changes in increments of 0.1 units.
user: Give a detailed overview of Properties: syntax, arguments, return values, common patterns.

assistant: The *Closure* node does not have functional properties of its own, but its interface is configurable through the
*Node* tab in the Sidebar. Inputs and outputs can be added, removed, and renamed to define the closure’s signature.

Sync Sockets
:   Updates the current node to match the socket signature of the connected nodes.
    Use this after renaming, adding, or removing sockets.

Define Signature
:   Marks the current zone as the source of a closure signature that other nodes can reference. This ensures consistent
    input and output definitions across multiple closure instances.

### Input Items

List of input sockets
:   Displays one entry per socket defined in the closure. Double-click an entry to rename it.

Add Item
:   Add a new input socket to the closure.

Remove Item
:   Delete the selected input socket.

Type
:   Defines the data type for the selected socket (e.g. Float, Vector, Geometry, Object, Bundle).
    For value types, a default value control appears and is used when the socket is unlinked.

Shape
:   Defines the data structure supported by the input socket, such as a *Single* value, *Field*, or *Grid*.
    The shape determines how the data is evaluated and passed through the node network.
    See [Socket Shape](../../../../interface/controls/nodes/parts.xhtml#interface-controls-nodes-socket-shape) for more information.

### Output Items

Available when the closure’s output zone is selected.

List of output sockets
:   Displays one entry per socket defined in the closure output. Double-click to rename.

Add Item
:   Add a new output socket to the closure.

Remove Item
:   Delete the selected output socket.

Type
:   Defines the data type for the selected socket (e.g. Float, Vector, Geometry, Object, Bundle).
    For value types, a default value control appears and is used when the socket is unlinked.

Shape
:   Defines the data structure supported by the input socket, such as a *Single* value, *Field*, or *Grid*.
    The shape determines how the data is evaluated and passed through the node network.
    See [Socket Shape](../../../../interface/controls/nodes/parts.xhtml#interface-controls-nodes-socket-shape) for more information.
user: How do I use Properties in Blender? Include parameters, examples, warnings and best practices.

assistant: Interpolation
:   Method to scale images up or down for sampling.

    Linear:
    :   Regular quality interpolation.

    Cubic:
    :   Smoother, better quality interpolation. For bump maps this should be used to get best results.

    Closest:
    :   No interpolation, use only closest pixel for rendering pixel art.

Extension
:   Extension defines how the image is extrapolated past the original bounds:

    Repeat:
    :   Will repeat the image horizontally and vertically giving tiled-looking result.

    Extend:
    :   Will extend the image by repeating pixels on its edges.

    Clip:
    :   Clip to the original image size and set all the exterior pixels values to transparent black.

    Mirror:
    :   Repeatedly flip the image horizontally and vertically.
user: Describe ShaderNodeAmbientOcclusion(ShaderNode) from the Blender manual or Python API, including usage steps and snippets.

assistant: # ShaderNodeAmbientOcclusion(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.ShaderNodeAmbientOcclusion(*ShaderNode*)
:   Compute how much the hemisphere above the shading point is occluded, for example to add weathering effects to corners.
    Note: For Cycles, this may slow down renders significantly

    inside
    :   Trace rays towards the inside of the object

        Type:
        :   boolean, default False

    only_local
    :   Only consider the object itself when computing AO

        Type:
        :   boolean, default False

    samples
    :   Number of rays to trace per shader evaluation

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

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: How do I use Path Guiding in Blender? Include parameters, examples, warnings and best practices.

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

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

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

Volume
:   Enable path guiding inside volumes.
user: Explain TextLine(bpy_struct) in complete detail according to the official Blender documentation.

assistant: # TextLine(bpy_struct)

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

*class* bpy.types.TextLine(*bpy_struct*)
:   Line of text in a Text data-block

    body
    :   Text in the line

        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 Sample Nearest Surface Node and how is it used in Blender Python scripting?

assistant: # Sample Nearest Surface Node

[image reference removed]

The *Sample Nearest Surface* node finds values at the closest points on
the surface of a source mesh geometry. Non-face attributes are interpolated
across the surface.

This node is similar to the [Geometry Proximity Node](../../geometry/sample/geometry_proximity.xhtml),
but it gives the value of any attribute at the closest surface point, not just its position.
user: Describe Playback Controls from the Blender manual or Python API, including usage steps and snippets.

assistant: The Playback Controls region contains controls and options
related to playback, keying, auto keyframing, and transport.

These settings allow you to:

- Control how animations are previewed and synchronized with audio.
- Insert and manage keyframes through keying sets and auto keying.
- Navigate the timeline using playback and transport controls.
- Adjust frame ranges and preview specific segments of the animation.

Sync Scene Time
:   Set the active scene and time based on the current scene strip.
    See the [workspace settings](../../../interface/window_system/workspaces.xhtml#bpy-types-workspace-use-scene-time-sync).
user: How do I use FModifierStepped(FModifier) in Blender? Include parameters, examples, warnings and best practices.

assistant: # FModifierStepped(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.FModifierStepped(*FModifier*)
:   Hold each interpolated value from the F-Curve for several frames without changing the timing

    frame_end
    :   Frame that modifier’s influence ends (if applicable)

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

    frame_offset
    :   Reference number of frames before frames get held (use to get hold for ‘1-3’ vs ‘5-7’ holding patterns)

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

    frame_start
    :   Frame that modifier’s influence starts (if applicable)

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

    frame_step
    :   Number of frames to hold each value

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

    use_frame_end
    :   Restrict modifier to only act before its ‘end’ frame

        Type:
        :   boolean, default False

    use_frame_start
    :   Restrict modifier to only act after its ‘start’ frame

        Type:
        :   boolean, default False

    *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 Lightgroups(bpy_struct): syntax, arguments, return values, common patterns.

assistant: # Lightgroups(bpy_struct)

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

*class* bpy.types.Lightgroups(*bpy_struct*)
:   Collection of Lightgroups

    add(*\**, *name=''*)
    :   add

        Parameters:
        :   **name** (*string**,* *(**optional**,* *never None**)*) – Name, Name of newly created lightgroup

        Returns:
        :   Newly created Lightgroup

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

    remove(*lightgroup*)
    :   Remove given light group

        Parameters:
        :   **lightgroup** ([`Lightgroup`](bpy.types.Lightgroup.html#bpy.types.Lightgroup "bpy.types.Lightgroup"), (never None)) – Lightgroup 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: How do I use ThemeStatusBar(bpy_struct) in Blender? Include parameters, examples, warnings and best practices.

assistant: # ThemeStatusBar(bpy_struct)

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

*class* bpy.types.ThemeStatusBar(*bpy_struct*)
:   Theme settings for the Status Bar

    space
    :   Settings for space

        Type:
        :   [`ThemeSpaceGeneric`](bpy.types.ThemeSpaceGeneric.html#bpy.types.ThemeSpaceGeneric "bpy.types.ThemeSpaceGeneric"), (readonly, 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: Give a detailed overview of MESH_UL_attributes(UIList): syntax, arguments, return values, common patterns.

assistant: # MESH_UL_attributes(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.MESH_UL_attributes(*UIList*)
:   draw_item(*_context*, *layout*, *_data*, *attribute*, *_icon*, *_active_data*, *_active_propname*, *_index*)

    filter_items(*_context*, *data*, *property*)

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

assistant: The *Blender Console Window* can display many different types of status and error messages. Some messages simply
inform the user what Blender is doing, but have no real impact on Blender’s ability to function. Other messages can
indicate serious errors that will most likely prevent Blender carrying out a particular task and may even make Blender
non-responsive or shut down completely. The *Blender Console Window* messages can also originate internally from
within the Blender code or from external sources such as [Python scripts](../editors/preferences/extensions.html).

`found bundled python: {DIR}`
:   This message indicates that Blender was able to find the [Python](../advanced/scripting/index.html#scripting-index) library for the Python
    interpreter embedded within Blender. If this folder is missing or unable to be found, it is likely that an error
    will occur, and this message will not appear.

`Read prefs: {DIR}/userpref.blend`
:   The preferences use this path.
user: Explain ID Mask Node in complete detail according to the official Blender documentation.

assistant: # ID Mask Node

[image reference removed]

The *ID Mask Node* creates a mask for a particular object or material in the render.
It relies on the *Object Index* or *Material Index* [render pass](../../../render/layers/passes.html),
which is only available when rendering with Cycles.
user: Provide the full official documentation entry for Checkboxes & Toggle Buttons, preserving all code examples.

assistant: [image reference removed]

Checkboxes and Toggle buttons.

These controls are used to activate or deactivate options.
Use `LMB` to change their state. A tick is shown on checkboxes when
the option is activated. Active status on toggle buttons is indicated
either by color on the icon background, or a change in icon graphics.

Use `Ctrl`-`Wheel` to cycle through on/off states.

### Dragging

To change many values at once on or off, you can press down
`LMB` and drag over multiple buttons.
user: What is Object Gpencil Type Items and how is it used in Blender Python scripting?

assistant: # Object Gpencil Type Items

EMPTY:
:   Blank.

    Create an empty Grease Pencil object.

STROKE:
:   Stroke.

    Create a simple stroke with basic colors.

MONKEY:
:   Monkey.

    Construct a Suzanne Grease Pencil object.

---

LINEART_SCENE:
:   Scene Line Art.

    Quickly set up Line Art for the entire scene.

LINEART_COLLECTION:
:   Collection Line Art.

    Quickly set up Line Art for the active collection.

LINEART_OBJECT:
:   Object Line Art.

    Quickly set up Line Art for the active object.
user: Describe Dpaint Operators from the Blender manual or Python API, including usage steps and snippets.

assistant: # Dpaint Operators

bpy.ops.dpaint.bake()
:   Bake dynamic paint image sequence surface

bpy.ops.dpaint.output_toggle(*\**, *output='A'*)
:   Add or remove Dynamic Paint output data layer

    Parameters:
    :   **output** (enum in [`'A'`, `'B'`], (optional)) – Output Toggle

bpy.ops.dpaint.surface_slot_add()
:   Add a new Dynamic Paint surface slot

bpy.ops.dpaint.surface_slot_remove()
:   Remove the selected surface slot

bpy.ops.dpaint.type_toggle(*\**, *type='CANVAS'*)
:   Toggle whether given type is active or not

    Parameters:
    :   **type** (enum in [Prop Dynamicpaint Type Items](bpy_types_enum_items/prop_dynamicpaint_type_items.html#rna-enum-prop-dynamicpaint-type-items), (optional)) – Type
user: Give a detailed overview of Rigid Body World: syntax, arguments, return values, common patterns.

assistant: The *Rigid Body World* is a group of rigid body objects,
which holds settings that apply to all rigid bodies in this simulation.

See [Rigid Body World](../../physics/rigid_body/world.xhtml) for more information.