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

assistant: Projects the selected faces onto a virtual cylinder, then unrolls that cylinder.
The cylinder is centered on the [Transform Pivot Point](../../../editors/3dview/controls/pivot_point/index.xhtml),
which is normally the averaged-out position of the selected faces; however, you
can also move it to a different place using e.g. the [3D Cursor](../../../editors/3dview/3d_cursor.xhtml).

### Options

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

Direction, Align
:   The direction of the cylinder’s central axis.

    View on Equator
    :   Use an axis that’s perpendicular to the viewing direction in the 3D Viewport.
        If *Align* is *Polar ZX*, use the vertical axis of the viewing plane;
        if it’s *Polar ZY*, use the horizontal one.

    View on Poles
    :   Use an axis that’s parallel to the viewing direction in the 3D Viewport.
        Depending on *Align*, the cylinder will be rotated by 90° around its axis and the
        UV map will be shifted horizontally by a quarter.

    Align to Object
    :   Use the object’s local Z axis.
        Depending on *Align*, the cylinder will be rotated by 90° around its axis and the
        UV map will be shifted horizontally by a quarter.

Pole
:   How to handle vertices that lie on the cylinder’s central axis.

    Pinch
    :   Place all UV versions of the vertex at the same U coordinate.
        This tends to result in heavily distorted UV faces.

    Fan
    :   Place each UV version of the vertex at a U coordinate that minimizes distortion.

|  |  |  |
| --- | --- | --- |
| ../../../_images/modeling_meshes_editing_uv_unwrap-pole.png   Unwrapping the top of a dome. | ../../../_images/modeling_meshes_editing_uv_unwrap-pinch.png   Pole set to Pinch. | ../../../_images/modeling_meshes_editing_uv_unwrap-fan.png   Pole set to Fan. |

Preserve Seams
:   Cut the mesh along its seams before projecting.

Radius
:   Half the height of the cylinder (i.e. *not* its radius; we’re only using the cylinder
    for projection, so its radius doesn’t matter).

Correct Aspect
:   Adjusts the UV mapping to account for the aspect ratio of the image associated with the material.
    This ensures that UVs are scaled correctly when unwrapping onto non-square textures.

    For this option to work, the mesh must have a material with an
    [Image Texture node](../../../render/shader_nodes/textures/image.xhtml), and this node must be selected in the
    [Shader Editor](../../../editors/shader_editor.xhtml).

Clip to Bounds
:   Moves any out-of-bounds UVs to the nearest border.

Scale to Bounds
:   Stretches the resulting UV map to fill the complete texture.
user: Show practical ways to work with Bundling Extensions in a Blender add-on or script – include code.

assistant: When working offline or in a more controlled environment, it may be useful
to provide a set of extensions to all users. For this there is a default
read-only System repository. This repository could be located on a
read-only network drive or in a system directory.

[image reference removed]

System repository

