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

assistant: Position
:   Position of the shading point.

Normal
:   Shading normal at the surface (includes smooth normals and bump mapping).

Tangent
:   Tangent at the surface.

True Normal
:   Geometry or flat normal of the surface.

Incoming
:   Vector pointing towards the point the shading point is being viewed from.

Parametric
:   Parametric coordinates of the shading point on the surface.
    To area lights it outputs its UV coordinates in planar mapping and
    in spherical coordinates to point lights.

Backfacing
:   1.0 if the face is being viewed from the back side, 0.0 for the front side.

Pointiness Cycles Only
:   An approximation of the curvature of the mesh per vertex.
    Lighter values indicate convex angles, darker values indicate concave angles.
    It allows you to do effects like dirt maps and wear-off effects.

Random per Island Cycles Only
:   A random value for each connected component (island) of the mesh.
    It is useful to add variations to meshes composed of separated units
    like tree leaves, wood planks, or curves of multiple splines.

    [image reference removed]

    Get a random value for each instance of the mesh when using an Array modifier.
user: What is Bpy.Ops.Sequencer and how is it used in Blender Python scripting?

assistant: move() strip_modifier_set_active() strip_transform_clear() strip_transform_fit() swap() swap_data() swap_inputs() text_cursor_move() text_cursor_set() text_delete() text_deselect_all() text_edit_copy() text_edit_cut() text_edit_mode_toggle() text_edit_paste() text_insert() text_line_break() text_select_all() unlock() unmute() view_all() view_all_preview() view_frame() view_ghost_border() view_selected() view_zoom_ratio()
user: Show practical ways to work with TriangulateModifier(Modifier) in a Blender add-on or script – include code.

assistant: # TriangulateModifier(Modifier)

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

