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

assistant: By default Blender has a Remote Repository pointing towards the
[Official Blender Extensions Platform](https://extensions.blender.org) and two Local Repositories.

In the cases where more repositories are needed (e.g., to access third party extension platforms),
new repositories can be added.

[[image reference removed]](../../_images/editor_preferences_section_extensions_repositories.png)

Repositories.

To add new repositories click on the + icon:

Add Remote Repository
:   Add a repository from a URL.

Add Local Repository
:   Add a repository which will be managed by the user (to be used with Install from Disk).

To remove repositories click on the - icon:

Remove Repository
:   Remove an extension repository.

Remove Repository & Files
:   Remove a repository and delete all associated files when removing.

These changes are permanent and cannot be reversed.

### Remote Repository

Remote repository with support for listing and updating extensions.

Options:

Check for Updates on Startup
:   Allows Blender to check for updates upon launch.
    When updates are available a notification will be visible on the status bar.

Access Token
:   Personal access token, may be required by some repositories.

### Local Repository

A repository managed manually by the users.

There are two types of local repositories. By default new local repositories are added as User repositories.
This is what you want most of the time.

After creating a repository they can be changed in the Advanced options to have a source System.
These repositories are intended to [bundle extensions](../../advanced/deploying_blender.html#deploying-blender-bundling)
with Blender, to make it portable.
user: What is References and how is it used in Blender Python scripting?

assistant: |  |  |
| --- | --- |
| - [`BlendData.libraries`](bpy.types.BlendData.html#bpy.types.BlendData.libraries "bpy.types.BlendData.libraries") - [`BlendDataLibraries.remove`](bpy.types.BlendDataLibraries.html#bpy.types.BlendDataLibraries.remove "bpy.types.BlendDataLibraries.remove") - [`BlendImportContextItem.source_library`](bpy.types.BlendImportContextItem.html#bpy.types.BlendImportContextItem.source_library "bpy.types.BlendImportContextItem.source_library") - [`ID.library`](bpy.types.ID.html#bpy.types.ID.library "bpy.types.ID.library") | - [`Library.archive_libraries`](#bpy.types.Library.archive_libraries "bpy.types.Library.archive_libraries") - [`Library.archive_parent_library`](#bpy.types.Library.archive_parent_library "bpy.types.Library.archive_parent_library") - [`Library.parent`](#bpy.types.Library.parent "bpy.types.Library.parent") |
user: Describe NodeTreeInterfaceSocketBundle(NodeTreeInterfaceSocket) from the Blender manual or Python API, including usage steps and snippets.

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

    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: Explain Attaching a Crash Log in complete detail according to the official Blender documentation.

assistant: Attaching a crash log to your bug report (in the case of a hard crash) may help the development team to identify the
problem more easily. Follow the directions in [Crashes](crash.html) to locate the text file and upload it to the bug
report.
user: Show practical ways to work with Connecting Sockets in a Blender add-on or script – include code.

assistant: `LMB`-click on a socket and drag. “Connect to Output” will see a line coming out of it; this is called a *link*.
Keep dragging and connect the link to an input socket of another node, then release the `LMB`.

While multiple links can route out of an output socket, typically a single link can be attached to an input socket,
that is unless the input is a multi-socket input with looks like a pill shaped socket.

To swap multiple links of a similar type, press and hold `Alt` while moving a link.
This feature also works when adding a new link into a pre-existing socket.

To reposition the outgoing links of a node, rather than adding a new one,
hold `Ctrl` while dragging from an output socket.
This works for single as well as for multiple outgoing links.

Nodes that have no connections can be inserted on a link
by just move the node over the link and release when the link is highlighted.

Make Links `J`
:   Select multiple nodes with open sockets, then use the Make Links to create links between them.
    Use Make Links again if there are other nodes which can be connected.

Make and Replace Links `Shift`-`J`
:   *Make and Replace Links* works similarly to *Make Links*, but it will replace existing links if any exist.
user: What is Clip and how is it used in Blender Python scripting?

assistant: Set Scene Frames
:   See [Set Scene Frames](../editing/clip.xhtml#bpy-ops-clip-set-scene-frames).

Prefetch
:   See [Prefetch](../editing/clip.xhtml#bpy-ops-clip-prefetch).

Reload
:   See [Reload Clip](../editing/clip.xhtml#bpy-ops-clip-reload).
user: Show practical ways to work with Named Attributes in a Blender add-on or script – include code.

assistant: Named attributes are created and used in other areas of Blender like shaders, painting, and UV mapping.
In the [modifier panel](../modifiers/geometry_nodes.html), a named attribute can
be used for input by clicking the icon to the right of the value button.
The string input allows you to search and choose existing attributes from the modifier’s input geometry.

[image reference removed]

Attribute Search.

The attribute search gives a bit of context about each attribute.
To the left of the menu, the attribute domain is shown followed by the attribute name.
To the right of the menu, the attribute data type is shown.
user: Show practical ways to work with Rig Types in a Blender add-on or script – include code.

assistant: # Rig Types

Rig types are components used by Rigify to process specific parts of the meta-rig when generating the armature.
They represent common character features, like the spine, limbs, fingers etc.

This documents rig types that are bundled with Rigify.
user: What is Outputs and how is it used in Blender Python scripting?

assistant: Transform
:   The transform matrix that converts from grid index space to object space.
    Defines how the grid’s voxels are positioned, scaled, and oriented in 3D space.
    This can be passed to nodes such as
    [Set Grid Transform](../write/set_grid_transform.xhtml)
    or used to align other grids or geometry.

Background Value
:   The value assigned to inactive voxels in the grid.
    This represents the default or “empty” value used when sampling outside of active regions, as set by the
    [Set Grid Background](../write/set_grid_background.xhtml)
    node or similar operations.
user: What is VR Scene Inspection and how is it used in Blender Python scripting?

assistant: # VR Scene Inspection

The VR Scene Inspection add-on exposes and extends
the native virtual reality features of Blender in the user interface.
The feature set is limited to scene inspection use cases.
More advanced use cases may be enabled through further development inside of Blender.

VR support in Blender is based on the OpenXR specification and requires some set up steps.
These are explained in the [Head-Mounted Displays (HMD)](../../getting_started/configuration/hardware.xhtml#hardware-head-mounted-displays) section.
user: Provide the full official documentation entry for Duplicate, preserving all code examples.

assistant: Creates a copy of the selected points and reposition the duplicated points.

Duplicated points inherit all attributes from the original points.
- Can be used for manually scattering point clusters or duplicating specific regions for further modification.
user: How do I use Notes in Blender? Include parameters, examples, warnings and best practices.

assistant: - Parenting to one vertex tracks only the vertex’s position.
- Parenting to three vertices allows the child to follow both position and rotation, based on the triangle’s surface.
- The child object remains in Object Mode while the mesh stays in Edit Mode.
- Only one child object can be parented at a time using this method.
user: Describe Simplify from the Blender manual or Python API, including usage steps and snippets.

assistant: Reduces the complexity of Grease Pencil strokes by strategically removing points.
This is useful for cleaning up strokes, optimizing performance,
and preparing drawings for further editing or animation.
There are multiple modes; described below:

### Fixed

Deletes alternated points in the strokes, except the start and end points.

Steps
:   The number of times to repeat the procedure.

### Adaptive

Uses the RDP algorithm (Ramer-Douglas-Peucker algorithm) for points deletion.
The algorithm tries to obtain a similar line shape with fewer points.

Factor
:   Controls the amount of recursively simplifications applied by the algorithm.

### Sample

Recreates the stroke geometry with a predefined length between points.

Length
:   The distance between points on the recreated stroke.
    Smaller values will require more points to recreate the stroke,
    while larger values will result in fewer points needed to recreate the curve.

### Merge

Simplifies the stroke by merging points that are closer than the specified distance.

Distance
:   The maximum distance between vertices to determine which ones will be merged.
user: Give a detailed overview of StripProxy(bpy_struct): syntax, arguments, return values, common patterns.

assistant: # StripProxy(bpy_struct)

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

*class* bpy.types.StripProxy(*bpy_struct*)
:   Proxy parameters for a sequence strip

    build_100
    :   Build 100% proxy resolution

        Type:
        :   boolean, default False

    build_25
    :   Build 25% proxy resolution

        Type:
        :   boolean, default False

    build_50
    :   Build 50% proxy resolution

        Type:
        :   boolean, default False

    build_75
    :   Build 75% proxy resolution

        Type:
        :   boolean, default False

    build_record_run
    :   Build record run time code index

        Type:
        :   boolean, default False

    directory
    :   Location to store the proxy files

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

    filepath
    :   Location of custom proxy file

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

    quality
    :   Quality of proxies to build

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

    timecode
    :   Method for reading the inputs timecode

        - `NONE`
          None – Ignore generated timecodes, seek in movie stream based on calculated timestamp.
        - `RECORD_RUN`
          Record Run – Seek based on timestamps read from movie stream, giving the best match between scene and movie times.
        - `RECORD_RUN_NO_GAPS`
          Record Run No Gaps – Effectively convert movie to an image sequence, ignoring incomplete or dropped frames, and changes in frame rate.

        Type:
        :   enum in [`'NONE'`, `'RECORD_RUN'`, `'RECORD_RUN_NO_GAPS'`], default `'NONE'`

    use_overwrite
    :   Overwrite existing proxy files when building

        Type:
        :   boolean, default False

    use_proxy_custom_directory
    :   Use a custom directory to store data

        Type:
        :   boolean, default False

    use_proxy_custom_file
    :   Use a custom file to read proxy data from

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

assistant: Geometry
:   Standard geometry input.

Selection
:   Which top-level instances to realize.

Realize All
:   Realize all levels of nested instances for each top-level instances
    (overrides the value of the *Depth* input).

Depth
:   Number of levels of nested instances to realize for each top-level instance.
user: How do I use Face Corner Angle Node in Blender? Include parameters, examples, warnings and best practices.

assistant: # Face Corner Angle Node

[image reference removed]

The *Face Corner Angle* node outputs geometric information about the angle at each face corner
of a mesh. It can be used to analyze the shape of polygons, detect sharp corners, or create
procedural effects based on corner geometry.
user: Give a detailed overview of AssetMetaData(bpy_struct): syntax, arguments, return values, common patterns.

assistant: # AssetMetaData(bpy_struct)

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

*class* bpy.types.AssetMetaData(*bpy_struct*)
:   Additional data stored for an asset data-block

    active_tag
    :   Index of the tag set for editing

        Type:
        :   int in [-32768, 32767], default 0

    author
    :   Name of the creator of the asset

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

    catalog_id
    :   Identifier for the asset’s catalog, used by Blender to look up the asset’s catalog path. Must be a UUID according to RFC4122.

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

    catalog_simple_name
    :   Simple name of the asset’s catalog, for debugging and data recovery purposes

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

    copyright
    :   Copyright notice for this asset. An empty copyright notice does not necessarily indicate that this is copyright-free. Contact the author if any clarification is needed.

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

    description
    :   A description of the asset to be displayed for the user

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

    license
    :   The type of license this asset is distributed under. An empty license name does not necessarily indicate that this is free of licensing terms. Contact the author if any clarification is needed.

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

    tags
    :   Custom tags (name tokens) for the asset, used for filtering and general asset management

        Type:
        :   [`AssetTags`](bpy.types.AssetTags.html#bpy.types.AssetTags "bpy.types.AssetTags") [`bpy_prop_collection`](bpy.types.bpy_prop_collection.html#bpy.types.bpy_prop_collection "bpy.types.bpy_prop_collection") of [`AssetTag`](bpy.types.AssetTag.html#bpy.types.AssetTag "bpy.types.AssetTag"), (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: What is Histogram and how is it used in Blender Python scripting?

assistant: Shows three overlapping graphs, one for each color channel. Within each graph:

- The X axis corresponds to color intensity, going from 0 on the left (black)
  to 1 on the right (fully red/green/blue).
- The Y axis corresponds to number of pixels.

Use this mode to balance out the tonal range in an image.
A well-balanced image should have nice and smooth distribution of color values.

[image reference removed]

Example image.

[image reference removed]

Corresponding Histogram.
user: Give a detailed overview of Set Pivot: syntax, arguments, return values, common patterns.

assistant: Like Object and Edit Mode, Sculpt Mode also has a [Pivot Point](../../../glossary/index.html#term-Pivot-Point).
This is because the basic [move, rotate and scale](../tools/transforms.html)
transforms are also supported in Sculpt Mode.
But the pivot point in Sculpt Mode is unique. It always moves together with the transformed mesh
and can be both manually & automatically placed.

Origin
:   Sets the pivot to the origin of the sculpt.

Unmasked
:   Sets the pivot position to the average position of the unmasked vertices.

Mask Border
:   Sets the pivot position to the center of the mask’s border.
    This operation will automatically happen when using [Expand](expand.html#bpy-ops-sculpt-expand).

Active Vertex
:   Sets the pivot position to the active vertex position.

Surface `Shift`-`RMB`
:   Sets the pivot position to the surface under the cursor.
user: How do I use Simulation Brushes in Blender? Include parameters, examples, warnings and best practices.

assistant: These brushes are similar to regular brushes but with an additional cloth simulation applied.
These are ideally used on a relatively low resolution, since the mesh density defines the size of cloth dynamics.

[image reference removed]

Drag Cloth
:   Brush Type: [Cloth](cloth.xhtml)

    Nudges the geometry along the surface while minimally affecting the overall shape of the object.

Push Cloth
:   Brush Type: [Cloth](cloth.xhtml)

    Pushes geometry inwards or outwards.

Grab Cloth
:   Brush Type: [Cloth](cloth.xhtml)

    Grabs geometry within the brush radius firmly, while surrounding geometry is being simulated to follow.

Grab Planar Cloth
:   Brush Type: [Cloth](cloth.xhtml)

    Similar to Grab Cloth but with a line as the brush radius instead of a circle.

Grab Random Cloth
:   Brush Type: [Cloth](cloth.xhtml)

    Similar to Grab Cloth but with a noise texture applied to create more random variation.

Inflate Cloth
:   Brush Type: [Cloth](cloth.xhtml)

    Inflates the geometry outwards or inwards.

Expand/Contract Cloth
:   Brush Type: [Cloth](cloth.xhtml)

    Creates compression or stretching on geometry.

Pinch Point Cloth
:   Brush Type: [Cloth](cloth.xhtml)

    Pinches geometry to the center point of the radius, creating folds from all sides.

Pinch Folds Cloth
:   Brush Type: [Cloth](cloth.xhtml)

    Pinches only from two perpendicular sides along the stroke direction, creating parallel folds along the stroke.

Bend/Twist Cloth
:   Brush Type: [Pose](pose.xhtml)

    A pose brush that rotates geometry.

Stretch/Move Cloth
:   Brush Type: [Pose](pose.xhtml)

    A pose brush that translates and scales geometry.

Bend Boundary Cloth
:   Brush Type: [Boundary](boundary.xhtml)

    Bend only open boundaries of the mesh, folding the surrounding geometry in the process.

Twist Boundary Cloth
:   Brush Type: [Boundary](boundary.xhtml)

    Twist open boundaries of the mesh, creating twisting folds.
user: Explain FModifierGenerator(FModifier) in complete detail according to the official Blender documentation.

assistant: # FModifierGenerator(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.FModifierGenerator(*FModifier*)
:   Deterministically generate values for the modified F-Curve

    coefficients
    :   Coefficients for ‘x’ (starting from lowest power of x^0)

        Type:
        :   float array of 32 items in [-inf, inf], default (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)

    mode
    :   Type of generator to use

        Type:
        :   enum in [`'POLYNOMIAL'`, `'POLYNOMIAL_FACTORISED'`], default `'POLYNOMIAL'`

    poly_order
    :   The highest power of ‘x’ for this polynomial (number of coefficients - 1)

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

    use_additive
    :   Values generated by this modifier are applied on top of the existing values instead of overwriting them

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

assistant: # Input Nodes

Input nodes produce information from a data source.
For instance, an input can be:

- Taken directly from the active camera in a selected scene.
- A static image.
- A movie clip (such as an image sequence or video).
- A color or value.

These nodes generate the information that is passed to other nodes.
As such, they have no input sockets; only outputs.

---

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

assistant: |  |  |
| --- | --- |
| - [`MaskSpline.points`](bpy.types.MaskSpline.html#bpy.types.MaskSpline.points "bpy.types.MaskSpline.points") - [`MaskSplinePoints.remove`](bpy.types.MaskSplinePoints.html#bpy.types.MaskSplinePoints.remove "bpy.types.MaskSplinePoints.remove") | - [`MaskSplines.active_point`](bpy.types.MaskSplines.html#bpy.types.MaskSplines.active_point "bpy.types.MaskSplines.active_point") |
user: How do I use Snap Element Items in Blender? Include parameters, examples, warnings and best practices.

assistant: # Snap Element Items

INCREMENT:
:   Increment.

    Snap to increments.

GRID:
:   Grid.

    Snap to grid.

VERTEX:
:   Vertex.

    Snap to vertices.

EDGE:
:   Edge.

    Snap to edges.

FACE:
:   Face.

    Snap by projecting onto faces.

VOLUME:
:   Volume.

    Snap to volume.

EDGE_MIDPOINT:
:   Edge Center.

    Snap to the middle of edges.

EDGE_PERPENDICULAR:
:   Edge Perpendicular.

    Snap to the nearest point on an edge.

FACE_PROJECT:
:   Face Project.

    Snap by projecting onto faces.

FACE_NEAREST:
:   Face Nearest.

    Snap to nearest point on faces.
user: Give a detailed overview of Open Shading Language: syntax, arguments, return values, common patterns.

assistant: If Open Shading Language is chosen as the rendering backend,
node shaders are translated to OSL code and then compiled and executed by the OSL runtime.
In the process it applies its own extensive set of optimizations, both at compile time and run-time.

Open Shading Language can optimize out Script nodes if their outputs are unused or constant,
even if their OSL shaders have side effects like debug tracing and message passing,
which may be confusing. For that reason message passing with `setmessage` and `getmessage`
should generally not be used for passing information forward in the graph;
explicitly passing information through sockets should be preferred.
user: Give a detailed overview of Usage: syntax, arguments, return values, common patterns.

assistant: ### Activation and Deactivation

Use `Shift`-`Ctrl`-`LMB` on any node or socket to connect it to the active viewer.

In the viewport *View* menu, the *Viewer Node* option can toggle the visibility of
all viewer visualizations, allowing you to compare the evaluated result with the final object output.

### Keyboard Shortcuts

The Viewer node system provides shortcuts to quickly assign and activate viewers:

- **Assign Shortcut** (`Ctrl`-`1`, `Ctrl`-`2`, etc.):
  Select a viewer node and press a shortcut to assign it to that number.
  The assigned number appears in the upper-right corner of the node.
- **Activate Viewer** (`1`, `2`, etc.):
  Press the assigned number key to activate the corresponding viewer node.

### Viewing Single Socket Values

In addition to using the Viewer node, single-value sockets can display their evaluated values
directly within the node editor.
When enabled, the current evaluated value is shown beside the socket input, making it easy
to inspect and debug data flow without connecting a Viewer node.

This feature is available for scalar and small data types, such as *Float*, *Integer*, *Boolean*, or *Vector* sockets.
The displayed value updates interactively as the node tree evaluates or parameters change.

### Attribute Field Visualization

When the Viewer node has both a *Geometry* and a field input connected,
the values can be visualized directly in the 3D Viewport via the
[Viewer Overlay](../../../editors/3dview/display/overlays.html#dview-overlays-view-node).

The attribute’s [domain](../attributes_reference.html#attribute-domains) is determined automatically when possible.
Otherwise, the Viewer defaults to the *Face Corner* domain for meshes and the *Point* domain for curves.
The domain can also be set manually from the node’s properties.

In the Spreadsheet Editor, only the columns for attributes corresponding to the currently selected domain are shown.

### Pinning

The Viewer node can be *pinned* in the Spreadsheet Editor to keep its data visible even when it becomes inactive.
When pinned, the Spreadsheet continues showing the data from the pinned Viewer node,
regardless of changes to the active object or node selection.
user: Show practical ways to work with Options in a Blender add-on or script – include code.

assistant: [[image reference removed]](../../../_images/modeling_modifiers_modify_normal-edit_panel.png)

Normal Edit Modifier.

Radial
:   Aligns normals with the `(origin, vertex_coordinates)` vector, in other words all normals seems to radiate
    from the given center point, as if they were emitted from an ellipsoid surface.

Directional
:   Makes all normals point (converge) towards a given target object.

Target
:   Uses this object’s origin as reference point when generating normals.

    Optional in *Radial* mode, mandatory in *Directional* one.

Parallel Normals
:   Makes all normals parallel to the line between both objects’ origins,
    instead of converging towards target’s origin.

    Only relevant in *Directional* mode.

### Mix

Mix Mode
:   How to affect existing normals with newly generated ones.

    Note that the *Multiply* option is **not** a cross product, but a faster component-by-component multiplication.

Mix Factor
:   How much of the generated normals get mixed into existing ones.

Vertex Group
:   Allows per-item fine control of the mix factor. The vertex group influence can be inverted by using
    the arrow button to the right.

Max Angle
:   Forbids new generated normals to have an angle to the original normal above that given threshold.
    This is useful to prevent extreme changes, that can even lead to inverting the front/back sides of a face,
    and consequently to shading artifacts.

    / Lock Polygon Normals
    :   Prevents flipping (reversing front/back sides) of polygons which normal does not match anymore
        the side to which point its corners’ custom normals. Can also help to avoid shading issues.

### Offset

Gives modified object’s origin an offset before using it to generate normals.

Only relevant in *Radial* mode if no *Target Object* is set,
and in *Directional* mode when *Parallel Normals* is set.
user: Provide the full official documentation entry for Options, preserving all code examples.

assistant: [image reference removed]

Tint Modifier.

Mode
:   The color transformation will be applied on the stroke and/or the fill color.

    Stroke & Fill, Stroke, Fill

Strength
:   Controls the amount for the color mixing.

    A value of 0 respect the original stroke’s color,
    a value of 1.0 totally replace the original color with the tint color.

    A shift greater than 1.0 will make the points alpha less transparent than originally (2.0 is fully opaque).

Tint Type
:   Uniform:
    :   Color
        :   Defines the tint color for mixing with the original color.

    Gradient:
    :   Color Ramp
        :   Defines the tint gradient color for mixing with the original color.
            For controls see [Color Ramp Widget](../../../interface/controls/templates/color_ramp.xhtml#ui-color-ramp-widget).

        Object
        :   A [Data ID](../../../interface/controls/templates/data_block.xhtml#ui-data-id) to select an object (usually an empty),
            which position and rotation will be used to define the center of the effect.

        Radius
        :   Defines the maximum distance of the effect.

### Influence

See [Influence Filters](../introduction.xhtml#grease-pencil-modifier-influence-filters).
user: Provide the full official documentation entry for SplineBezierPoints(bpy_struct), preserving all code examples.

assistant: # SplineBezierPoints(bpy_struct)

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

*class* bpy.types.SplineBezierPoints(*bpy_struct*)
:   Collection of spline Bézier points

    add(*count*)
    :   Add a number of points to this spline

        Parameters:
        :   **count** (*int in* *[**0**,* *inf**]*) – Number, Number of points to add to the spline

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

assistant: # Smear Multires Displacement

This tool deforms displacement information of
the [Multires Modifier](../../../modeling/modifiers/generate/multiresolution.xhtml),
moving the displaced vertices without affecting the base mesh.

Smearing effect can be used multiple times
over the same area without generating any artifacts in the topology.
user: Describe Examples from the Blender manual or Python API, including usage steps and snippets.

assistant: |  |  |
| --- | --- |
| ../../../_images/render_shader-nodes_shader_diffuse_example.jpg   Lambertian reflection. | ../../../_images/render_shader-nodes_shader_diffuse_behavior.svg   Diffuse shader behavior. |
| ../../../_images/render_shader-nodes_shader_diffuse_example-oren-nayar.jpg   Oren-Nayar reflection. |  |
user: Show practical ways to work with CurveSlice(bpy_struct) in a Blender add-on or script – include code.

assistant: # CurveSlice(bpy_struct)

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

*class* bpy.types.CurveSlice(*bpy_struct*)
:   A single curve from a curves data-block

    first_point_index
    :   The index of this curve’s first control point

        Type:
        :   int in [0, inf], default 0, (readonly)

    index
    :   Index of this curve

        Type:
        :   int in [0, inf], default 0, (readonly)

    points
    :   Control points of the curve

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

    points_length
    :   Number of control points in the curve

        Type:
        :   int in [0, inf], default 0, (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: Show practical ways to work with Modifiers in a Blender add-on or script – include code.

assistant: ### Common Options

Mix
:   The modifier output can be mixed with the base property using the usual methods
    (see for example the [Mix compositing node](../../../../compositing/types/color/mix_color.xhtml)).

Influence
:   How much the result of this modifier affects the current property.

Color Ramp
:   Each modifier has [color ramp](../../../../interface/controls/templates/color_ramp.xhtml#ui-color-ramp-widget) that maps the property to a stroke color.

### Types

- [Along Stroke](modifiers/color/along_stroke.xhtml)
- [Crease Angle](modifiers/color/crease_angle.xhtml)
- [Curvature 3D](modifiers/color/curvature_3d.xhtml)
- [Distance from Camera](modifiers/color/distance_from_camera.xhtml)
- [Distance from Object](modifiers/color/distance_from_object.xhtml)
- [Material](modifiers/color/material.xhtml)
- [Noise](modifiers/color/noise.xhtml)
- [Tangent](modifiers/color/tangent.xhtml)
user: Show practical ways to work with Properties in a Blender add-on or script – include code.

assistant: Repeat Items
:   [List View](../../../interface/controls/templates/list_view.html#ui-list-view) for adding, removing, reordering, and renaming the inputs of the zone.

    Socket Type
    :   The [data type](../attributes_reference.html#attribute-data-types) of the selected input.

Inspection Index
:   The number of the iteration to show in [socket inspection](../inspection.html#socket-inspection)
    and in the [Viewer Node](../output/viewer.html).
user: Describe Usage from the Blender manual or Python API, including usage steps and snippets.

assistant: The tool is interactive and has two steps:

1. Pre-Visualizing the Cut

   After the tool is activated, move the cursor over a desired edge.
   The cut to be made is marked with a magenta colored line as you move the mouse over the various edges.
   The to be created edge loop stops at the poles (triangles and n-gons) where the existing face loop terminates.
2. Perform the Cut

   Once the desired location of the new edge loop is found, the edge loop can be created via `LMB`.

|  |  |  |
| --- | --- | --- |
| ../../../_images/modeling_meshes_tools_loop_before.png   Mesh before inserting edge loop. | ../../../_images/modeling_meshes_tools_loop_preview.png   Preview of edge loop location. | ../../../_images/modeling_meshes_tools_loop_placement.png   Interactive placement of edge loop between adjacent loops. |
user: What is Snap Base and how is it used in Blender Python scripting?

assistant: Determines which point in the geometry is the snap base that will snap to the target.

Active:
:   Snaps using the origin (in Object Mode) or center (in Edit Mode) of the active element.

Median:
:   Snaps using the median of the selection.

Center:
:   Snaps using the current transformation center
    (another word for the [pivot point](pivot_point/index.xhtml)).
    This option is especially useful in combination with the
    [3D Cursor](../3d_cursor.xhtml) for choosing the snapping
    point completely manually.

Closest:
:   Snaps using the vertex that’s closest to the target.

|  |  |  |
| --- | --- | --- |
| ../../../_images/editors_3dview_controls_snapping_target-closest.png   Closest. | ../../../_images/editors_3dview_controls_snapping_target-active.png   Active. | ../../../_images/editors_3dview_controls_snapping_target-median.png   Median. |
user: Give a detailed overview of Inputs: syntax, arguments, return values, common patterns.

assistant: Image
:   Standard color input image.

Radius
:   Controls how much surrounding area is sampled when detecting edges.
    Larger values affect broader regions and can enhance larger features,
    while smaller values focus on fine detail.

Factor
:   Controls the intensity of the sharpening effect.
    Higher values produce stronger edge contrast but can lead to halos or artifacts if overused.

Threshold
:   Defines how different a pixel must be from its surrounding area before sharpening is applied.
    Higher values limit sharpening to more distinct edges, reducing noise enhancement.
user: Show practical ways to work with Converting Particle Systems in a Blender add-on or script – include code.

assistant: Make Instances Real
:   Creates a new object of each instanced [object](../../../physics/particles/emitter/render.xhtml#particle-object) or [collection](../../../physics/particles/emitter/render.xhtml#particle-collection).
    See [Make Instances Real](../../../scene_layout/object/editing/apply.xhtml#bpy-ops-object-duplicates-make-real) for more information.

Convert to Mesh
:   Converts [path](../../../physics/particles/emitter/render.xhtml#particle-path) particles to mesh objects.
    See [Convert](../../../scene_layout/object/editing/convert.xhtml#bpy-ops-object-convert) for more information.
user: What is Sequencer Scene and how is it used in Blender Python scripting?

assistant: # Sequencer Scene

The video sequencer uses a separate scene data-block that contains the edit. This is the *Sequencer Scene*.

Having a separated scene for the video sequencer has multiple benefits, like managing different
versions of an edit within the same file. Another important use-case is working with
different scenes in the file and scene strips. See the section below about working with multiple scenes
and scene strips.
user: Provide the full official documentation entry for Built-in Keymaps, preserving all code examples.

assistant: Blender provides two default keymaps:

[Blender](blender_default.html)
:   The default keymap, used throughout this manual.

[Industry Compatible](industry_compatible.html)
:   A keymap that more closely matches the shortcuts of other 3D editing applications.
user: Provide the full official documentation entry for Set Shade Smooth Node, preserving all code examples.

assistant: # Set Shade Smooth Node

[image reference removed]

The *Set Shade Smooth* node controls whether the mesh’s faces look smooth in the viewport and renders.
The smooth status of both edges and faces can be controlled, corresponding to the `sharp_edge` and
`sharp_face` attributes.
The input node for this data is the [Is Face Smooth Node](../read/is_face_smooth.xhtml).
user: Give a detailed overview of Themes: syntax, arguments, return values, common patterns.

assistant: # Themes

The *Themes* section allows you to customize interface appearance and colors.

[image reference removed]

The colors for each editor can be set separately by simply selecting the editor you wish to
change in the multi-choice list at the left, and adjusting colors as required.
Notice that changes appear in real-time on your screen. In addition, details such as the dot size
in the *3D Viewport* or the *Graph Editor* can also be changed.
user: What is Outputs and how is it used in Blender Python scripting?

assistant: Image
:   The default image input for the node group, available when the group is created.
    It can be used to feed images or render layers into the group.

Any additional inputs defined in the node group’s interface will appear here as output sockets.
user: Show practical ways to work with Tool Settings in a Blender add-on or script – include code.

assistant: ### Common

Color
:   Adjust the color of existing and new strokes.

Annotation Layer
:   A pop-over menu, showing the name of the current layer, to access the [Annotation Layers](#annotation-layers).

Placement
:   Determines where the annotations are drawn.

    3D Cursor:
    :   Only available in the 3D Viewport. The new annotations become part of the 3D scene;
        they’re drawn on an imaginary plane that goes through the [3D Cursor](../editors/3dview/3d_cursor.xhtml)
        and is aligned to your view.

    Surface:
    :   Only available in the 3D Viewport. The new annotations become part of the 3D scene;
        they’re drawn onto the surface of the object under the mouse. If there is no surface,
        you get the same behavior as *3D Cursor*.

    Image:
    :   Only available in 2D editors such as the [Image Editor](../editors/image/introduction.xhtml).
        The annotations become part of the 2D space, meaning their position and size change as you
        pan and zoom in the editor.

    View:
    :   The new annotations are 2D and get stuck to the screen. They keep the same position,
        rotation and size no matter how you pan, orbit or zoom in the editor.

Only End Points Surface Placement
:   Only use the first and last parts of the stroke for snapping.

Project Onto Selected Surface Placement
:   Only project the strokes onto selected objects.

Stabilize Stroke
:   Helps to reduce jitter of the strokes while drawing by delaying and correcting the location of points.

    Radius
    :   Minimum distance from the last point before the stroke continues.

    Factor
    :   A smooth factor, where higher values result in smoother strokes
        but the drawing sensation feels like as if you were pulling the stroke.

### Annotate Line

Style Start, End
:   The decoration to use at the beginning or end of the line segment.
    This can be used for example to create arrows to point out specific details in a scene.
user: Provide the full official documentation entry for CompositorNodeSplit(CompositorNode), preserving all code examples.

assistant: # CompositorNodeSplit(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.CompositorNodeSplit(*CompositorNode*)
:   Combine two images for side-by-side display. Typically used in combination with a Viewer 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")

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

assistant: # CompositorNodeSceneTime(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.CompositorNodeSceneTime(*CompositorNode*)
:   Input the current scene time in seconds or frames

    *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