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

assistant: # CurveMapPoint(bpy_struct)

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

*class* bpy.types.CurveMapPoint(*bpy_struct*)
:   Point of a curve used for a curve mapping

    handle_type
    :   Curve interpolation at this point: Bézier or vector

        Type:
        :   enum in [`'AUTO'`, `'AUTO_CLAMPED'`, `'VECTOR'`], default `'AUTO'`

    location
    :   X/Y coordinates of the curve point

        Type:
        :   [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 2 items in [-inf, inf], default (0.0, 0.0)

    select
    :   Selection state of the curve point

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

assistant: # CompositorNodeTransform(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.CompositorNodeTransform(*CompositorNode*)
:   Scale, translate and rotate an image

    *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: Explain CompositorNodeCornerPin(CompositorNode) in complete detail according to the official Blender documentation.

assistant: # CompositorNodeCornerPin(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.CompositorNodeCornerPin(*CompositorNode*)
:   Plane warp transformation using explicit corner 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: Show practical ways to work with References in a Blender add-on or script – include code.

assistant: |  |  |
| --- | --- |
| - [`ParticleSettings.texture_slots`](bpy.types.ParticleSettings.html#bpy.types.ParticleSettings.texture_slots "bpy.types.ParticleSettings.texture_slots") - [`ParticleSettingsTextureSlots.add`](bpy.types.ParticleSettingsTextureSlots.html#bpy.types.ParticleSettingsTextureSlots.add "bpy.types.ParticleSettingsTextureSlots.add") | - [`ParticleSettingsTextureSlots.create`](bpy.types.ParticleSettingsTextureSlots.html#bpy.types.ParticleSettingsTextureSlots.create "bpy.types.ParticleSettingsTextureSlots.create") |
user: Show practical ways to work with Named Attribute Node in a Blender add-on or script – include code.

assistant: # Named Attribute Node

[image reference removed]

The *Named Attribute* node outputs the data of an attribute based on the
context of where it is connected (the [Field Context](../../fields.xhtml#field-context)).
user: Show practical ways to work with Start Tweaking Strips Actions (Full Stack) in a Blender add-on or script – include code.

assistant: Enters Tweak Mode for the selected strip’s action, making its keyframes available for editing.
Leaves all the other tracks enabled so that you can still see their effects while making changes.

When you’re done, click Strip ‣ Stop Tweaking Strips Actions
or press `Tab` again.
user: Show practical ways to work with NodeClosureInput(NodeInternal) in a Blender add-on or script – include code.

assistant: # NodeClosureInput(NodeInternal)

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

*class* bpy.types.NodeClosureInput(*NodeInternal*)
:   paired_output
    :   Zone output node that this input node is paired with

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

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

    pair_with_output(*output_node*)
    :   Pair a zone input node with an output node.

        Parameters:
        :   **output_node** ([`NodeInternal`](bpy.types.NodeInternal.html#bpy.types.NodeInternal "bpy.types.NodeInternal")) – Output Node, Zone output node to pair with

        Returns:
        :   Result, True if pairing the node was successful

        Return type:
        :   boolean

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

assistant: Mode
:   Evaluated:
    :   Creates points from the curve’s evaluated points based on
        the [resolution](../read/spline_resolution.html) attribute
        for NURBS and Bézier splines. This mode will generally be the fastest,
        since the second step of sampling equal lengths is not necessary.

    Count:
    :   Sample each spline by evenly distributing the specified number of points.

    Length:
    :   Sample each spline by splitting it into segments with specified length.
        The length will be rounded down so that a whole number of samples will fit in
        each input spline. To counteract jumping when the length of the spline changes,
        the [Trim Curve Node](trim_curve.html) can be used with
        a multiple of this length.
user: Describe Gravity from the Blender manual or Python API, including usage steps and snippets.

assistant: # Gravity

Gravity is a global setting that is applied to all physics systems in a scene.
It can be found in the scene tab.
This value is generally fine left at its default, -9.810 on the Z axis,
which is the force of gravity in the real world.
Changing this value would simulate a lower or higher force of gravity.
Gravity denoted g, measurement *m* × *s*-2.

Gravity is applied in the same way to all physics systems.

Gravity is practically the same around the entirety of planet *Earth*.
For rendering scenes on The Moon, use -1.622 *m* × *s*-2 on the Z axis.
Another popular gravity value might be for Mars which
has a gravitation acceleration of -3.69 *m* × *s*-2 on the Z Axis.
user: What is Combine Bundle Node and how is it used in Blender Python scripting?

assistant: # Combine Bundle Node

[image reference removed]

The *Combine Bundle* node creates a new [Bundle](index.xhtml)
from multiple input values.
Each input becomes an element of the bundle, identified by its socket name.
Values can be accessed in other parts of the node tree using the
[Separate Bundle](separate_bundle.xhtml)
user: Explain Asset Libraries in complete detail according to the official Blender documentation.

assistant: Name and on-drive directory paths of asset libraries.
To make Blender aware of an asset library, add it to this list.
The name is for your reference only, and will appear in asset library selectors.
The path should point to the location of the asset library.

[image reference removed]

Name and Location of asset libraries in the Preferences.

To create a new asset library, just create an empty directory and add it to the [List View](../../interface/controls/templates/list_view.xhtml#ui-list-view).
Any asset from any blend-file contained in that directory
(or subdirectories thereof) will appear in the [Asset Browser](../asset_browser.xhtml).

Import Method
:   Determines how data is managed when an asset is imported,
    unless overridden by the [Asset Browser](../asset_browser.xhtml#bpy-types-fileassetselectparams-import-method).

    [Link](../../files/linked_libraries/link_append.xhtml#bpy-ops-wm-link)
    :   The asset will be linked to the current blend-file, and thus be read-only.
        Later changes to the asset file will be reflected in all files that link it in.

    [Append](../../files/linked_libraries/link_append.xhtml#bpy-ops-wm-append)
    :   All of the asset and all its dependencies will be appended to the current file.
        Dragging a material into the scene three times will result in three independent copies.
        Dragging an object into the scene three times will also result in three independent copies.

        “Dependencies” in this case means everything the asset refers to.
        For an object, this can be its mesh and materials, but also other objects
        used by modifiers, constraints, or drivers.

        Since the file now has its own copy of the asset, later changes to
        the asset file will not be reflected in the file it’s appended to.

    Append (Reuse Data)
    :   *Specific to the Asset Browser*.

        The first time an asset is used, it will be appended, including its dependencies,
        just like described previously. However, Blender will keep track of where it originated,
        and the next time the asset is used, as much data as possible will be reused.
        Dragging a material into the scene three times will only load it once,
        and just assign the same material three times.
        Dragging an object into the scene three times will create three copies of the object,
        but all copies will share their mesh data, materials, etc.

        Since the file now has its own copy of the asset, later changes to
        the asset file will not be reflected in the file it’s appended to.

    Pack
    :   Imports the asset as *linked* data and immediately packs it into the current blend-file.
        This ensures that the asset remains available even if the original library data is modified
        or becomes unavailable.

        Useful for maintaining self-contained files that do not rely on external asset library paths.

Relative Path
:   Use relative path when linking assets from this asset library.
user: What is Import STL Node and how is it used in Blender Python scripting?

assistant: # Import STL Node

[image reference removed]

The *Import STL* node imports mesh geometry from a .stl (Stereolithography) file.

STL files are commonly used for 3D printing and CAD applications and contain only surface geometry,
typically as a collection of triangles with no color, texture, or other attributes.

This node enables incorporating external STL assets into Geometry Nodes for procedural processing or visualization.
user: Provide the full official documentation entry for ShaderNodeBsdfSheen(ShaderNode), preserving all code examples.

assistant: # ShaderNodeBsdfSheen(ShaderNode)

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

*class* bpy.types.ShaderNodeBsdfSheen(*ShaderNode*)
:   Reflection for materials such as cloth.
    Typically mixed with other shaders (such as a Diffuse Shader) and is not particularly useful on its own

    distribution
    :   Sheen shading model

        - `ASHIKHMIN`
          Ashikhmin – Classic Ashikhmin velvet (legacy model).
        - `MICROFIBER`
          Microfiber – Microflake-based model of multiple scattering between normal-oriented fibers.

        Type:
        :   enum in [`'ASHIKHMIN'`, `'MICROFIBER'`], default `'ASHIKHMIN'`

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: What is Combine Spherical Node and how is it used in Blender Python scripting?

assistant: # Combine Spherical Node

[image reference removed]

The *Combine Spherical* node converts spherical coordinates (R, Φ, Θ)
into a Cartesian vector (X, Y, Z). It is the inverse of the
[Separate Spherical](../../../../modeling/geometry_nodes/utilities/vector/separate_spherical.html) node.

Spherical coordinates represent a point in 3D space by its distance from the origin,
horizontal rotation, and vertical inclination, which can be useful for constructing
radial or rotational patterns and generating coordinates on a sphere.
user: Provide the full official documentation entry for Inputs, preserving all code examples.

assistant: Background
:   The background image.

Foreground
:   The foreground image to be placed over the background.

Factor
:   Controls the opacity of the foreground image, from 0 (fully transparent) to 1 (fully opaque).

Type
:   Determines the alpha compositing method:

    Over:
    :   The standard alpha-over operation.
        The foreground is placed over the background based on its alpha channel.

    Disjoint Over:
    :   Similar to *Over*, but assumes the background has been held out by the foreground,
        resulting in cleaner edges when compositing multiple layers.

    Conjoint Over:
    :   Similar to *Over*, but assumes the foreground overlaps or extends into the background.
        Useful when the foreground is more opaque but not fully opaque.

Straight Alpha
:   Specifies whether the foreground uses *straight* alpha (unpremultiplied) instead of *premultiplied* alpha.
    Most images in the compositor are premultiplied, so this should remain disabled in most cases.
    Enable it only if the foreground has been explicitly converted to straight alpha form.
user: What is Transform and how is it used in Blender Python scripting?

assistant: Tools for moving control points.

Move, Rotate, Scale
:   See [Basic Transformations](../../../scene_layout/object/editing/transform/introduction.html).

To Sphere, Shear, Bend, Push/Pull, Warp, Randomize
:   See [Mesh Transformations](../../meshes/editing/mesh/transform/index.html).

Move/Scale Texture Space
:   See [Texture Space](../../meshes/uv/uv_texture_spaces.html#properties-texture-space).
user: Give a detailed overview of – Material Preview: syntax, arguments, return values, common patterns.

assistant: Render the 3D Viewport with [EEVEE](../../../render/eevee/introduction.html) and an HDRI environment.
This mode is particularly suited for previewing materials and painting textures.
You can select different lighting conditions to test your materials.

### Lighting

Scene Lights
:   Use the lights in the scene. When disabled (or when the scene contains no lights),
    a virtual light is used instead.

Scene World
:   Use the World of the scene.
    When disabled, a world will be constructed with the following options:

    HDRI Environment
    :   The environment map used to light the scene.

    Rotation
    :   The rotation of the environment on the Z axis.

        World Space Lighting
        :   Makes the lighting rotation fixed and not follow the camera.

    Strength
    :   Light intensity of the environment.

    World Opacity
    :   Opacity of the HDRI as a background image in the viewport.

    Blur
    :   Factor to unfocus the HDRI.
        Note that this does not change the diffusion of the lighting,
        only the appearance of the background.

Render Pass
:   Instead of the combined render, show a specific
    [render pass](../../../render/layers/passes.html).
    Useful to analyze and debug geometry, materials and lighting.

Compositor
:   When to preview the result of [compositing](../../../compositing/introduction.html) in the 3D Viewport.

    Disabled:
    :   Never show the compositing output.

    Camera:
    :   Only show the compositing output when in [Camera View](../navigate/camera_view.html),
        which gives the best vantage point for previewing the final result.

    Always:
    :   Always show the compositing output.
user: Give a detailed overview of References: syntax, arguments, return values, common patterns.

assistant: |  |  |
| --- | --- |
| - [`XrActionMapBinding.component_paths`](bpy.types.XrActionMapBinding.html#bpy.types.XrActionMapBinding.component_paths "bpy.types.XrActionMapBinding.component_paths") - [`XrComponentPaths.find`](bpy.types.XrComponentPaths.html#bpy.types.XrComponentPaths.find "bpy.types.XrComponentPaths.find") | - [`XrComponentPaths.new`](bpy.types.XrComponentPaths.html#bpy.types.XrComponentPaths.new "bpy.types.XrComponentPaths.new") - [`XrComponentPaths.remove`](bpy.types.XrComponentPaths.html#bpy.types.XrComponentPaths.remove "bpy.types.XrComponentPaths.remove") |
user: Show practical ways to work with Visual Geometry to Objects in a Blender add-on or script – include code.

assistant: Creates new objects from the evaluated geometry of the active object,
including the effects of all modifiers, constraints, and instancing.

This operator is similar to [Make Instances Real](#bpy-ops-object-duplicates-make-real),
but with several key differences:

- Instanced geometry is **not** realized. Instead, shared data is preserved between objects that use it.
- The original object is **not removed or modified**,
  avoiding unintended disruptions to relationships with other objects.
- Instancing hierarchies are preserved by creating new objects
  and collections that reflect the evaluated structure.

This operator is useful for extracting visible results of geometry nodes, modifiers, or instancing setups
without permanently modifying the original scene structure.
user: What is AnnotationLayers(bpy_struct) and how is it used in Blender Python scripting?

assistant: # AnnotationLayers(bpy_struct)

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

*class* bpy.types.AnnotationLayers(*bpy_struct*)
:   Collection of annotation layers

    active_index
    :   Index of active annotation layer

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

    active_note
    :   Note/Layer to add annotation strokes to

        Type:
        :   enum in [`'DEFAULT'`], default `'DEFAULT'`

    new(*name*, *\**, *set_active=True*)
    :   Add a new annotation layer

        Parameters:
        :   - **name** (*string**,* *(**never None**)*) – Name, Name of the layer
            - **set_active** (*boolean**,* *(**optional**)*) – Set Active, Set the newly created layer to the active layer

        Returns:
        :   The newly created layer

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

    remove(*layer*)
    :   Remove a annotation layer

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

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: |  |  |
| --- | --- |
| - [`Image.stereo_3d_format`](bpy.types.Image.html#bpy.types.Image.stereo_3d_format "bpy.types.Image.stereo_3d_format") - [`ImageStrip.stereo_3d_format`](bpy.types.ImageStrip.html#bpy.types.ImageStrip.stereo_3d_format "bpy.types.ImageStrip.stereo_3d_format") - [`MovieStrip.stereo_3d_format`](bpy.types.MovieStrip.html#bpy.types.MovieStrip.stereo_3d_format "bpy.types.MovieStrip.stereo_3d_format") | - [`ImageFormatSettings.stereo_3d_format`](bpy.types.ImageFormatSettings.html#bpy.types.ImageFormatSettings.stereo_3d_format "bpy.types.ImageFormatSettings.stereo_3d_format") - [`UILayout.template_image_stereo_3d`](bpy.types.UILayout.html#bpy.types.UILayout.template_image_stereo_3d "bpy.types.UILayout.template_image_stereo_3d") |
user: What is Blender 3 and how is it used in Blender Python scripting?

assistant: - [Blender 3.6 LTS](https://docs.blender.org/manual/en/3.6/)
- [Blender 3.5](https://docs.blender.org/manual/en/3.5/)
- [Blender 3.4](https://docs.blender.org/manual/en/3.4/)
- [Blender 3.3 LTS](https://docs.blender.org/manual/en/3.3/)
- [Blender 3.2](https://docs.blender.org/manual/en/3.2/)
- [Blender 3.1](https://docs.blender.org/manual/en/3.1/)
- [Blender 3.0](https://docs.blender.org/manual/en/3.0/)
user: What is References and how is it used in Blender Python scripting?

assistant: |  |  |
| --- | --- |
| - [`GeometryNodeIndexSwitch.index_switch_items`](bpy.types.GeometryNodeIndexSwitch.html#bpy.types.GeometryNodeIndexSwitch.index_switch_items "bpy.types.GeometryNodeIndexSwitch.index_switch_items") - [`NodeIndexSwitchItems.new`](bpy.types.NodeIndexSwitchItems.html#bpy.types.NodeIndexSwitchItems.new "bpy.types.NodeIndexSwitchItems.new") | - [`NodeIndexSwitchItems.remove`](bpy.types.NodeIndexSwitchItems.html#bpy.types.NodeIndexSwitchItems.remove "bpy.types.NodeIndexSwitchItems.remove") |
user: Explain Example in complete detail according to the official Blender documentation.

assistant: Glow Effect samples.

|  |  |  |  |
| --- | --- | --- | --- |
| ../../_images/grease-pencil_visual-effects_glow_original.png   Original image. | ../../_images/grease-pencil_visual-effects_glow_luminance.png   Mode: Luminance. | ../../_images/grease-pencil_visual-effects_glow_luminance-alpha.png   Mode: Luminance (Glow Under). | ../../_images/grease-pencil_visual-effects_glow_color.png   Mode: Color (Black lines). |
user: Give a detailed overview of Viewport: syntax, arguments, return values, common patterns.

assistant: Before fine-tuning the camera parameters,
you can set the convergence plane in the viewport based in your scene depth layout.
Go outside the camera view and you will instantly see the convergence plane in front of the camera.

You can toggle this and other display settings in the Stereoscopy panel of the 3D Viewport’s Sidebar.
In the following image, the camera’s frustum volumes are also visible.

[[image reference removed]](../../../../_images/render_output_properties_stereoscopy_usage_stereo-preview.png)

Viewport plane and volume stereo preview.
user: Show practical ways to work with IDOverrideLibraryProperty(bpy_struct) in a Blender add-on or script – include code.

assistant: # IDOverrideLibraryProperty(bpy_struct)

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

*class* bpy.types.IDOverrideLibraryProperty(*bpy_struct*)
:   Description of an overridden property

    operations
    :   List of overriding operations for a property

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

    rna_path
    :   RNA path leading to that property, from owning ID

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

assistant: # Make Single User

Makes the selected or all object data-blocks single users, that is, not shared
(linked) between other objects in the blend-file.

Additionally, it can also make single-user copies of its dependencies,
like meshes, curves, materials, animations…

Type
:   These actions work on the selected objects, or on all the objects of the scene.

    All, Selected Objects

Data-blocks
:   Lets you, in addition to the menu predefined selection, choose the type of data-blocks individually.

    Object:
    :   Make single user objects.

    Object Data:
    :   Make single user object data.

    Materials:
    :   Make materials local to each data-block.

    Object Animation:
    :   Make the animation of [Object Properties](../../properties/index.xhtml)
        data local to each object.

    Object Data Animation:
    :   Make object data (mesh, curve etc.) animation data local to each object.
user: Give a detailed overview of Bpy.Types.Nodetreeinterfacesocketvectorpercentage2D: syntax, arguments, return values, common patterns.

assistant: et_subclass_py() Inherited Properties Inherited Functions
user: Describe Curl Hair Curves from the Blender manual or Python API, including usage steps and snippets.

assistant: # Curl Hair Curves

The *Curl Hair Curves* node deforms existing hair curves into curls by wrapping them
around nearby guide curves.
It is useful for creating coiled, spiral, or wavy hair patterns and for adding stylized
variation or realism to a groom.
The curls can vary in radius, frequency, and start position, with optional random offsets
for natural variation.
user: Provide the full official documentation entry for AttributeGroupCurves(bpy_struct), preserving all code examples.

assistant: # AttributeGroupCurves(bpy_struct)

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

*class* bpy.types.AttributeGroupCurves(*bpy_struct*)
:   Group of geometry attributes

    active
    :   Active attribute

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

    active_index
    :   Active attribute index or -1 when none are active

        Type:
        :   int in [-1, inf], default 0

    new(*name*, *type*, *domain*)
    :   Add attribute to geometry

        Parameters:
        :   - **name** (*string**,* *(**never None**)*) – Name, Name of geometry attribute
            - **type** (enum in [Attribute Type Items](bpy_types_enum_items/attribute_type_items.html#rna-enum-attribute-type-items)) – Type, Attribute type
            - **domain** (enum in [Attribute Domain Items](bpy_types_enum_items/attribute_domain_items.html#rna-enum-attribute-domain-items)) – Domain, Type of element that attribute is stored on

        Returns:
        :   New geometry attribute

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

    remove(*attribute*)
    :   Remove attribute from geometry

        Parameters:
        :   **attribute** ([`Attribute`](bpy.types.Attribute.html#bpy.types.Attribute "bpy.types.Attribute"), (never None)) – Geometry Attribute

    domain_size(*domain*)
    :   Get the size of a given domain

        Parameters:
        :   **domain** (enum in [Attribute Domain Items](bpy_types_enum_items/attribute_domain_items.html#rna-enum-attribute-domain-items)) – Domain, Type of element that attribute is stored on

        Returns:
        :   Size, Size of the domain

        Return type:
        :   int in [0, inf]

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

assistant: # Options

Auto Normalize
:   Ensures that all deforming vertex groups add up to one while painting.
    When this option is turned off, then all weights of a point can have any value between 0 and 1.
    However, when vertex groups are used as deform groups for character animation
    then Blender always interprets the weight values relative to each other.
    That is, Blender always does a normalization over all deform bones.
    Hence in practice it is not necessary to maintain a strict normalization and
    further normalizing weights should not affect animation at all.

    This option works most intuitively when used to maintain normalization while
    painting on top of weights that are already normalized with another tool.
user: Describe Forces from the Blender manual or Python API, including usage steps and snippets.

assistant: Brownian
:   Specify the amount of Brownian motion.
    Brownian motion adds random motion to the particles based on a Brownian noise field.
    This is nice to simulate small, random wind forces.

Drag
:   A force that reduces particle velocity in relation to its speed and size
    (useful in order to simulate air drag or water drag).

Damp
:   Reduces particle velocity (deceleration, friction, dampening).
user: Give a detailed overview of Inputs: syntax, arguments, return values, common patterns.

assistant: Surface Input Type
:   Determines how the surface data is provided for interpolation.

    Object:
    :   Use an object reference to provide the surface.

    Geometry:
    :   Use a geometry input directly connected to the surface mesh.

Surface
:   The surface object used for generation.
    Its transforms must match those of the modifier object to ensure correct placement.

Surface UV Map
:   The UV map used to determine the root positions of the hair curves on the surface mesh.

Surface Rest Position
:   When enabled, sets the surface mesh to its rest position before generating the hair curves.
    This ensures consistent attachment locations when deforming the surface later.

Hair Length
:   The length of the generated hair curves.

Hair Material
:   The material assigned to the generated hair curves.

Control Points
:   The number of control points used for each generated curve.
    More points allow smoother deformations and finer control.

### Distribution

Distribution Method
:   Determines how the root points are distributed across the surface.

    Random:
    :   Places points randomly on the surface.

    Poisson Disk:
    :   Uses a Poisson disk distribution to ensure a minimum spacing between points.
        See [Distribute Points on Faces](../../point/distribute_points_on_faces.html) for more details.

Density
:   Controls the number of generated hair curves per surface area.
    Higher values produce denser hair coverage.

Density Mask
:   A scalar factor that modulates the density across the surface.
    This allows certain regions to have more or fewer generated curves.

Mask Texture
:   An image texture used to discard curves based on pixel values sampled with the *Surface UV Map* input.
    White areas retain curves, while black areas remove them.

Viewport Amount
:   A factor applied to reduce curve density in the viewport for better performance,
    without affecting the final render.

Seed
:   Sets the random seed for the distribution process.
    Changing this value alters the pattern of generated curves while maintaining the same parameters.
user: Describe Using Operators from the Blender manual or Python API, including usage steps and snippets.

assistant: # Using Operators

Blender’s operators are tools for users to access, that can be accessed with Python too which is very useful.
Still operators have limitations that can make them cumbersome to script.

The main limits are:

- Can’t pass data such as objects, meshes or materials to operate on (operators use the context instead).
- The return value from calling an operator is the success (if it finished or was canceled),
  in some cases it would be more logical from an API perspective to return the result of the operation.
- Operators’ poll function can fail where an API function would raise an exception giving details on exactly why.
user: Show practical ways to work with GeometryNodeCurveSplineType(GeometryNode) in a Blender add-on or script – include code.

assistant: # GeometryNodeCurveSplineType(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.GeometryNodeCurveSplineType(*GeometryNode*)
:   Change the type of curves

    spline_type
    :   The curve type to change the selected curves to

        Type:
        :   enum in [Curves Type Items](bpy_types_enum_items/curves_type_items.html#rna-enum-curves-type-items), default `'POLY'`

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: Vertex Index
:   The index of the vertex for which to find the edges.

Weights
:   The weights of the edges in the geometry. Unlike the other inputs which follow
    the context domain, this one is always evaluated in the Edge domain.

    The edges are sorted by their associated weight in ascending order.
    Edges with the same weight are sorted by their index.

Sort Index
:   The 0-based index of the edge to select from the vertex’s sorted edges.
    If this value is outside the range of valid indices, it wraps around.
user: Provide the full official documentation entry for Select Grouped, preserving all code examples.

assistant: You can select bones, based on various properties, through the *Select Grouped* pop-up menu `Shift`-`G`:

Collection
:   Selects all bones that are share at least one bone collection with the active bone.

Color
:   Selects all bones that have the same color as the active bone.

Keying Set
:   All bones affected by active [Keying Set](../../keyframes/keying_sets.xhtml)

Children
:   Select all children of currently selected bones.

Immediate Children
:   Select direct children of currently selected bones.

Parents
:   Select the parents of currently selected bones.

Siblings
:   Select all bones that have the same parent as currently selected bones.
user: Explain Active Point in complete detail according to the official Blender documentation.

assistant: [image reference removed]

Active Point panel.

This panel is shown when both a tracking marker and mask is selected.

### Parent

In the *Movie Clip Editor* it is possible to link the whole mask or its points to motion tracks.
This way the mask or points will follow the tracks.

Parent
:   [Data ID](../../interface/controls/templates/data_block.xhtml#ui-data-id) to which the mask or spline is parented to
    in case of parenting to movie tracking data set to Movie Clip data-block.

Parent Type
:   Point Track, Plane Track

Object
:   [Object](../tracking/clip/sidebar/track/objects.xhtml#movie-clip-tracking-properties-object) to parent to.

Track
:   Name of individual tracks.

### Animation

Controls animation data for mask properties, including active [Actions](../../animation/actions.xhtml)
and their assigned [Slot](../../animation/actions.xhtml#animation-actions-slots).

See [Manually Assigning Actions and Slots](../../animation/actions.xhtml#animation-actions-slots-manual-assign) for more information.
user: Show practical ways to work with References in a Blender add-on or script – include code.

assistant: |  |  |
| --- | --- |
| - [`WindowManager.event_timer_add`](bpy.types.WindowManager.html#bpy.types.WindowManager.event_timer_add "bpy.types.WindowManager.event_timer_add") | - [`WindowManager.event_timer_remove`](bpy.types.WindowManager.html#bpy.types.WindowManager.event_timer_remove "bpy.types.WindowManager.event_timer_remove") |
user: Explain Platform Builds in complete detail according to the official Blender documentation.

assistant: Wheels can severely impact the size of an extension. To mitigate this, it is possible to build different
extension zip files for each unique required platform.

For this you need to use the `--split-platforms` option from the
[build](../command_line/extension_arguments.xhtml#command-line-args-extension-build) command.

```
blender --command extension build --split-platforms
```

### Example

Manifest file excerpt:

```
id = "my_addon_with_wheels"
version = "1.0.0"

platforms = ["windows-x64", "macos-x64"]
wheels = [
   "./wheels/pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl",
   "./wheels/pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl",
   "./wheels/pillow-10.3.0-cp311-cp311-win_amd64.whl",
]
```

Generated files from `--split-platforms`:

- my_addon_with_wheels-1.0.0-windows_x64.zip
- my_addon_with_wheels-1.0.0-macos_x64.zip
user: Explain Introduction in complete detail according to the official Blender documentation.

assistant: # Introduction

Vertex Painting is a simple way of painting color onto a Grease Pencil object,
by directly manipulating the color of points/vertices, rather than use only the materials base color.

[image reference removed]

Stroke with original base material color (left) and with vertex painting (right).

When a point is painted, the color of the points is mixing with the base material color according to
the settings of the brush.
user: Describe Edge Detection from the Blender manual or Python API, including usage steps and snippets.

assistant: Crease Angle
:   If two adjacent faces form an angle less than the defined *Crease Angle*,
    the edge between them will be rendered when using *Crease* edge type selection in a line set.
    The value also affects *Silhouette* edge type selection.

Culling
:   Ignore the edges that are out of view.
    (Saves some processing time and memory, but may reduce the quality of the result in some cases.)

Face Smoothness
:   Takes *Smooth Shading* into account for edges calculation.

Sphere Radius
:   Affects the calculation of curvatures for *Ridge*, *Valley*
    and *Suggestive Contour* edge type selection in a line set.
    The curvature at each vertex is computed by averaging the shape
    of the surface within the specified radius.
    Increasing the value reduces noise and detail.

Kr Derivative Epsilon
:   Controls the threshold on the minimum rate of change of curvature used to filter the output
    of the *Suggestive Contour* edge type selection. Increasing the value reduces the amount of
    rendered lines, starting from smoother areas of the object (further information in
    [this PDF](https://archive.blender.org/wiki/2015/index.php/File:Manual-2.6-Render-Freestyle-PrincetownLinestyle.pdf)).
user: How do I use Pose in Blender? Include parameters, examples, warnings and best practices.

assistant: Pose Position
:   A radio button to switch between Pose Position and Rest Position.

    In *Edit Mode*, you always see armatures in their rest position,
    in *Object Mode* and *Pose Mode*, by default, you see them in *Pose Position*
    (i.e. as it was transformed in the *Pose Mode*).
    If you want to see it in the rest position in all modes, select *Rest Position*.
user: Provide the full official documentation entry for Smooth Geometry Node, preserving all code examples.

assistant: # Smooth Geometry Node

[image reference removed]

The *Smooth Geometry* node smooths connected parts of a geometry by averaging the positions
of neighboring elements. It can be used to reduce surface irregularities or create a
softened, more organic appearance without significantly altering the overall shape.