PGCRYPT/OpenBlender_Train huggingface dataset:
user: Describe GeometryNodeSetSplineCyclic(GeometryNode) from the Blender manual or Python API, including usage steps and snippets.

assistant: # GeometryNodeSetSplineCyclic(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.GeometryNodeSetSplineCyclic(*GeometryNode*)
:   Control whether each spline loops back on itself by changing the “cyclic” attribute

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

assistant: Auto-Velocity Emitter
:   Recalculate velocities of particles according to their edited paths.
    Otherwise, the original velocities values remains unchanged
    regardless of the actual distance that the particles moves.

Mirror X
:   Enable mirror editing across the local X axis.

Preserve
:   Strand Length
    :   Keep the length of the segments between the keypoints when combing or smoothing the hair.
        This is done by moving all the other keypoints.

    Root Positions
    :   Keep first key unmodified, so you cannot transplant hair.

### Cut Particles to Shape

Shape Object
:   A mesh object which boundary is used by the *Shape Cut* tool.

Cut
:   This grooming tool trims hairs to a shape defined by the *Shape Object*.
    This is a quicker way of avoiding protruding hair sections from lengthening than using the Cutting tool.
    It works especially well for characters with extensive fur,
    where working in a single plane with the Cutting tool becomes tedious.

Shape Cut example.

|  |  |
| --- | --- |
| ../../_images/physics_particles_mode_shapecut-before.png   Before. | ../../_images/physics_particles_mode_shapecut-after.png   After. |

### Viewport Display

Path Steps
:   The number of steps used to draw the path; improves the smoothness of the particle path.

Children Hair
:   Displays the children of the particles too.
    This allows to fine-tune the particles and see their effects on the result,
    but it may slow down your system if you have many children.

Particles Emitter
:   Displays the actual particles on top of the paths.

Fade Time
:   Fade out paths and keys further away from current time.

    Frames
    :   How many frames to fade.
user: How do I use References in Blender? Include parameters, examples, warnings and best practices.