*class* bpy.types.TriangulateModifier(*Modifier*)
:   Triangulate Mesh

    keep_custom_normals
    :   Try to preserve custom normals.
        Warning: Depending on chosen triangulation method, shading may not be fully preserved, “Fixed” method usually gives the best result here

        Type:
        :   boolean, default False

    min_vertices
    :   Triangulate only polygons with vertex count greater than or equal to this number

        Type:
        :   int in [4, inf], default 4

    ngon_method
    :   Method for splitting the n-gons into triangles

        Type:
        :   enum in [Modifier Triangulate Ngon Method Items](bpy_types_enum_items/modifier_triangulate_ngon_method_items.html#rna-enum-modifier-triangulate-ngon-method-items), default `'BEAUTY'`

    quad_method
    :   Method for splitting the quads into triangles

        Type:
        :   enum in [Modifier Triangulate Quad Method Items](bpy_types_enum_items/modifier_triangulate_quad_method_items.html#rna-enum-modifier-triangulate-quad-method-items), default `'SHORTEST_DIAGONAL'`

    *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 Connecting Sockets in Blender? Include parameters, examples, warnings and best practices.

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: Show practical ways to work with Inputs in a Blender add-on or script – include code.

assistant: Grid
:   The input signed distance field to be smoothed.

Width
:   The radius of the smoothing kernel in voxels.
    Larger values result in a broader smoothing effect, producing softer,
    less detailed surfaces. Smaller values restrict smoothing to immediate
    neighbors, retaining more fine detail.

Iterations
:   The number of times the mean filter is applied.
    Each iteration increases the smoothness of the surface.
    Multiple passes can approximate a Gaussian-like blur effect.
user: How do I use Inherited Properties in Blender? Include parameters, examples, warnings and best practices.

assistant: |  |  |
| --- | --- |
| - [`bpy_struct.id_data`](bpy.types.bpy_struct.html#bpy.types.bpy_struct.id_data "bpy.types.bpy_struct.id_data") - [`Constraint.name`](bpy.types.Constraint.html#bpy.types.Constraint.name "bpy.types.Constraint.name") - [`Constraint.type`](bpy.types.Constraint.html#bpy.types.Constraint.type "bpy.types.Constraint.type") - [`Constraint.is_override_data`](bpy.types.Constraint.html#bpy.types.Constraint.is_override_data "bpy.types.Constraint.is_override_data") - [`Constraint.owner_space`](bpy.types.Constraint.html#bpy.types.Constraint.owner_space "bpy.types.Constraint.owner_space") - [`Constraint.target_space`](bpy.types.Constraint.html#bpy.types.Constraint.target_space "bpy.types.Constraint.target_space") - [`Constraint.space_object`](bpy.types.Constraint.html#bpy.types.Constraint.space_object "bpy.types.Constraint.space_object") - [`Constraint.space_subtarget`](bpy.types.Constraint.html#bpy.types.Constraint.space_subtarget "bpy.types.Constraint.space_subtarget") | - [`Constraint.mute`](bpy.types.Constraint.html#bpy.types.Constraint.mute "bpy.types.Constraint.mute") - [`Constraint.enabled`](bpy.types.Constraint.html#bpy.types.Constraint.enabled "bpy.types.Constraint.enabled") - [`Constraint.show_expanded`](bpy.types.Constraint.html#bpy.types.Constraint.show_expanded "bpy.types.Constraint.show_expanded") - [`Constraint.is_valid`](bpy.types.Constraint.html#bpy.types.Constraint.is_valid "bpy.types.Constraint.is_valid") - [`Constraint.active`](bpy.types.Constraint.html#bpy.types.Constraint.active "bpy.types.Constraint.active") - [`Constraint.influence`](bpy.types.Constraint.html#bpy.types.Constraint.influence "bpy.types.Constraint.influence") - [`Constraint.error_location`](bpy.types.Constraint.html#bpy.types.Constraint.error_location "bpy.types.Constraint.error_location") - [`Constraint.error_rotation`](bpy.types.Constraint.html#bpy.types.Constraint.error_rotation "bpy.types.Constraint.error_rotation") |
user: Provide the full official documentation entry for Brush Settings, preserving all code examples.

assistant: ### General

Strength
:   This settings has a different effect on this brush.
    Instead of defining the strength of each individual step in the stroke,
    it determines the overall Opacity of the applied color.

    Use the *Flow* setting instead for faster increasing of strength.

### Unique

Flow
:   Amount of paint that is applied per stroke sample.
    Used to create fast/slow accumulation effect.

Wet Mix
:   Amount of paint that is picked from the surface into the brush color.
    Can achieve the effect of a wet canvas.

Wet Persistence
:   Amount of wet paint that stays in the brush after applying paint to the surface.

Wet Paint Radius
:   Ratio between the brush radius and the radius that is going to be used to sample the color to blend in wet paint.

Density
:   Amount of random elements that are going to be affected by this brush.
    Use this for a more detailed airbrush effect.
    This works best on a high resolution.

Tip Scale X
:   Scale of the brush tip in the X axis.
    This is useful for a achieving a painting stroke like a marker or paint roller.
user: Provide the full official documentation entry for Inputs, preserving all code examples.

assistant: The inputs are dynamic: they become available if needed depending on the node properties.

Vector
:   Texture coordinate to evaluate the noise at;
    defaults to *Generated* texture coordinates if the socket is left unconnected.

W
:   Texture coordinate to evaluate the noise at.

Scale
:   Scale of the base noise octave.

Detail
:   Number of noise octaves. This can have a fractional part, in which case a blend
    is performed (e.g. a Detail of 2.5 results in a 50% blend between 2 and 3 octaves).

Roughness
:   Blend between a smoother noise pattern, and rougher with sharper peaks.

Lacunarity
:   The difference between the scale of each two consecutive octaves.
    Larger values corresponds to larger scale for higher octaves.

Offset
:   An added offset to each octave, determines the level where the highest octave will appear.

Gain
:   An extra multiplier to tune the magnitude of octaves.

Distortion
:   Amount of distortion.
user: Provide the full official documentation entry for CompositorNodeChromaMatte(CompositorNode), preserving all code examples.

assistant: # CompositorNodeChromaMatte(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.CompositorNodeChromaMatte(*CompositorNode*)
:   Create matte based on chroma 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: How do I use Opening Files in Blender? Include parameters, examples, warnings and best practices.

assistant: The upper text field displays the current directory path,
and the lower text field contains the selected filename.

[image reference removed]

The File Browser in open configuration.

### Options

Load UI
:   When enabled, the screen layout saved inside each blend-file is used,
    replacing the current layout and [Workspaces](../../interface/window_system/workspaces.xhtml).
    Otherwise the file screen layout is ignored.

Trusted Source
:   When enabled, Python scripts and drivers that may be included in the file will be run automatically.
    Enable this only if you created the file yourself,
    or you trust that the person who gave it to you did not include any malicious code with it.
    See [Python Security](../../advanced/scripting/security.xhtml) to configure default trust options.
user: Describe Apply from the Blender manual or Python API, including usage steps and snippets.

assistant: # Apply

These operations lets you apply several transformations to the selected objects.
The object transformation coordinates are transferred to the object data.
If the objects have hierarchical descendants, it also applies those transformations to their children.
user: What is Field Visualization and how is it used in Blender Python scripting?

assistant: Socket shapes are used to convey which sockets are fields and which are regular data.
There are three possible socket shapes, each visualizing its “field status”:

Circle:
:   The socket requires a single value, it cannot accept a field input.
    For output sockets, this means the node always outputs a single value.

Diamond:
:   The socket can accept a field input, or it outputs a field. A constant single
    value can be connected to these sockets, but then the output will often not
    vary per element.

Diamond with Dot:
:   The socket can be a field, but it is currently a single value. This is helpful
    because it allows tracking where single values are calculated, instead of a field
    with many different results. It also means that [Socket Inspection](inspection.xhtml#socket-inspection) will show
    the value instead of field input names.

[image reference removed]

The socket shape is a diamond with a dot, meaning the field has the same value
for every element. Every point will be moved up by 5 m.

[image reference removed]

The socket shape is a diamond and the field input now has a varying input. In other words,
the value can be different for every element. In this case, the position will be doubled,
since the offset for every point is the point’s position.

When a connection is made between two node sockets that support
fields the node connection will be drawn as a dashed line.
If you make the mistake of connecting a non-field socket to a field socket,
the connection will be drawn as a solid red line indicating that there is an error.
user: Show practical ways to work with Default Settings in a Blender add-on or script – include code.

assistant: - The **Edit** scene has a default duration of **10 seconds**, providing a starting point for new projects.
- The **Edit** scene is set as both the current scene and the active Sequencer scene.
- Resolution defaults to **1920 × 1080 HD** at **24 FPS**, suitable for most video work.
- The output format is preset for video rendering, allowing quick exports.
user: Describe Inherited Properties from the Blender manual or Python API, including usage steps and snippets.

assistant: |  |  |
| --- | --- |
| - [`bpy_struct.id_data`](bpy.types.bpy_struct.html#bpy.types.bpy_struct.id_data "bpy.types.bpy_struct.id_data") - [`Constraint.name`](bpy.types.Constraint.html#bpy.types.Constraint.name "bpy.types.Constraint.name") - [`Constraint.type`](bpy.types.Constraint.html#bpy.types.Constraint.type "bpy.types.Constraint.type") - [`Constraint.is_override_data`](bpy.types.Constraint.html#bpy.types.Constraint.is_override_data "bpy.types.Constraint.is_override_data") - [`Constraint.owner_space`](bpy.types.Constraint.html#bpy.types.Constraint.owner_space "bpy.types.Constraint.owner_space") - [`Constraint.target_space`](bpy.types.Constraint.html#bpy.types.Constraint.target_space "bpy.types.Constraint.target_space") - [`Constraint.space_object`](bpy.types.Constraint.html#bpy.types.Constraint.space_object "bpy.types.Constraint.space_object") - [`Constraint.space_subtarget`](bpy.types.Constraint.html#bpy.types.Constraint.space_subtarget "bpy.types.Constraint.space_subtarget") | - [`Constraint.mute`](bpy.types.Constraint.html#bpy.types.Constraint.mute "bpy.types.Constraint.mute") - [`Constraint.enabled`](bpy.types.Constraint.html#bpy.types.Constraint.enabled "bpy.types.Constraint.enabled") - [`Constraint.show_expanded`](bpy.types.Constraint.html#bpy.types.Constraint.show_expanded "bpy.types.Constraint.show_expanded") - [`Constraint.is_valid`](bpy.types.Constraint.html#bpy.types.Constraint.is_valid "bpy.types.Constraint.is_valid") - [`Constraint.active`](bpy.types.Constraint.html#bpy.types.Constraint.active "bpy.types.Constraint.active") - [`Constraint.influence`](bpy.types.Constraint.html#bpy.types.Constraint.influence "bpy.types.Constraint.influence") - [`Constraint.error_location`](bpy.types.Constraint.html#bpy.types.Constraint.error_location "bpy.types.Constraint.error_location") - [`Constraint.error_rotation`](bpy.types.Constraint.html#bpy.types.Constraint.error_rotation "bpy.types.Constraint.error_rotation") |
user: What is Examples and how is it used in Blender Python scripting?

assistant: [image reference removed]

Wireframes on a displaced plane.

In this example, the wireframes carry a second (dark) material while the displaced plane uses its original one.

[image reference removed]

Vertex group weighting.

The weights of the vertex group gradually change from 0 to 1.

[image reference removed]

Wireframe and Subdivision Surface modifier.

Cube with enabled *Crease Edges* option. The *Crease Weight* is set to 0, 0.5 and 1.
user: Give a detailed overview of BlendFileColorspace(bpy_struct): syntax, arguments, return values, common patterns.

assistant: # BlendFileColorspace(bpy_struct)

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

*class* bpy.types.BlendFileColorspace(*bpy_struct*)
:   Information about the color space used for data-blocks in a blend file

    is_missing_opencolorio_config
    :   A color space, view or display was not found, which likely means the OpenColorIO config used to create this blend file is missing

        Type:
        :   boolean, default False, (readonly)

    working_space
    :   Color space used for all scene linear colors in this file, and for compositing, shader and geometry nodes processing

        - `Linear Rec.709`
          Linear Rec.709 – Linear BT.709 with illuminant D65 white point.
        - `Linear Rec.2020`
          Linear Rec.2020 – Linear BT.2020 with illuminant D65 white point.
        - `ACEScg`
          ACEScg – Linear AP1 with ACES white point.

        Type:
        :   enum in [`'Linear Rec.709'`, `'Linear Rec.2020'`, `'ACEScg'`], (readonly)

    working_space_interop_id
    :   Unique identifier for common color spaces, as defined by the Color Interop Forum. May be empty if there is no interop ID for the working space. Common values are lin_rec709_scene, lin_rec2020_scene and lin_ap1_scene (for ACEScg)

        Type:
        :   string, default “”, (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: Show practical ways to work with Introduction in a Blender add-on or script – include code.

assistant: # Introduction

The first step in the rendering process is to determine and set the output settings.
This includes render size, frame rate, pixel aspect ratio, output location, and file type.

When rendering a single frame, the output should be a single image format and not a video.
Several [image formats](../../files/media/image_formats.html) are available.

Images can also be used for rendering animations which has a couple advantages.
For example, when rendering animations to image file formats the render job can be canceled
and resumed at the last rendered frame by changing the frame range.
This is useful if the animation takes a long time to render
and the computers resources are needed for something else.

Images can then be encoded to a video by adding the rendered image sequence into
the [Video Sequencer](../../editors/video_sequencer/sequencer/index.html) and choosing an appropriate
[Video Output](../../files/media/video_formats.html).
user: Provide the full official documentation entry for Grease Pencil, preserving all code examples.

assistant: Manhattan
:   The minimum number of pixels the mouse should have moved either
    horizontally or vertically before the movement is recorded.
    Decreasing this should work better for curvy lines.

Euclidean
:   The minimum distance that mouse has to travel before movement is recorded.
user: Give a detailed overview of References: syntax, arguments, return values, common patterns.

assistant: |  |  |
| --- | --- |
| - [`bpy.context.pointcloud`](bpy.context.html#bpy.context.pointcloud "bpy.context.pointcloud") - [`BlendData.pointclouds`](bpy.types.BlendData.html#bpy.types.BlendData.pointclouds "bpy.types.BlendData.pointclouds") | - [`BlendDataPointClouds.new`](bpy.types.BlendDataPointClouds.html#bpy.types.BlendDataPointClouds.new "bpy.types.BlendDataPointClouds.new") - [`BlendDataPointClouds.remove`](bpy.types.BlendDataPointClouds.html#bpy.types.BlendDataPointClouds.remove "bpy.types.BlendDataPointClouds.remove") |
user: Describe Selecting Multiple Data-Blocks from the Blender manual or Python API, including usage steps and snippets.

assistant: Extend the selection one data-block at a time using `Ctrl`-`LMB`.
Each data-block added to the selection this way will be made the active data-block.

Select a range of elements from the active element using `Shift`-`LMB`.
To select a range without deselecting the previous selection, use `Shift`-`Ctrl`-`LMB`.

Select all children of an item by double clicking the item’s icon.

A click and drag from any location in the Outliner other than a name or icon will begin a box selection.
Use `Shift` to add and `Ctrl` to subtract from existing selections with box select.
Box select can also be started with `B`.

To select all items use `A`; `Alt`-`A` will deselect all items.

The keyboard arrow keys can be used to navigate and select in the Outliner.
Keyboard selection and navigation starts from the active data-block.

|  |  |
| --- | --- |
| `Up` | Select the previous element in the list. |
| `Down` | Select the next element in the list. |
| `Shift`-`Up` | Select the previous element without deselecting. |
| `Shift`-`Down` | Select the next element without deselecting. |
| `Left` | Close the data-block or select the parent. |
| `Right` | Open the data-block to view children or select the first child. |
| `Shift`-`Left` | Close this and all child data-blocks. |
| `Shift`-`Right` | Open this and all child data-blocks. |
user: Explain Inherited Properties in complete detail according to the official Blender documentation.

assistant: |  |  |
| --- | --- |
| - [`bpy_struct.id_data`](bpy.types.bpy_struct.html#bpy.types.bpy_struct.id_data "bpy.types.bpy_struct.id_data") - [`ID.name`](bpy.types.ID.html#bpy.types.ID.name "bpy.types.ID.name") - [`ID.name_full`](bpy.types.ID.html#bpy.types.ID.name_full "bpy.types.ID.name_full") - [`ID.id_type`](bpy.types.ID.html#bpy.types.ID.id_type "bpy.types.ID.id_type") - [`ID.session_uid`](bpy.types.ID.html#bpy.types.ID.session_uid "bpy.types.ID.session_uid") - [`ID.is_evaluated`](bpy.types.ID.html#bpy.types.ID.is_evaluated "bpy.types.ID.is_evaluated") - [`ID.original`](bpy.types.ID.html#bpy.types.ID.original "bpy.types.ID.original") - [`ID.users`](bpy.types.ID.html#bpy.types.ID.users "bpy.types.ID.users") - [`ID.use_fake_user`](bpy.types.ID.html#bpy.types.ID.use_fake_user "bpy.types.ID.use_fake_user") - [`ID.use_extra_user`](bpy.types.ID.html#bpy.types.ID.use_extra_user "bpy.types.ID.use_extra_user") - [`ID.is_embedded_data`](bpy.types.ID.html#bpy.types.ID.is_embedded_data "bpy.types.ID.is_embedded_data") | - [`ID.is_linked_packed`](bpy.types.ID.html#bpy.types.ID.is_linked_packed "bpy.types.ID.is_linked_packed") - [`ID.is_missing`](bpy.types.ID.html#bpy.types.ID.is_missing "bpy.types.ID.is_missing") - [`ID.is_runtime_data`](bpy.types.ID.html#bpy.types.ID.is_runtime_data "bpy.types.ID.is_runtime_data") - [`ID.is_editable`](bpy.types.ID.html#bpy.types.ID.is_editable "bpy.types.ID.is_editable") - [`ID.tag`](bpy.types.ID.html#bpy.types.ID.tag "bpy.types.ID.tag") - [`ID.is_library_indirect`](bpy.types.ID.html#bpy.types.ID.is_library_indirect "bpy.types.ID.is_library_indirect") - [`ID.library`](bpy.types.ID.html#bpy.types.ID.library "bpy.types.ID.library") - [`ID.library_weak_reference`](bpy.types.ID.html#bpy.types.ID.library_weak_reference "bpy.types.ID.library_weak_reference") - [`ID.asset_data`](bpy.types.ID.html#bpy.types.ID.asset_data "bpy.types.ID.asset_data") - [`ID.override_library`](bpy.types.ID.html#bpy.types.ID.override_library "bpy.types.ID.override_library") - [`ID.preview`](bpy.types.ID.html#bpy.types.ID.preview "bpy.types.ID.preview") |
user: Explain Set Spline Type in complete detail according to the official Blender documentation.

assistant: Converts splines in a curve object between Bézier, NURBS, Poly, and Catmull Rom types.
This is a basic conversion, meaning Blender does not preserve the exact shape or the number of control points.
For example, converting a NURBS spline to a Bézier spline maps each group of three NURBS control points
to a single Bézier control point with two handles.

Type
:   Specifies the target spline type. For more details on spline types, see the
    [Spline Types](../structure.html#curve-spline-types) documentation.

    Bézier:
    :   Converts the spline to a Bézier type.
        - Poly splines are converted with vector handles.
        - NURBS or Catmull Rom splines are converted with automatic handles.

    NURBS:
    :   Converts the spline to a NURBS type.

    Poly:
    :   Converts the spline to a poly type.

Handles
:   Includes handle information during the conversion process.
user: Give a detailed overview of Asset Operators: syntax, arguments, return values, common patterns.

assistant: Brushes can be managed through a few operators that let Blender handle the act of saving and
updating the brushes in asset libraries for you. Assets managed this way will be saved in special
[asset system files](../../files/asset_libraries/introduction.html#asset-system-files) using a .asset.blend file extension.

[[image reference removed]](../../_images/sculpt-paint_brush_brush-management_asset-operators.png)

Brush Asset panel in the Sidebar showing asset operators.

Duplicate Asset…
:   Creates a copy of the currently active brush as asset, and activates it. A popup is spawned to input some settings
    to use:

    Name
    :   A custom name to use for the new brush.

    Library
    :   Choose an Asset Library to store the new brush asset in. The available asset libraries are configured
        [in the Preferences](../../editors/preferences/file_paths.html#bpy-types-userassetlibrary).

    Catalog
    :   Choose an [Asset Catalog](../../files/asset_libraries/catalogs.html) to assign the brush asset to. Entering a
        non-existent name/path will create a new catalog accordingly.

Delete Asset
:   Permanently remove this brush asset from the Asset Library it is stored in. This cannot be undone, so a popup will
    ask for confirmation.

Edit Metadata…
:   Spawns a popup to change some of the available [asset metadata](../../editors/asset_browser.html#editing-asset-metadata) fields:

    Catalog
    :   Choose an [Asset Catalog](../../files/asset_libraries/catalogs.html) to assign the brush asset to. Entering a
        non-existent name/path will create a new catalog accordingly.

    Author
    :   See [Asset Author](../../editors/asset_browser.html#bpy-types-assetmetadata-description).

    Description
    :   See [Asset Description](../../editors/asset_browser.html#bpy-types-assetmetadata-description).

Edit Preview Image…
:   Opens a window with the File Browser to select an image for the asset preview.

Save Changes to Asset
:   Saves any changes made to the active brush to the asset library.

Revert to Asset
:   Discards any unsaved changes made to the brush asset.
user: What is GeometryNodeInputMaterialIndex(GeometryNode) and how is it used in Blender Python scripting?

assistant: # GeometryNodeInputMaterialIndex(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.GeometryNodeInputMaterialIndex(*GeometryNode*)
:   Retrieve the index of the material used for each element in the geometry’s list of materials

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

assistant: Adds a flat, 2D ring of vertices forming a polygonal approximation of a circle.
This primitive is useful as a starting point for cylindrical objects, holes, pipe ends,
or extrusion-based modeling workflows.

Vertices
:   Number of vertices used to define the perimeter of the circle.
    Higher values result in a smoother shape.

Fill Type
:   Sets how the center of the circle is filled:

    Triangle Fan:
    :   Fills the circle with triangular faces sharing a central vertex.

    N-gon:
    :   Fills the center with a single N-gon face.

    Nothing:
    :   Leaves the circle unfilled; only the perimeter vertices are created.

Radius
:   Distance from the center to the outer edge of the circle.
user: Explain Managing Preferences in complete detail according to the official Blender documentation.

assistant: Default preferences are managed from the ☰ menu in the preferences window.

The following items are available in this menu:

Auto-Save Preferences
:   By default changes to preferences are saved on exit,
    this allows changes to the keymap and Quick Favorites menu to be stored and used between
    [Blender Sessions](../../glossary/index.xhtml#term-Blender-Session).

    When disabled, a *Save Preferences* button is shown to manually perform the operation.

Revert to Saved Preferences
:   Undoes any unsaved modifications, loading the previously saved state.

Load Factory Preferences
:   Completely undo all the modifications made to the preferences,
    resetting to the state used before making customizations.
user: Explain Harmonic in complete detail according to the official Blender documentation.

assistant: # Harmonic

In a *Harmonic* force field,
the source of the force field is the zero point of a harmonic oscillator (spring, pendulum).
If you set the *Damping* parameter to 1,
the movement is stopped in the moment the object is reached.
This force field is really special if you assign it to particles.
user: Describe Show/Hide from the Blender manual or Python API, including usage steps and snippets.

assistant: When in *Edit Mode*, you can hide and reveal elements from the display.
You can only show or hide control points, as segments are always shown,
unless all control points of the connected curve are hidden,
in which case the curve is fully hidden.

See [Show/Hide](../../../scene_layout/object/editing/show_hide.xhtml#object-show-hide) in *Object Mode*.
See also the [Curve Display](../curve_display.xhtml) panel.
user: Show practical ways to work with Clip Context in a Blender add-on or script – include code.

assistant: bpy.context.edit_movieclip
:   Type:
    :   [`bpy.types.MovieClip`](bpy.types.MovieClip.html#bpy.types.MovieClip "bpy.types.MovieClip")

bpy.context.edit_mask
:   Type:
    :   [`bpy.types.Mask`](bpy.types.Mask.html#bpy.types.Mask "bpy.types.Mask")
user: Describe References from the Blender manual or Python API, including usage steps and snippets.

assistant: |  |  |
| --- | --- |
| - [`Image.packed_file`](bpy.types.Image.html#bpy.types.Image.packed_file "bpy.types.Image.packed_file") - [`ImagePackedFile.packed_file`](bpy.types.ImagePackedFile.html#bpy.types.ImagePackedFile.packed_file "bpy.types.ImagePackedFile.packed_file") - [`Library.packed_file`](bpy.types.Library.html#bpy.types.Library.packed_file "bpy.types.Library.packed_file") | - [`Sound.packed_file`](bpy.types.Sound.html#bpy.types.Sound.packed_file "bpy.types.Sound.packed_file") - [`VectorFont.packed_file`](bpy.types.VectorFont.html#bpy.types.VectorFont.packed_file "bpy.types.VectorFont.packed_file") - [`Volume.packed_file`](bpy.types.Volume.html#bpy.types.Volume.packed_file "bpy.types.Volume.packed_file") |
user: What is Example and how is it used in Blender Python scripting?

assistant: Swirl Effect samples (with a Radius of 100 px).

|  |  |  |  |
| --- | --- | --- | --- |
| ../../_images/grease-pencil_visual-effects_swirl_angle-00.png   Angle: 0°. | ../../_images/grease-pencil_visual-effects_swirl_angle-15.png   Angle: 15°. | ../../_images/grease-pencil_visual-effects_swirl_angle-45.png   Angle: 45°. | ../../_images/grease-pencil_visual-effects_swirl_angle-90.png   Angle: 90°. |
user: How do I use GeometryNodeEdgePathsToCurves(GeometryNode) in Blender? Include parameters, examples, warnings and best practices.

assistant: # GeometryNodeEdgePathsToCurves(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.GeometryNodeEdgePathsToCurves(*GeometryNode*)
:   Output curves following paths across mesh edges

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

assistant: Geometry
:   Standard geometry input, which is used as the default bake item.
    More bake items can be added by dragging sockets into the blank socket or in the *Bake Items* panel.
    Items can be renamed by `Ctrl`-`LMB` on the socket name or in the nodes *Properties* panel.
user: Show practical ways to work with Insert Into Group in a Blender add-on or script – include code.

assistant: Moves the selected nodes into the [active](../../../glossary/index.xhtml#term-Active) group node.
To use, select a set of nodes, ending with the destination group node,
then, running the operation will move those nodes into that group.
The moved nodes are collected into a group of their own to preserve their connection context,
having their own group input and output nodes.
The group’s existing input and output nodes are updated with new sockets, if any, from the new nodes.
The node group must be edited to contain a single *Group Input* and a single *Group Output* node.
user: How do I use Insert in Blender? Include parameters, examples, warnings and best practices.

assistant: Adds new keyframes and selects them. Previously selected keyframes stay selected too.

All Channels
:   Insert a keyframe on all visible and editable F-Curves using each curve’s current value.

Only Selected Channels
:   Insert a keyframe on the selected F-Curves using each curve’s current value.

Only Active F-Curve
:   Insert a keyframe on the active F-Curve using the curve’s current value.

Active Channels at Cursor
:   Insert a keyframe on the active F-Curve at the 2D Cursor’s value.

Selected Channels at Cursor
:   Insert a keyframe on the selected F-Curves at the 2D Cursor’s value.
user: How do I use Material Index Node in Blender? Include parameters, examples, warnings and best practices.

assistant: # Material Index Node

[image reference removed]

The *Material Index* node outputs which material in the list of materials of the geometry
each element corresponds to. Currently the node supports mesh data, where `material_index`
is a built-in attribute on faces.

The node to set this data is
the [Set Material Index](set_material_index.html) node.
user: Give a detailed overview of Clear: syntax, arguments, return values, common patterns.

assistant: ### Before

Deletes all tracked and keyframed markers after the current frame for all selected tracks.

Clear Active
:   Limits clear action to only active track (as opposite to all selected ones).

### After

Deletes all tracked and keyframed markers before the current frame for all selected tracks.

Clear Active
:   Limits clear action to only active track (as opposite to all selected ones).

### Track Path

Clears all markers except the current one from all selected tracks.

Clear Active
:   Limits clear action to only active track (as opposite to all selected ones).

### Clear Solution
user: What is Is Spline Cyclic Node and how is it used in Blender Python scripting?

assistant: # Is Spline Cyclic Node

[image reference removed]

The *Is Spline Cyclic* controls whether each of the curve splines start and endpoints form a connection.
Its output corresponds to the built-in `cyclic` attribute on the curve spline domain.

The node to set this data is the [Set Spline Cyclic Node](../write/set_spline_cyclic.xhtml).
user: What is Channel Region and how is it used in Blender Python scripting?

assistant: The Channel region sits on the left side of the editor and contains the channel properties
listed below. Its visibility can be toggled with View ‣ Channels.

Name
:   The name of the channel. Double-click to change.

Mute Channel
:   Disable the entire channel so that none of its strips can be seen (or heard) in the final video.
    Note that you can also mute individual strips.

Lock Channel
:   Lock the entire channel to protect all its strips against accidental changes.
    Note that you can also lock individual strips.
user: How do I use Clean in Blender? Include parameters, examples, warnings and best practices.

assistant: Clean Vertex Group Weights unassigns vertices from
[Vertex Groups](../../modeling/meshes/properties/vertex_groups/index.xhtml)
whose weights are below the *Limit*. Removes weights below a given threshold.
This tool is useful for clearing your weight groups of very low (or zero) weights.

In the example shown, a cutoff value of 0.2 is used (see operator options below)
so all blue parts are cleaned out.

Note, the images use the *Show Zero weights* Active option
so that unreferenced Weights are shown in Black.

[image reference removed]

Clean example.

Subset
:   Restrict the tool to a subset.
    See above [The Subset Option](#sculpt-paint-weight-paint-editing-subset) for how subsets are defined.

Limit
:   This is the minimum weight value that will be kept in the group.
    Weights below this value will be removed from the group.

Keep Single
:   Ensure that the *Clean* tool will not create completely unreferenced vertices
    (vertices which are not assigned to any vertex group), so each vertex will
    keep at least one weight, even if it is below the limit value!
user: Describe Creating Faces from the Blender manual or Python API, including usage steps and snippets.

assistant: [image reference removed]

Quad from an Edge with source automatically rotated.

If you have two vertices selected and already connected with an edge, `Ctrl`-`RMB` click
will create a planar face, also known as a quad. Blender will follow your mouse cursor
and will use the planar view from your viewport to create those quads.

For `Ctrl`-`RMB`, Blender will automatically rotate the last selected Edge (the source)
for the subsequent operations if you have at least one face created, dividing the angles created between
the newly created edge and the last two edges, creating a smooth angle between them. Blender will calculate
this angle using the last positive and negative position of the last X and Y coordinates
and the last connected unselected edge. If this angle exceeds a negative limit (following a quadrant rule)
between the recently created edge and the last two, Blender will wrap the faces.
But if you do not want Blender to rotate and smooth edges automatically when extruding from `Ctrl`-`RMB`,
you can also inhibit Blender from rotating sources using the shortcut `Shift`-`Ctrl`-`RMB`.
In this case, Blender will not rotate the source dividing the angle between those edges when creating a face.

If you have three or more vertices selected, and `Ctrl`-`RMB` click,
you will also create planar faces, but along the vertices selected, following the direction of the cursor.
This operation is similar to an extrude operation.
user: How do I use Inherited Properties in Blender? Include parameters, examples, warnings and best practices.

assistant: |  |  |
| --- | --- |
| - [`bpy_struct.id_data`](bpy.types.bpy_struct.html#bpy.types.bpy_struct.id_data "bpy.types.bpy_struct.id_data") - [`ID.name`](bpy.types.ID.html#bpy.types.ID.name "bpy.types.ID.name") - [`ID.name_full`](bpy.types.ID.html#bpy.types.ID.name_full "bpy.types.ID.name_full") - [`ID.id_type`](bpy.types.ID.html#bpy.types.ID.id_type "bpy.types.ID.id_type") - [`ID.session_uid`](bpy.types.ID.html#bpy.types.ID.session_uid "bpy.types.ID.session_uid") - [`ID.is_evaluated`](bpy.types.ID.html#bpy.types.ID.is_evaluated "bpy.types.ID.is_evaluated") - [`ID.original`](bpy.types.ID.html#bpy.types.ID.original "bpy.types.ID.original") - [`ID.users`](bpy.types.ID.html#bpy.types.ID.users "bpy.types.ID.users") - [`ID.use_fake_user`](bpy.types.ID.html#bpy.types.ID.use_fake_user "bpy.types.ID.use_fake_user") - [`ID.use_extra_user`](bpy.types.ID.html#bpy.types.ID.use_extra_user "bpy.types.ID.use_extra_user") - [`ID.is_embedded_data`](bpy.types.ID.html#bpy.types.ID.is_embedded_data "bpy.types.ID.is_embedded_data") | - [`ID.is_linked_packed`](bpy.types.ID.html#bpy.types.ID.is_linked_packed "bpy.types.ID.is_linked_packed") - [`ID.is_missing`](bpy.types.ID.html#bpy.types.ID.is_missing "bpy.types.ID.is_missing") - [`ID.is_runtime_data`](bpy.types.ID.html#bpy.types.ID.is_runtime_data "bpy.types.ID.is_runtime_data") - [`ID.is_editable`](bpy.types.ID.html#bpy.types.ID.is_editable "bpy.types.ID.is_editable") - [`ID.tag`](bpy.types.ID.html#bpy.types.ID.tag "bpy.types.ID.tag") - [`ID.is_library_indirect`](bpy.types.ID.html#bpy.types.ID.is_library_indirect "bpy.types.ID.is_library_indirect") - [`ID.library`](bpy.types.ID.html#bpy.types.ID.library "bpy.types.ID.library") - [`ID.library_weak_reference`](bpy.types.ID.html#bpy.types.ID.library_weak_reference "bpy.types.ID.library_weak_reference") - [`ID.asset_data`](bpy.types.ID.html#bpy.types.ID.asset_data "bpy.types.ID.asset_data") - [`ID.override_library`](bpy.types.ID.html#bpy.types.ID.override_library "bpy.types.ID.override_library") - [`ID.preview`](bpy.types.ID.html#bpy.types.ID.preview "bpy.types.ID.preview") |
user: What is Camera Data Node and how is it used in Blender Python scripting?

assistant: # Camera Data Node

[image reference removed]

The *Camera Data* node returns information about the shading point relative to the camera.
This could be used for example to change the shading
of objects further away from the camera, or make custom fog effects.
user: Provide the full official documentation entry for Laptops, preserving all code examples.

assistant: # Laptops

Laptops often have two GPUs for power saving purposes. One slower onboard GPU integrated into the main CPU (typically
Intel or AMD) that uses lower power, and one faster dedicated GPU for better performance (AMD or NVIDIA) that uses
more power.

For the best performance, the dedicated GPU should be used for Blender. Which GPU to use for which application can be
configured in your graphics driver or operating system settings.

If there is a graphics glitch or crash specific to the onboard GPU, then using the dedicated GPU can help avoid that.
Or vice versa, if the dedicated GPU causes issues, then using the onboard graphics can help.