The `$BLENDER_SYSTEM_EXTENSIONS`
[environment variable](command_line/arguments.html#command-line-args-environment-variables)
controls the default location. This should point to a directory, within
which a `system` directory should exist.

Extensions packages should be extracted in this `system` directory,
with a resulting path like this:

```
$BLENDER_SYSTEM_EXTENSIONS/system/my-addon/blender_manifest.toml
```

In the Extensions preferences, it’s possible to manually set a custom
directory for the default System repository, or to create multiple
repositories.
user: Provide the full official documentation entry for Local Storage, preserving all code examples.

assistant: Add-ons must not assume their own directory is user writable since this may not be the case for “System” repositories.
Writing files into the add-on’s directory also has the down side that upgrading the extension will remove all files.

Add-ons which need their own user directory should use a utility function provided for this purpose:

```
extension_directory = bpy.utils.extension_path_user(__package__, path="", create=True)
```

If you wish create subdirectories, this can be done with the `path` argument.

This directory will be kept between upgrades but will be removed if the extension is uninstalled.
user: Show practical ways to work with Importing & Exporting Files in a Blender add-on or script – include code.

assistant: # Importing & Exporting Files

Sometimes you may want to utilize files that either came from other 2D or 3D software,
or you may want to use the things you have made in Blender and edit them in other software.
Luckily, Blender offers a wide range of file formats (e.g. ABC, USD, OBJ, FBX, PLY, STL, etc.)
that can be used to import and export.

Popular formats are enabled by default, other formats are also supported and distributed with Blender,
these can be enabled in the Preferences through the use of [Add-ons](../../editors/preferences/extensions.xhtml).
user: How do I use BlendDataPaintCurves(bpy_struct) in Blender? Include parameters, examples, warnings and best practices.

assistant: # BlendDataPaintCurves(bpy_struct)

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

*class* bpy.types.BlendDataPaintCurves(*bpy_struct*)
:   Collection of paint curves

    tag(*value*)
    :   tag

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

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: What is Simplification and how is it used in Blender Python scripting?

assistant: # Simplification

The *Simplification* modifier merges stroke vertices that lie close to one another,
like the *Decimate* modifier for meshes.

Tolerance
:   Measure for how close points have to be to each other to be merged.
    A higher tolerance means more vertices are merged.

[[image reference removed]](../../../../../../_images/render_freestyle_parameter-editor_line-style_modifiers_geometry_simplification_example.png)
user: Explain ColorBalanceModifier(StripModifier) in complete detail according to the official Blender documentation.

assistant: # ColorBalanceModifier(StripModifier)

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

*class* bpy.types.ColorBalanceModifier(*StripModifier*)
:   Color balance modifier for sequence strip

    color_balance
    :   Type:
        :   [`StripColorBalanceData`](bpy.types.StripColorBalanceData.html#bpy.types.StripColorBalanceData "bpy.types.StripColorBalanceData"), (readonly)

    color_multiply
    :   Multiply the intensity of each pixel

        Type:
        :   float in [0, 20], default 1.0

    open_mask_input_panel
    :   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 ArmatureEditBones(bpy_struct) and how is it used in Blender Python scripting?

assistant: # ArmatureEditBones(bpy_struct)

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

*class* bpy.types.ArmatureEditBones(*bpy_struct*)
:   Collection of armature edit bones

    active
    :   Armatures active edit bone

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

    new(*name*)
    :   Add a new bone

        Parameters:
        :   **name** (*string**,* *(**never None**)*) – New name for the bone

        Returns:
        :   Newly created edit bone

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

    remove(*bone*)
    :   Remove an existing bone from the armature

        Parameters:
        :   **bone** ([`EditBone`](bpy.types.EditBone.html#bpy.types.EditBone "bpy.types.EditBone"), (never None)) – EditBone to remove

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Show practical ways to work with Why does an operator’s poll fail? in a Blender add-on or script – include code.

assistant: When calling an operator it gives an error like this:

```
>>> bpy.ops.action.clean(threshold=0.001)
RuntimeError: Operator bpy.ops.action.clean.poll() failed, context is incorrect
```

Which raises the question as to what the correct context might be?

Typically operators check for the active area type, a selection or active object they can operate on,
but some operators are more strict when they run.
In most cases you can figure out what context an operator needs
by examining how it’s used in Blender and thinking about what it does.

If you’re still stuck, unfortunately, the only way to eventually know what is causing the error is
to read the source code for the poll function and see what it is checking.
For Python operators it’s not so hard to find the source
since it’s included with Blender and the source file and line is included in the operator reference docs.
Downloading and searching the C code isn’t so simple,
especially if you’re not familiar with the C language but by searching the operator name or description
you should be able to find the poll function with no knowledge of C.
user: Provide the full official documentation entry for Inputs, preserving all code examples.

assistant: String
:   String value to be sliced.

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

Length
:   Integer value used to determine how many characters are extracted from the input string.
user: How do I use Crease Angle in Blender? Include parameters, examples, warnings and best practices.

assistant: # Crease Angle

A modifier based on the Crease Angle (angle between two adjacent faces).
If a stroke segment does not lie on a crease (i.e. the edge does not have the *Crease Angle nature*),
its properties are not touched by the modifier.

Angle Min, Max
:   The range of input values to the mapping.
    Out-of-range crease angle values will be clamped by
    the Min and Max angles and their corresponding property values.

[image reference removed]

Crease Angle modifier example by T.K.
([blend-file](https://archive.blender.org/wiki/2015/index.php/File:Render_freestyle_modifier_crease_angle.blend)).
user: Describe Volumetric Data from the Blender manual or Python API, including usage steps and snippets.

assistant: Format
:   File format for volume based simulation data (i.e. grids and particles).

    Uni Cache:
    :   Blender’s own caching format with some compression.
        Each simulation object is stored in its own `.uni` cache file.

    OpenVDB:
    :   Advanced and efficient storage format.
        All simulation objects (i.e. grids and particles) are stored in a single `.vdb` file per frame.

Compression OpenVDB Only
:   Compression method that is used when writing OpenVDB cache files.

    Zip:
    :   Cache files will be written with `Zip` compression. Effective but slower than `Blosc`.

    Blosc:
    :   Cache files will be written with `Blosc` compression. Multithreaded compression,
        similar in size and quality to `Zip` compression.

    None:
    :   Cache files will be written without any compression.

Precision OpenVDB Only
:   Precision level that is used when writing OpenVDB cache files.

    Full:
    :   Volumetric data (e.g. grids, particles) will be written with full precision (32-bit).

    Half:
    :   Volumetric data (e.g. grids, particles) will be written with half precision (16-bit).

    Mini:
    :   Volumetric data (e.g. grids, particles) will be written with mini float precision (8-bit) where possible.
        For cache data where this is not possible, 16-bit floats will be used instead.

Meshes Liquids Only
:   File format for the mesh cache files.

    Binary Object: Mesh data files with some compression.
    Object: Simple, standard data format for mesh data.

Export Mantaflow Script
:   Export the simulation as a standalone Mantaflow script when baking the scene (exported on “Bake Data”).
    Usually, only developers and advanced users who know how to use the Mantaflow GUI will
    make use of this functionality. Use a [Debug Value](../../../../advanced/operators.xhtml#bpy-ops-wm-debug-menu) of `3001` to enable.
user: Give a detailed overview of Recalculate: syntax, arguments, return values, common patterns.

assistant: These tools will recalculate the normals of selected faces so that they point outside
(respectively inside) the volume that the face belongs to.
The volume does not need to be closed; inside and outside are determined by the angles with adjacent faces.
This means that the face of interest must be adjacent to at least one non-coplanar other face.
For example, with a *Grid* primitive, recalculating normals does not have a meaningful result.
user: Provide the full official documentation entry for Introduction, preserving all code examples.

assistant: Start opening up your project file, in this case `turntable.blend` from the *Creature Factory 2*
Open Movie Workshop series from the Blender Institute by Andy Goralczyk.

[image reference removed]

Turntable Creature Factory 2.
user: Explain Import CSV Node in complete detail according to the official Blender documentation.

assistant: # Import CSV Node

[image reference removed]

The *Import CSV* node reads data from a CSV (Comma-Separated Values) file and generates a point cloud.
Each row in the file becomes a point, with numeric columns imported as attributes.

Attribute names are taken from the header row (if present), and types are inferred from the first value in each
column:

- Integer values create integer attributes.
- Float values create float attributes.

This node is useful for visualizing external datasets in Geometry Nodes,
such as for scientific visualization or procedural generation based on tabular data.
user: What is Node Editor and how is it used in Blender Python scripting?

assistant: Auto-Offset
:   Automatically offset the following or previous nodes in a chain when inserting a new node.
    See [Auto-Offset](../../interface/controls/nodes/arranging.xhtml#editors-nodes-usage-auto-offset) for more information.

    Auto-offset Margin
    :   Margin to use for [offsetting nodes](../../interface/controls/nodes/arranging.xhtml#editors-nodes-usage-auto-offset).
user: What is Blender 4 and how is it used in Blender Python scripting?

assistant: - [Blender 4.5 LTS](https://docs.blender.org/manual/en/4.5/)
- [Blender 4.4](https://docs.blender.org/manual/en/4.4/)
- [Blender 4.3](https://docs.blender.org/manual/en/4.3/)
- [Blender 4.2 LTS](https://docs.blender.org/manual/en/4.2/)
- [Blender 4.1](https://docs.blender.org/manual/en/4.1/)
- [Blender 4.0](https://docs.blender.org/manual/en/4.0/)
user: Give a detailed overview of Select More/Less: syntax, arguments, return values, common patterns.

assistant: # Select More/Less

With at least one vertex, edge, or face selected, *Select More/Less* expands or shrinks the selection.
However, if there is only one selection in any selection mode, *Less* will deselect it.

Face Step
:   With *Face Step* on, each use of the tool
    will affect the size of the selection on a face by face basis.
    When deactivated, it will be based on either vertices or edges depending on which
    [Selection Mode](introduction.xhtml) is active.

[image reference removed]

(From left to right) initial selection, without Face Step,
with Face Step, and in edge selection mode.
user: Describe GeometryNodeInputMeshFaceNeighbors(GeometryNode) from the Blender manual or Python API, including usage steps and snippets.

assistant: # GeometryNodeInputMeshFaceNeighbors(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.GeometryNodeInputMeshFaceNeighbors(*GeometryNode*)
:   Retrieve topology information relating to each face of a mesh

    *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 BlendDataMetaBalls(bpy_struct) in complete detail according to the official Blender documentation.

assistant: # BlendDataMetaBalls(bpy_struct)

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

*class* bpy.types.BlendDataMetaBalls(*bpy_struct*)
:   Collection of metaballs

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

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

        Returns:
        :   New metaball data-block

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

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

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

    tag(*value*)
    :   tag

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

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Show practical ways to work with Application Translations (bpy.app.translations) in a Blender add-on or script – include code.

assistant: # Application Translations (bpy.app.translations)

This object contains some data/methods regarding internationalization in Blender, and allows every py script
to feature translations for its own UI messages.
user: How do I use Save & Load in Blender? Include parameters, examples, warnings and best practices.

assistant: If you trust the source of your blend-files, you can enable *Auto Run Python Scripts*. This option is meant to protect
you from malicious Python scripts in blend-files that you got from someone else. Many users turn this option on, as
advanced rigs tend to use scripts of some sort. **Use caution, as this is a global setting, and may allow potentially
malicious Python code from an untrusted source to run.**

See Save & Load [Auto Run Python Scripts](../../editors/preferences/save_load.html#bpy-types-preferencesfilepaths-use-scripts-auto-execute) Preference.
user: How do I use Recalculate Roll in Blender? Include parameters, examples, warnings and best practices.

assistant: Automatically align the roll of all selected bones to various points of reference.

Axis Orientation
:   Local (X, Z, -X, -Z) Tangent
    :   Align the roll of the selected bones relative to the axis defined by the bones and their parent.
        If a bone has no parent, use the first child as a point of reference instead,
        even if that child is not connected and another one is.
        For bones with no parent and no children, this option does nothing.

    Global (X, Y, Z, -X, -Y, -Z) Axis
    :   Align the roll of the selected bones such that their Z axis points towards the chosen global axis.

    Active Bone
    :   Align the roll of the selected bones such that their Z axis points where the active bone’s Z axis is currently
        pointing.

    View Axis
    :   Align the roll of the selected bones such that their Z axis points at the viewport’s forward/backward axis,
        basically the user’s eyes.

    Cursor
    :   Align the roll of the selected bones such that their Z axis points at the 3D cursor.

Flip Axis
:   Change the result by 180°.

Shortest Rotation
:   Change the result by 180° when needed in order to force the absolute roll value below 90°.
    For example, for an initial result of 160°, this option will instead flip that to -20°.
user: How do I use Examples in Blender? Include parameters, examples, warnings and best practices.

assistant: ### Table

| Value | Group Index | Leading | Trailing | Total |
| --- | --- | --- | --- | --- |
| 1 | 7 | 1 | 0 | 6 |
| 3 | 7 | 4 | 1 | 6 |
| 2 | 7 | 6 | 4 | 6 |
| 1 | 3 | 1 | 0 | 3 |
| 0 | 3 | 1 | 1 | 3 |
| 2 | 3 | 3 | 1 | 3 |

A few examples of input values and the node’s results. One important take-away from this table
is that the specific values for the *Group Input* do not matter; it only matters that the
values are shared between elements.

### Stacking Boxes

[image reference removed]

Here, the node is used in combination with the [Random Value Node](../random_value.xhtml)
to create a stack of randomly scaled boxes. The *Group Index* input is not used, because all boxes
are meant to be in the same stack.

[image reference removed]

A slightly more complicated version of the previous example,
using the *Group Index* input to create three separate stacks.
user: Show practical ways to work with White Noise Texture Node in a Blender add-on or script – include code.

assistant: # White Noise Texture Node

The *White Noise Texture* node returns a random number based on an input [Seed](../../../glossary/index.xhtml#term-Seed).
The seed can be a number, a 2D vector, a 3D vector, or a 4D vector; depending on the *Dimensions* property.
The output number ranges between zero and one.

[image reference removed]
user: Explain Snap in complete detail according to the official Blender documentation.

assistant: The toggle button enables/disables automatic keyframe snapping.
The dropdown button shows a popover with the following options:

Snap To
:   Type of element to snap to.

    Frame:
    :   Snap to full frames.

    Second:
    :   Snap to seconds.

    Nearest Marker:
    :   Snap to the nearest [Marker](../../animation/markers.xhtml).

Absolute Time Snap
:   When disabled, keyframes will move in increments of *Snap To*.
    For example, if you selected *Second* and have a keyframe that’s currently on
    0:06+5, dragging it to the right will snap it to 0:07+5. Its time
    increases by a second, and its subsecond offset of 5 frames remains the same.

    When enabled, keyframes will snap to multiples of *Snap To*.
    Taking the above example, the keyframe would snap to 0:07+0,
    removing the subsecond offset.
user: Describe Box Erase from the Blender manual or Python API, including usage steps and snippets.

assistant: The *Box Erase* operator erases all Grease Pencil strokes within a rectangular selection.

- Press `B`, then click and drag to define a rectangular area.
- Release the mouse button to apply the eraser.
- All points of strokes within the box are removed.
user: Provide the full official documentation entry for Troubleshooting Linux – NVIDIA, preserving all code examples.

assistant: # Troubleshooting Linux – NVIDIA

Blender uses OpenGL for the 3D Viewport and user interface. The graphics processing unit (GPU) and driver have a big
impact on Blender’s behavior and performance.

This section lists possible solutions for graphics glitches, problems with EEVEE and Cycles, and crashes related to
your GPU.
user: Describe Color Sets Items from the Blender manual or Python API, including usage steps and snippets.

assistant: # Color Sets Items

DEFAULT:
:   Default Colors.

THEME01:
:   01 - Theme Color Set.

THEME02:
:   02 - Theme Color Set.

THEME03:
:   03 - Theme Color Set.

THEME04:
:   04 - Theme Color Set.

THEME05:
:   05 - Theme Color Set.

THEME06:
:   06 - Theme Color Set.

THEME07:
:   07 - Theme Color Set.

THEME08:
:   08 - Theme Color Set.

THEME09:
:   09 - Theme Color Set.

THEME10:
:   10 - Theme Color Set.

THEME11:
:   11 - Theme Color Set.

THEME12:
:   12 - Theme Color Set.

THEME13:
:   13 - Theme Color Set.

THEME14:
:   14 - Theme Color Set.

THEME15:
:   15 - Theme Color Set.

THEME16:
:   16 - Theme Color Set.

THEME17:
:   17 - Theme Color Set.

THEME18:
:   18 - Theme Color Set.

THEME19:
:   19 - Theme Color Set.

THEME20:
:   20 - Theme Color Set.

CUSTOM:
:   Custom Color Set.
user: Explain Settings in complete detail according to the official Blender documentation.

assistant: # Settings

Presets
:   Contains a number of [preset](../../../interface/window_system/tabs_panels.xhtml#ui-presets) cloth examples.

Quality Steps
:   Set the number of simulation steps per frame. Higher values result in better quality, but will be slower.

Speed Multiplier
:   Adjust how fast time progresses in the cloth simulation.
user: Give a detailed overview of Custom Range: syntax, arguments, return values, common patterns.

assistant: When working with volume objects, EEVEE automatically computes the best depth range where to compute
the volume sampling and lighting.
In certain situations, this isn’t enough and produces sub-optimal sampling which increases noise.
This is particularly the case when using a volume shader inside the *World* or when working with large
number of volume objects.
The custom depth range can be enabled to restrict the computation of volumes to a certain range along
the camera depth and thus increase precision.

Start
:   Start distance of the volumetric effect.

End
:   End distance of the volumetric effect.
user: What is Drawing Tools and how is it used in Blender Python scripting?

assistant: # Drawing Tools

[image reference removed]

Cursor
:   Change the location of the 3D Cursor.

[Brush](tools/brush.html)
:   Tool to use for any of the [drawing brushes](brushes/draw.html).

[Erase](tools/erase.html#tool-grease-pencil-draw-erase)
:   Erase strokes.

[Fill](tools/fill.html#tool-grease-pencil-draw-fill)
:   Automatic fill closed strokes areas.

[Box](tools/box.html#tool-grease-pencil-draw-box)
:   Draw rectangular shapes.

    [Circle](tools/circle.html#tool-grease-pencil-draw-circle)
    :   Draw oval shapes.

    [Line](tools/line.html#tool-grease-pencil-draw-line)
    :   Draw straight lines.

    [Polyline](tools/polyline.html#tool-grease-pencil-draw-polyline)
    :   Draw straight multiple lines.

    [Arc](tools/arc.html#tool-grease-pencil-draw-arc)
    :   Draw simple arcs.

    [Curve](tools/curve.html#tool-grease-pencil-draw-curve)
    :   Draw complex Bézier style curves.

[Trim](tools/trim.html#tool-grease-pencil-draw-trim)
:   Cut strokes in between others.

[Eyedropper](tools/eyedropper.html#tool-grease-pencil-draw-eyedropper)
:   Eyedropper to create new materials or palette color based on sampled colors in the 3D Viewport.

[Interpolate](tools/interpolate.html#tool-grease-pencil-draw-interpolate) `Ctrl`-`E`
:   Automatically create a breakdown keyframe between two normal keyframes.
user: Describe Customization from the Blender manual or Python API, including usage steps and snippets.

assistant: Keyboard shortcuts

Blender makes heavy use of keyboard shortcuts to speed up work.
These can be customized in the [Keymap Editor](../../editors/preferences/keymap.xhtml#prefs-input-keymap-editor).

Theme colors

Blender allows for most of its interface colors to be changed to suit the needs of the user.
If you find that the colors you see on screen do not match those
in the Manual, it could be that your default theme has been altered.
Creating a new theme or selecting/altering a preexisting one can be done by opening
the [Preferences](../../editors/preferences/index.xhtml) and clicking on the *Themes* tab.

Accessibility

Blender has several options for visibility customization,
including resolution scale, and the ability to load custom fonts.
These settings can be configured in the [Interface Preferences](../../editors/preferences/interface.xhtml).
user: Show practical ways to work with Command-line in a Blender add-on or script – include code.

assistant: Extensions can be built, validated & installed via command-line.

To build the package defined in the current directory use the following commands:

```
blender --command extension build
```

See [build](../command_line/extension_arguments.xhtml#command-line-args-extension-build) docs.

—

To validate the manifest without building the package:

```
blender --command extension validate
```

You may also validate a package without having to extract it first.

```
blender --command extension validate add-on-package.zip
```

See [validate](../command_line/extension_arguments.xhtml#command-line-args-extension-validate) docs.
user: Describe Example from the Blender manual or Python API, including usage steps and snippets.

assistant: The image below shows the final render of a low-poly landscape
obtained by moving up the vertices of a triangulated grid
with *Proportional Editing* enabled.

[image reference removed]

A landscape obtained via Proportional Editing.
user: Provide the full official documentation entry for BlendDataHairCurves(bpy_struct), preserving all code examples.

assistant: # BlendDataHairCurves(bpy_struct)

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

*class* bpy.types.BlendDataHairCurves(*bpy_struct*)
:   Collection of hair curves

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

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

        Returns:
        :   New curves data-block

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

    remove(*curves*, *\**, *do_unlink=True*, *do_id_user=True*, *do_ui_user=True*)
    :   Remove a curves data-block from the current blendfile

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

    tag(*value*)
    :   tag

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

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

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

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

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

        Returns:
        :   The class or default when not found.

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

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

Cumulative Offset
:   When enabled, each point’s offset is influenced by the displacement of the preceding points
    along the curve.
    This produces smoother and more continuous bending rather than independent point motion.

Factor
:   Controls the overall intensity of the noise deformation.
    A value of 0.0 disables the effect, while 1.0 applies the full displacement.

Distance
:   Multiplies the amplitude of the noise displacement.
    Higher values increase how far the hair is moved from its original shape.

Shape
:   Defines the variation of the effect along the curve length.
    A value of 0.0 applies a constant deformation, while 0.5 produces a linear falloff from root to tip.

Scale
:   Adjusts the scale of the noise texture based on the root position of each curve.
    Smaller values create larger, smoother waves, while higher values produce finer detail.

Scale along Curve
:   Defines the frequency of the noise along each individual curve.
    Higher values create tighter, more frequent variations along the hair strands.

Offset per Curve
:   Adds a random offset to the noise pattern for each curve.
    This ensures that each hair receives a unique noise variation.

Seed
:   Sets the random seed used to initialize the noise pattern.
    Changing this value produces different random results while maintaining the same parameters.

Preserve Length
:   When enabled, maintains the original length of each curve segment during deformation.
    When disabled, noise deformation may stretch or compress the curve slightly.
user: Show practical ways to work with Inputs in a Blender add-on or script – include code.

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 Apply, preserving all code examples.

assistant: # Apply

Pose as Rest Pose
:   Conversely, you may define the current pose as the new rest pose
    (i.e. “apply” current transformations to the *Edit Mode*). When you do so,
    the skinned objects/geometry is **also** reset to its default,
    non-deformed state, which generally means you will have to skin it again.

Pose Selected as Rest Pose
:   Same as *Pose as Rest Pose* but only applies to selected bones.

Visual Transform to Pose
:   Applies the position of the bone after [Constraints](../../../constraints/index.xhtml);
    allowing the constraints to be deleted and the bones will remain in their constrained positions.

Assign Custom Property Values as Default
:   Assign the current values of custom properties as their defaults,
    for use as part of the rest pose state in NLA track mixing.
user: How do I use Outputs in Blender? Include parameters, examples, warnings and best practices.

assistant: View Vector
:   A normalized vector, in camera space, from the camera to the shading point.

View Z Depth
:   The distance each pixel is away from the camera.

View Distance
:   Distance from the camera to the shading point.
user: Explain Outputs in complete detail according to the official Blender documentation.

assistant: Next Vertex Index
:   The following vertex on the shortest path from every vertex to the closest endpoint
    (as defined by the cost input).

Total Cost
:   The remaining cost before an end vertex is reached.
user: Provide the full official documentation entry for MovieTrackingObjectTracks(bpy_struct), preserving all code examples.

assistant: # MovieTrackingObjectTracks(bpy_struct)

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

*class* bpy.types.MovieTrackingObjectTracks(*bpy_struct*)
:   Collection of movie tracking tracks

    active
    :   Active track in this tracking data object

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

    new(*\**, *name=''*, *frame=1*)
    :   create new motion track in this movie clip

        Parameters:
        :   - **name** (*string**,* *(**optional**,* *never None**)*) – Name of new track
            - **frame** (*int in* *[**0**,* *1048574**]**,* *(**optional**)*) – Frame, Frame number to add tracks on

        Returns:
        :   Newly created track

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

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Provide the full official documentation entry for Gizmos(bpy_struct), preserving all code examples.

assistant: # Gizmos(bpy_struct)

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

*class* bpy.types.Gizmos(*bpy_struct*)
:   Collection of gizmos

    new(*type*)
    :   Add gizmo

        Parameters:
        :   **type** (*string**,* *(**never None**)*) – Gizmo identifier

        Returns:
        :   New gizmo

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

    remove(*gizmo*)
    :   Delete gizmo

        Parameters:
        :   **gizmo** ([`Gizmo`](bpy.types.Gizmo.html#bpy.types.Gizmo "bpy.types.Gizmo"), (never None)) – New gizmo

    clear()
    :   Delete all gizmos

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

assistant: Shadow Pool
:   A bigger pool size allows for more shadows in the scene
    but might not fit into GPU memory and decreases performance.
    Increasing the size might fix the *Shadow buffer full* error.

Light Probes Volume Pool
:   A bigger pool size allows for more irradiance grids in the scene
    but might not fit into GPU memory and decreases performance.
user: Show practical ways to work with Point in a Blender add-on or script – include code.

assistant: [image reference removed]

Marker schematic.

The whole marker can be moved with `RMB` or by dragging the anchor point (black dot) with `LMB`.
Pressing `G` also moves the whole marker. When pressing `G` twice the marker will be moved
while keeping the anchor in place. Note that the anchor point outside the pattern area is shown as a cross connected
with marker position with a dashed line.

`S` scales the whole marker.
The whole pattern area only will be scaled by pressing `S` twice;
The Pattern can also be rotated using the `R` key which, depending on the used pivot point,
will either rotate patterns around their own centers or rotate the whole markers around e.g. the median point.

To match the perspective transformation of a marker on a plane, the individual corners must be edited manually.
Each marker corner can deform individually to define the shapes.
Corner positions can be edited by dragging them with a mouse.
Dragging with `LMB` will change the position of an individual corner.

The Search area can not be rotated; this is intentional. It doesn’t make sense to deform the search area.
user: How do I use Outputs in Blender? Include parameters, examples, warnings and best practices.

assistant: Bundle
:   The resulting bundle that contains all items from the input bundles.

    Use the [Separate Bundle Node](separate_bundle.xhtml) to access individual items from the combined bundle if needed.
user: Show practical ways to work with Details in a Blender add-on or script – include code.

assistant: When Blender is started on a Microsoft Windows operating system, the *Console Window*
(called the Command Prompt) is first created as a separate window on the desktop.
The main Blender window will also appear and the *Console Window* will then be toggled off.
To display the console again, go to Window ‣ Toggle System Console.

To start Blender from the command line you need to open an instance of Command Prompt.
To do this, type `OSKey`-`R` then type `cmd`; this will open the Command Prompt window.
You then need to find the path to the Blender executable. If you installed Blender via the installer
then it can be found here:

```
C:\Program Files\Blender Foundation\Blender\blender.exe
```

[image reference removed]

Blender’s Console Window on Microsoft Windows.

The screenshot shows the Blender *Console Window* on Microsoft Windows directly after starting
Blender and then a short while later after opening a file along with the relevant messages.
user: Provide the full official documentation entry for HDRIs, preserving all code examples.

assistant: This panel manages [HDRI](../../glossary/index.xhtml#term-HDRI) image files
which can be used to light the view when [Material Preview](../3dview/display/shading.xhtml#dview-material-preview) or
[Rendered](../3dview/display/shading.xhtml#dview-rendered) shading is enabled.
user: Describe Vertex Paint Tools from the Blender manual or Python API, including usage steps and snippets.

assistant: # Vertex Paint Tools

Brush
:   Tool to use for any of the vertex paint [brushes](brushes.xhtml).

[Annotate](../../interface/annotate_tool.xhtml#tool-annotate-freehand)
:   Draw free-hand annotation.

    [Annotate Line](../../interface/annotate_tool.xhtml#tool-annotate-line)
    :   Draw straight line annotation.

    [Annotate Polygon](../../interface/annotate_tool.xhtml#tool-annotate-polygon)
    :   Draw a polygon annotation.

    [Annotate Eraser](../../interface/annotate_tool.xhtml#tool-annotate-eraser)
    :   Erase previous drawn annotations.
user: How do I use Rotation to Quaternion Node in Blender? Include parameters, examples, warnings and best practices.

assistant: # Rotation to Quaternion Node

[image reference removed]

The *Rotation to Quaternion* node converts a standard rotation value to a
[quaternion rotation](../../../../advanced/appendices/rotations.xhtml#quaternion-mode).
user: How do I use MovieClipScopes(bpy_struct) in Blender? Include parameters, examples, warnings and best practices.

assistant: # MovieClipScopes(bpy_struct)

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

*class* bpy.types.MovieClipScopes(*bpy_struct*)
:   Scopes for statistical view of a movie clip

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

assistant: [image reference removed]

The goal of this example is to turn a Curve into a tube-shaped mesh with pieces
cut away at regular intervals. At first, this seems straightforward: use the
[Curve to Mesh Node](../curve/operations/curve_to_mesh.xhtml) to create the tube,
read from the [Spline Parameter Node](../curve/read/spline_parameter.xhtml) to find
out where each tube vertex lies on the original curve, and do some math to decide
whether to delete the vertex.

This alone doesn’t work, however: the *Spline Parameter* node calculates its outputs
on the fly, and it can only do so for curves. Once the curve has been converted
to a mesh, this node can no longer be used.

This is where the *Capture Attribute* node comes in: it can *store* the calculated
distance on each curve control point. The *Curve to Mesh* node then transfers these
numbers to the mesh vertices (as it does for any attribute). From there, the attribute
can be retrieved again by connecting to the same *Capture Attribute* node that stored it.