assistant: |  |  |
| --- | --- |
| - [`Palette.colors`](bpy.types.Palette.html#bpy.types.Palette.colors "bpy.types.Palette.colors") - [`PaletteColors.active`](bpy.types.PaletteColors.html#bpy.types.PaletteColors.active "bpy.types.PaletteColors.active") | - [`PaletteColors.new`](bpy.types.PaletteColors.html#bpy.types.PaletteColors.new "bpy.types.PaletteColors.new") - [`PaletteColors.remove`](bpy.types.PaletteColors.html#bpy.types.PaletteColors.remove "bpy.types.PaletteColors.remove") |
user: Provide the full official documentation entry for Introduction, preserving all code examples.

assistant: # Introduction

The Texture Node Editor allows creating custom textures by combining colors,
procedural patterns, and images in various ways. This is a step up from the
[built-in textures](../../render/materials/legacy_textures/introduction.html),
where you can select a type from a list and not much more.

[[image reference removed]](../../_images/editors_texture-node_introduction_types-combined.png)

Combined textures based on nodes.
user: Give a detailed overview of Introduction: syntax, arguments, return values, common patterns.

assistant: # Introduction

An armature in Blender can be thought of as similar to the armature of a real skeleton,
and just like a real skeleton an armature can consist of many bones.
These bones can be moved around and anything that they are attached to or
associated with will move and deform in a similar way.

An “armature” is a type of object used for rigging.
A rig is the controls and strings that move a marionette (puppet).
Armature object borrows many ideas from real-world skeletons.
user: What is ShaderFxRim(ShaderFx) and how is it used in Blender Python scripting?

assistant: # ShaderFxRim(ShaderFx)

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

*class* bpy.types.ShaderFxRim(*ShaderFx*)
:   Rim effect

    blur
    :   Number of pixels for blurring rim (set to 0 to disable)

        Type:
        :   int array of 2 items in [0, 32767], default (0, 0)

    mask_color
    :   Color that must be kept

        Type:
        :   [`mathutils.Color`](mathutils.html#mathutils.Color "mathutils.Color") of 3 items in [0, 1], default (0.0, 0.0, 0.0)

    mode
    :   Blend mode

        Type:
        :   enum in [`'NORMAL'`, `'OVERLAY'`, `'ADD'`, `'SUBTRACT'`, `'MULTIPLY'`, `'DIVIDE'`], default `'NORMAL'`

    offset
    :   Offset of the rim

        Type:
        :   int array of 2 items in [-32768, 32767], default (0, 0)

    rim_color
    :   Color used for Rim

        Type:
        :   [`mathutils.Color`](mathutils.html#mathutils.Color "mathutils.Color") of 3 items in [0, 1], default (0.0, 0.0, 0.0)

    samples
    :   Number of Blur Samples (zero, disable blur)

        Type:
        :   int in [0, 32], default 4

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Give a detailed overview of Show/Hide: syntax, arguments, return values, common patterns.

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

See [Show/Hide](../../../scene_layout/object/editing/show_hide.xhtml#object-show-hide) in *Object Mode*.
See also the [Curve Display](../curve_display.xhtml) panel.
user: Provide the full official documentation entry for Preference Section Items, preserving all code examples.

assistant: # Preference Section Items

INTERFACE:
:   Interface.

VIEWPORT:
:   Viewport.

LIGHTS:
:   Lights.

EDITING:
:   Editing.

ANIMATION:
:   Animation.

---

EXTENSIONS:
:   Get Extensions.

    Browse, install and manage extensions from remote and local repositories.

---

ADDONS:
:   Add-ons.

    Manage add-ons installed via Extensions.

THEMES:
:   Themes.

    Edit and save themes installed via Extensions.

---

INPUT:
:   Input.

NAVIGATION:
:   Navigation.

KEYMAP:
:   Keymap.

---

SYSTEM:
:   System.

SAVE_LOAD:
:   Save & Load.

FILE_PATHS:
:   File Paths.

---

DEVELOPER_TOOLS:
:   Developer Tools.

EXPERIMENTAL:
:   Experimental.
user: What is Switch Direction and how is it used in Blender Python scripting?

assistant: The *Switch Direction* operator reverses the direction of a selected curve.
The start point of the curve becomes the end point, and vice versa.
This operation does not change the visual appearance of the curve,
but affects its behavior when used as a path or with options like beveling and tapering.
user: Explain SDF Grid Boolean Node in complete detail according to the official Blender documentation.

assistant: # SDF Grid Boolean Node

[image reference removed]

The *SDF Grid Boolean* node performs boolean operations between two or more
**Signed Distance Field (SDF)** grids.
This allows combining, subtracting, or intersecting volumetric shapes directly
in grid space, similar to mesh boolean operations but with smooth and continuous results.

The node computes the resulting signed distance field by applying mathematical
operations to the input grids, preserving the SDF property where each voxel
stores the shortest distance to the nearest surface.
This makes it useful for blending or sculpting complex volumes procedurally.
user: Describe Typical Scenarios for using Soft Bodies from the Blender manual or Python API, including usage steps and snippets.

assistant: [image reference removed]

The wind cone is a soft body, as the suspension.

[Animation](https://vimeo.com/1865817)

Soft bodies are well suited for:

- Jiggle on moving characters.
- Elastic and deformable objects made of materials like rubber or gelatin.
- Tree branches moving in the wind, swinging ropes, and the like.
- Flags, wide sleeves, cushions or other simple fabric reacting to forces.
user: Describe Working With Actions from the Blender manual or Python API, including usage steps and snippets.

assistant: When you first animate an object (or other data-block) in Blender, Blender tries
to automatically find an appropriate action for it, or if it can’t find an
appropriate action then it will create one. After an action has been assigned,
it also creates and assigns a new slot for the data-block.

Blender uses heuristics to try to find an appropriate action, based on the
idea that animation of closely related data-blocks should typically go in the
same action. For example, an object and its data are considered closely related,
so if a camera object is already animated and you insert keys for its
[focal length](../glossary/index.html#term-Focal-Length) (which lives on the camera data, *not* the
camera object), the action that’s assigned to the object will be reused for the
camera data as well. These relationships go both ways, so the action will also
be reused when keying the camera object if the camera data is already animated.

Some examples of other data-blocks that are considered closely related for this
purpose are: materials and their embedded node trees, worlds and their embedded
node trees, and meshes and their shape key data.

### Manually Assigning Actions and Slots

In addition to letting Blender automatically choose an action and slot for a
data-block, you can also manually assign them. This can be used to assign
existing animation to a data-block by selecting both the action and slot. It can
also be used to specify an action for a data-block’s keys to go into, by
assigning the action but leaving the slot blank, in which case a new slot will
be created when the first key is set.

For each data-block in the properties editor there is an Animation panel with
action and slot selectors. You can use these to assign actions and slots to a
data-block.

[image reference removed]

The action and slot selector for Camera data in the
[Properties Editor](../editors/properties_editor.html).

For the active object you can also assign its action and slot in the action
Editor’s header.

[image reference removed]

The action and slot selector for the active object (in this case a camera object) in the
[Action Editor](../editors/dope_sheet/modes/action.html).

When you select an action to animate a data-block, for convenience Blender
attempts to automatically select an appropriate slot for you based on name and
associated type. If no appropriate slot is found then the slot selector will
remain empty, in which case you can manually select an existing slot, create a
new one, or just start keying and let Blender automatically create a new slot
for you. If Blender assigns a slot you didn’t want, you can select another slot
manually or simply clear the slot selection.

### NLA

Actions can also be assigned to NLA strips within a data-block’s NLA system.
Please see the documentation for the [NLA Editor](../editors/nla/introduction.html)
for how to animate data-blocks via the NLA system.
user: Explain XrActionMaps(bpy_struct) in complete detail according to the official Blender documentation.

assistant: # XrActionMaps(bpy_struct)

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

*class* bpy.types.XrActionMaps(*bpy_struct*)
:   Collection of XR action maps

    *classmethod* new(*xr_session_state*, *name*, *replace_existing*)
    :   new

        Parameters:
        :   - **xr_session_state** ([`XrSessionState`](bpy.types.XrSessionState.html#bpy.types.XrSessionState "bpy.types.XrSessionState"), (never None)) – XR Session State
            - **name** (*string**,* *(**never None**)*) – Name
            - **replace_existing** (*boolean*) – Replace Existing, Replace any existing actionmap with the same name

        Returns:
        :   Action Map, Added action map

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

    *classmethod* new_from_actionmap(*xr_session_state*, *actionmap*)
    :   new_from_actionmap

        Parameters:
        :   - **xr_session_state** ([`XrSessionState`](bpy.types.XrSessionState.html#bpy.types.XrSessionState "bpy.types.XrSessionState"), (never None)) – XR Session State
            - **actionmap** ([`XrActionMap`](bpy.types.XrActionMap.html#bpy.types.XrActionMap "bpy.types.XrActionMap"), (never None)) – Action Map, Action map to use as a reference

        Returns:
        :   Action Map, Added action map

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

    *classmethod* remove(*xr_session_state*, *actionmap*)
    :   remove

        Parameters:
        :   - **xr_session_state** ([`XrSessionState`](bpy.types.XrSessionState.html#bpy.types.XrSessionState "bpy.types.XrSessionState"), (never None)) – XR Session State
            - **actionmap** ([`XrActionMap`](bpy.types.XrActionMap.html#bpy.types.XrActionMap "bpy.types.XrActionMap"), (never None)) – Action Map, Removed action map

    *classmethod* find(*xr_session_state*, *name*)
    :   find

        Parameters:
        :   - **xr_session_state** ([`XrSessionState`](bpy.types.XrSessionState.html#bpy.types.XrSessionState "bpy.types.XrSessionState"), (never None)) – XR Session State
            - **name** (*string**,* *(**never None**)*) – Name

        Returns:
        :   Action Map, The action map with the given name

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

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

assistant: Each object has its own motion blur settings along with
the [Scene Level Motion Blur](../render_settings/motion_blur.xhtml).
These settings can be found in the Object Properties tab of the Properties.

Steps
:   Controls accuracy of deformation motion blur, more steps uses more memory.
    The actual number of time steps is \(2^{steps -1}\).

Deformation
:   Enables motion blur for deformed meshes such as animated characters, including hair.
user: Describe Asset Shelf Region from the Blender manual or Python API, including usage steps and snippets.

assistant: Depending on the current mode, the asset shelf may be available, providing quick access to assets
for this specific mode (for example brush assets in *Paint* mode).

See [Asset Shelf](../../interface/window_system/regions.xhtml#ui-region-asset-shelf) for more information.
user: Explain CacheObjectPath(bpy_struct) in complete detail according to the official Blender documentation.

assistant: # CacheObjectPath(bpy_struct)

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

*class* bpy.types.CacheObjectPath(*bpy_struct*)
:   Path of an object inside of an Alembic archive

    path
    :   Object path

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

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Describe BlendDataMeshes(bpy_struct) from the Blender manual or Python API, including usage steps and snippets.

assistant: # BlendDataMeshes(bpy_struct)

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

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

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

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

        Returns:
        :   New mesh data-block

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

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

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

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

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

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

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

    tag(*value*)
    :   tag

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

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: An important concept to understand when building node setups is
that of the *shader socket*. The output of all surface and
volume shaders is a shader, describing lighting interaction at the surface or of the volume,
rather than the color of the surface.

There are a few types of shaders available as nodes:

BSDF shader
:   Describe light reflection, refraction and absorption at an object surface.

Emission shader
:   Describe light emission at an object surface or in a volume.

Volume shader
:   Describe light scattering inside a volume.

Background shader
:   Describe light emission from the environment.

Each shader node has a color input, and outputs a shader.
These can then be mixed and added together using Mix and Add Shader nodes.
No other operations are permitted.
The resulting output can then be used by the renderer to compute all light interactions,
for direct lighting or global illumination.
user: How do I use NodeSocketVectorDirection4D(NodeSocketStandard) in Blender? Include parameters, examples, warnings and best practices.

assistant: # NodeSocketVectorDirection4D(NodeSocketStandard)

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

*class* bpy.types.NodeSocketVectorDirection4D(*NodeSocketStandard*)
:   3D vector socket of a node

    default_value
    :   Input value used for unconnected socket

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

    links
    :   List of node links from or to this socket.

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

        (readonly)

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: ### 2D Cursor

The 2D Cursor is the dashed crosshair in the main region. It can be used as a
transformation [pivot point](../3dview/controls/pivot_point/index.html)
by selecting the corresponding option in the editor’s header.

Note that the 2D Cursor is only available in Mask mode, not in Tracking mode.

Location X, Y
:   The relative location of the 2D Cursor, going from (0, 0) for the bottom left
    corner to (1, 1) for the top right corner.

    You can also position the 2D Cursor by clicking `Shift`-`RMB`
    in (or around) the video.

### Annotations

See [Annotations](../../interface/annotate_tool.html).
user: Explain Bake Items in complete detail according to the official Blender documentation.

assistant: The *Bake Items* panel is used to manage the input sockets
of the node thus also managing what data is baked.

Bake Items List
:   Used to manage the inputs and outputs of the bake node.
    Items can be added, removed, renamed, and sorted.

Socket Type
:   The data ([Sockets](../../../../interface/controls/nodes/parts.xhtml#bpy-types-nodelink)) of the input/output.

Attribute Domain
:   The [attribute domain](../../attributes_reference.xhtml#attribute-domains) used to evaluate the input field on.

Is Attribute
:   Bake item is an attribute stored on a geometry.
user: Show practical ways to work with Collections in a Blender add-on or script – include code.

assistant: While the *scene collection* contains all the Scene’s objects,
the user can also make their own collections to better organize these objects.

It works like a Venn diagram, where all the objects are part of the *scene collection*,
but can also be part of multiple collections.

[image reference removed]

Venn diagram.

The result is a clear and flexible way to arrange objects together on the Scene level.

[image reference removed]

Scene organization.
user: Describe Image Buffer Types (imbuf.types) from the Blender manual or Python API, including usage steps and snippets.

assistant: # Image Buffer Types (imbuf.types)

This module provides access to image buffer types.

*class* imbuf.types.ImBuf
:   copy()
    :   Returns:
        :   A copy of the image.

        Return type:
        :   `ImBuf`

    crop(*min*, *max*)
    :   Crop the image.

        Parameters:
        :   - **min** (*tuple**[**int**,* *int**]*) – X, Y minimum.
            - **max** (*tuple**[**int**,* *int**]*) – X, Y maximum.

    free()
    :   Clear image data immediately (causing an error on re-use).

    resize(*size*, *\**, *method='FAST'*)
    :   Resize the image.

        Parameters:
        :   - **size** (*tuple**[**int**,* *int**]*) – New size.
            - **method** (*str*) – Method of resizing (‘FAST’, ‘BILINEAR’)

    channels
    :   Number of bit-planes.

        Type:
        :   int

    filepath
    :   filepath associated with this image.

        Type:
        :   str

    planes
    :   Number of bits associated with this image.

        Type:
        :   int

    ppm
    :   pixels per meter.

        Type:
        :   tuple[float, float]

    size
    :   size of the image in pixels.

        Type:
        :   tuple[int, int]
user: Show practical ways to work with Transformation Constraint in a Blender add-on or script – include code.

assistant: # Transformation Constraint

This constraint is more complex and versatile than the other “transform” constraints.
It lets you set the location, rotation or scale of an object/bone based on the
location, rotation or scale of another, mixing and matching axes as you see fit.
An example could be to set a gear’s X rotation based on the Y coordinate of
a rail next to it.

The constraint works with input and output value ranges, one for each axis.
It first clamps the input value to the *Map From* range, then offsets and scales it
to the corresponding *Map To* range. This lets you, say, map a Y coordinate
in the range (-3m, 3m) to an X rotation in the range (0, 180°).
user: Give a detailed overview of References: syntax, arguments, return values, common patterns.

assistant: |  |  |
| --- | --- |
| - [`BlendData.shape_keys`](bpy.types.BlendData.html#bpy.types.BlendData.shape_keys "bpy.types.BlendData.shape_keys") - [`Curve.shape_keys`](bpy.types.Curve.html#bpy.types.Curve.shape_keys "bpy.types.Curve.shape_keys") | - [`Lattice.shape_keys`](bpy.types.Lattice.html#bpy.types.Lattice.shape_keys "bpy.types.Lattice.shape_keys") - [`Mesh.shape_keys`](bpy.types.Mesh.html#bpy.types.Mesh.shape_keys "bpy.types.Mesh.shape_keys") |
user: Provide the full official documentation entry for NodeEvaluateClosureOutputItem(bpy_struct), preserving all code examples.

assistant: # NodeEvaluateClosureOutputItem(bpy_struct)

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

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

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

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

    socket_type
    :   Type:
        :   enum in [Node Socket Data Type Items](bpy_types_enum_items/node_socket_data_type_items.html#rna-enum-node-socket-data-type-items), default `'FLOAT'`

    structure_type
    :   What kind of higher order types are expected to flow through this socket

        Type:
        :   enum in [Node Socket Structure Type Items](bpy_types_enum_items/node_socket_structure_type_items.html#rna-enum-node-socket-structure-type-items), default `'AUTO'`

    *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 File Browser, preserving all code examples.

assistant: Show Locations – Recent
:   Hide the *Recent* panel of the [File Browser](../file_browser.xhtml)
    which displays recently accessed folders.

Show Locations – System
:   Hide System Bookmarks in the *File Browser*.

Defaults – Filter Files
:   By activating this, the file region in the File Browser will only show appropriate files
    (i.e. blend-files when loading a complete Blender setting).
    The selection of file types may be changed in the file region.

Defaults – Show Hidden Files/Data-Blocks
:   Unhide files and data-blocks with names that start with `.` in File Browsers
    and [data IDs](../../interface/controls/templates/data_block.xhtml#ui-data-block).
user: Show practical ways to work with Options in a Blender add-on or script – include code.

assistant: [image reference removed]

Child Of constraint.

[Target](../interface/common.html#rigging-constraints-interface-common-target)
:   The parent object or bone.

Location
:   The location axes of the child to affect.

Rotation
:   The rotation axes of the child to affect.

Scale
:   The scale axes of the child to affect.

Set Inverse
:   If the child’s transform is correct with the constraint disabled but incorrect with the
    constraint enabled, click this button to fix it.

Clear Inverse
:   Tells the constraint that the child’s current transform with the constraint disabled is its
    correct *relative* transform. Once the constraint is enabled again, this transform will be
    applied as an offset to the parent to determine the child’s final transform.

[Influence](../interface/common.html#bpy-types-constraint-influence)
:   How strongly the constraint affects the owner.
user: Describe Working Space from the Blender manual or Python API, including usage steps and snippets.

assistant: File
:   Color space used for all scene linear colors in this file, and for shader, compositing and geometry
    nodes processing. The default is Linear Rec.709, while Linear Rec.2020 and ACEScg are available for
    working with a wider gamut of colors and compatibility with ACES workflows.

    The working space affects the colors of all data-blocks in a file, and has a significant effect on
    rendering and compositing results. Generally the working space should be chosen at the start of a
    project and used for all blend files.

    Blender can convert between different working spaces, however this is only an approximation and
    manual fix-ups are typically needed. When linking and appending data-blocks, colors are
    automatically converted to match the current file.

Sequencer
:   The color space that the [Sequencer](../../editors/video_sequencer/index.html) operates in.
    By default, the Sequencer operates in sRGB space,
    but it can also be set to work in Linear space like the Compositing nodes, or another color space.
    Different color spaces will give different results for color correction, crossfades, and other operations.

    The default supported color spaces are described in
    [Built-in Color Spaces](#ocio-config-default-color-spaces).
user: Give a detailed overview of Grid Fill: syntax, arguments, return values, common patterns.

assistant: # Grid Fill

*Grid Fill* fills a selected region with a quad grid, using either edge loops or selected faces
as input to determine the boundary.

It supports two main use cases:

- **Edge Loops**: A pair of open edge loops, or a single closed edge loop.
- **Selected Faces**: A connected selection of faces with a clear outer boundary.

The operator attempts to fit a grid of quads within the defined boundary using a predictable and structured pattern.

Span
:   Specifies the number of columns in the grid.

Offset
:   Defines the vertex that is considered to be the corner of the grid.
    By default, this is the active vertex. Use this to rotate the grid layout.

Simple Blending
:   Use a simpler interpolation algorithm for generating grid geometry from boundary loops.
    This method is better suited for flat surfaces or cases where preserving curvature gives undesirable results.

|  |  |
| --- | --- |
| <../../../../_images/modeling_meshes_editing_face_grid-fill_before.png>   Input. | <../../../../_images/modeling_meshes_editing_face_grid-fill_after.png>   Grid Fill result. |
user: Explain Creating a Dynamic Extensions Repository in complete detail according to the official Blender documentation.

assistant: # Creating a Dynamic Extensions Repository

A dynamic repository allows you to serve a smaller JSON file with only the latest version
of the extensions which are compatible with the query parameters.
This is only relevant for repositories which contain multiple version of multiple extensions.

For small or personal repositories it is simpler and recommended to use
[static repositories](static_repository.html) instead.
user: How do I use References in Blender? Include parameters, examples, warnings and best practices.

assistant: |  |  |
| --- | --- |
| - [`bpy.context.brush`](bpy.context.html#bpy.context.brush "bpy.context.brush") - [`BlendData.brushes`](bpy.types.BlendData.html#bpy.types.BlendData.brushes "bpy.types.BlendData.brushes") - [`BlendDataBrushes.create_gpencil_data`](bpy.types.BlendDataBrushes.html#bpy.types.BlendDataBrushes.create_gpencil_data "bpy.types.BlendDataBrushes.create_gpencil_data") - [`BlendDataBrushes.new`](bpy.types.BlendDataBrushes.html#bpy.types.BlendDataBrushes.new "bpy.types.BlendDataBrushes.new") | - [`BlendDataBrushes.remove`](bpy.types.BlendDataBrushes.html#bpy.types.BlendDataBrushes.remove "bpy.types.BlendDataBrushes.remove") - [`Paint.brush`](bpy.types.Paint.html#bpy.types.Paint.brush "bpy.types.Paint.brush") - [`Paint.eraser_brush`](bpy.types.Paint.html#bpy.types.Paint.eraser_brush "bpy.types.Paint.eraser_brush") |
user: How do I use GeometryNodeAccumulateField(GeometryNode) in Blender? Include parameters, examples, warnings and best practices.

assistant: # GeometryNodeAccumulateField(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.GeometryNodeAccumulateField(*GeometryNode*)
:   Add the values of an evaluated field together and output the running total for each element

    data_type
    :   Type of data that is accumulated

        - `FLOAT`
          Float – Add floating point values.
        - `INT`
          Integer – Add integer values.
        - `FLOAT_VECTOR`
          Vector – Add 3D vector values.
        - `TRANSFORM`
          Transform – Multiply transformation matrices.

        Type:
        :   enum in [`'FLOAT'`, `'INT'`, `'FLOAT_VECTOR'`, `'TRANSFORM'`], default `'FLOAT'`

    domain
    :   Type:
        :   enum in [Attribute Domain Items](bpy_types_enum_items/attribute_domain_items.html#rna-enum-attribute-domain-items), default `'POINT'`

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: # FreestyleModuleSettings(bpy_struct)

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

*class* bpy.types.FreestyleModuleSettings(*bpy_struct*)
:   Style module configuration for specifying a style module

    script
    :   Python script to define a style module

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

    use
    :   Enable or disable this style module during stroke rendering

        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 Masks in a Blender add-on or script – include code.

assistant: [image reference removed]

Masks panel.

In Grease Pencil there are no special mask layers, any layer can act as a mask for other layers.
The mask system is flexible enough to allow top-bottom and bottom-top masking.

Layers used as masks can use all the blend modes and different opacity values like any other layer.

The layer/s that will act as mask of the current layer could be added
to the Mask [list view](../../interface/controls/templates/list_view.html#ui-list-view).

In the Masks list next to the layers name there are two icons buttons that control
common properties of the layer mask:

Invert (mask icon)
:   Inverts the mask.

Viewport/Render Visibility (eye icon)
:   Toggle layer visibility in the viewport and in render.

Mask (green circle) samples.

|  |  |  |
| --- | --- | --- |
| <../../_images/grease-pencil_properties_masks_example-01.png>   Original image (Blend: Regular, Opacity: 1). | <../../_images/grease-pencil_properties_masks_example-02.png>   Blend: Hard Light, Opacity: 1. | <../../_images/grease-pencil_properties_masks_example-03.png>   Blend: Regular, Opacity: 1. |
user: Show practical ways to work with TransformCacheConstraint(Constraint) in a Blender add-on or script – include code.

assistant: # TransformCacheConstraint(Constraint)

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

*class* bpy.types.TransformCacheConstraint(*Constraint*)
:   Look up transformation from an external file

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

    object_path
    :   Path to the object in the Alembic archive used to lookup the transform matrix

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

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: # CompositorNodePixelate(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.CompositorNodePixelate(*CompositorNode*)
:   Reduce detail in an image by making individual pixels more prominent, for a blocky or mosaic-like appearance

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

    update()

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: These filters are available in the funnel dropdown button in the header.

Summary
:   Toggles the “Summary” row at the top of the Channels region.
    This row shows the union of all keyframes across all channels.

Only Show Selected
:   Only show keyframes belonging to objects/bones/… that are selected.

Show Hidden
:   Show keyframes from objects/bones/… that are hidden.

Only Show Errors
:   Only show channels that have errors (for example, because they try to animate a property that doesn’t
    exist on the object).

Search
:   Filters the channel list by a search term (or multiple search terms if *Multi-Word Match Search*
    is enabled).

Filtering Collection
:   Select a collection to only show keyframes from objects in that collection.

Filter by Type
:   Filter curves by property type.

Sort Data-Blocks
:   Sorts data-blocks alphabetically to make them easier to find.

    If your playback speed suffers because of this
    (should only really be an issue when working with lots of objects),
    you can turn it off.
user: Explain Inputs in complete detail according to the official Blender documentation.

assistant: ID Value
:   Input for the *Object Index* or *Material Index* render pass.
    Once a pass is enabled, it can be accessed through the *IndexOB* or *IndexMA* slot of the
    [Render Layers Node](../input/scene/render_layers.html).

Index
:   The index for which to create a mask. This index can be configured for objects at
    Properties ‣ Object ‣ Relations ‣ Pass Index,
    and for materials at Properties ‣ Material ‣ Settings ‣ Pass Index.

    [image reference removed]

    Object Pass Index.

[Anti-Aliasing](../../../glossary/index.html#term-Anti-Aliasing)
:   Whether to smooth the mask edges.
user: Describe Inputs from the Blender manual or Python API, including usage steps and snippets.

assistant: Color
:   Color of the surface, or physically speaking, the probability that light is reflected for each wavelength.

Scale
:   Global scale factor for the scattering radius.

Radius
:   Average distance that light scatters below the surface.
    Higher radius gives a softer appearance, as light bleeds into shadows and through the object.
    The scattering distance is specified separately for the RGB channels,
    to render materials such as skin where red light scatters deeper.
    The X, Y and Z values are mapped to the R, G and B values, respectively.

IOR Cycles Only
:   Index of refraction for *Subsurface Scattering*.

Anisotropy Cycles Only
:   Directionality of subsurface scattering. Higher anisotropy scatters deeper into the object.

Roughness Cycles Only
:   Roughness of the glossy surface surrounding the subsurface volume.

Normal
:   Normal used for shading; if nothing is connected the default shading normal is used.
user: Show practical ways to work with Set Grid Transform Node in a Blender add-on or script – include code.

assistant: # Set Grid Transform Node

[image reference removed]

The *Set Grid Transform* node defines the spatial transform of a voxel grid,
converting its index space (voxel coordinates) into object space.

By default, voxel grids use a transform that maps integer voxel indices
directly to object space coordinates. This node allows specifying a custom
transform, enabling operations such as repositioning, rotating, or scaling
a grid relative to an object or scene.