PGCRYPT/OpenBlender_Train huggingface dataset:
user: Explain Cloth Modifier in complete detail according to the official Blender documentation.

assistant: # Cloth Modifier

The Cloth modifier is a container for a [Cloth Physics](../../../physics/cloth/index.xhtml) simulation. It can be useful
for example, to simulate on a low-poly mesh then add a [Subdivision Surface Modifier](../generate/subdivision_surface.xhtml)
after the Cloth modifier to improve the visual quality of the cloth without drastically increasing simulation times.
user: Show practical ways to work with Blend from Shape in a Blender add-on or script – include code.

assistant: # Blend from Shape

The *Blend from Shape* operator blends the current mesh towards the vertex positions
stored in a [Shape Key](../../../../animation/shape_keys/index.html).
This allows you to reuse existing shape keys to partially or fully reshape geometry in *Edit Mode*.

This is useful for:

- Correcting or refining geometry by borrowing deformations from a shape key.
- Copying specific shape features into a mesh while editing.
- Mixing shapes interactively without leaving Edit Mode.
user: Explain CompositorNodePosterize(CompositorNode) in complete detail according to the official Blender documentation.

assistant: # CompositorNodePosterize(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.CompositorNodePosterize(*CompositorNode*)
:   Reduce number of colors in an image, converting smooth gradients into sharp transitions

    *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: Provide the full official documentation entry for Bpy.Types.Movietrackingstabilization, preserving all code examples.

assistant: rget_rotation MovieTrackingStabilization.target_scale MovieTrackingStabilization.tracks MovieTrackingStabilization.use_2d_stabilization MovieTrackingStabilization.use_autoscale MovieTrackingStabilization.use_stabilize_rotation MovieTrackingStabilization.use_stabilize_scale MovieTrackingStabilization.bl_rna_get_subclass() MovieTrackingStabilization.bl_rna_get_subclass_py() Inherited Properties Inherited Functions References
user: How do I use Inputs in Blender? Include parameters, examples, warnings and best practices.

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

Roughness
:   Sharpness of the reflection; perfectly sharp at 0.0 and smoother with higher values.

Anisotropy Cycles Only
:   Controls the amount the reflection stretches the reflection along the surface of the material.
    A value of 0.0 results in no anisotropic reflections.
    Higher values give elongated highlights orthogonal to the tangent direction;
    negative values give highlights shaped along the tangent direction.

    This is a phenomenon know as “Anisotropic Reflections” which is often seen in metallic materials.

Rotation
:   Rotation of the anisotropic tangent direction.
    Value 0.0 equals 0° rotation, 0.25 equals 90° and 1.0 equals 360° = 0°.
    This can be used to texture the tangent direction.

    |  |  |
    | --- | --- |
    | ../../../_images/render_shader-nodes_shader_anisotropic_rot0.jpg   Anisotropic rotation on 0. | ../../../_images/render_shader-nodes_shader_anisotropic_rot025.jpg   Anisotropic rotation on 0.25 (90°). |

Normal
:   Normal used for shading; if nothing is connected the default shading normal is used.

Tangent
:   Tangent used for shading; if nothing is connected the default shading tangent is used.
user: How do I use Introduction in Blender? Include parameters, examples, warnings and best practices.

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: Give a detailed overview of Subdivision: syntax, arguments, return values, common patterns.

assistant: # Subdivision

These settings are used to control [Adaptive Subdivision](../../../modeling/modifiers/generate/subdivision_surface.html#modifiers-generate-subsurf-adaptive-subdivision).

Dicing Rate Render, Viewport
:   Multiplier for the size of [Micropolygons](../../../glossary/index.html#term-Micropolygons) for the final/viewport render.

Offscreen Scale
:   Multiplier for dicing rate of geometry outside of the camera view.
    The dicing rate of objects is gradually increased the further they are outside the camera view.
    Lower values provide higher quality reflections and shadows for off screen objects,
    while higher values use less memory.

Max Subdivisions
:   Stop subdividing when this level is reached even if the dicing rate would produce finer [Tessellation](../../../glossary/index.html#term-Tessellation).

Dicing Camera
:   Camera to use as reference point when subdividing geometry,
    useful to avoid crawling artifacts in animations when the scene camera is moving.
user: Explain Channels in complete detail according to the official Blender documentation.

assistant: # Channels

A channel is a horizontal track that’s similar to a layer in an image editing program:
higher channels are displayed in front of lower ones.

Within each channel, you can create one or more
[strips](../../../video_editing/edit/montage/strips/introduction.html), which contain either
a segment of video content (a rendered scene, an external video file…)
or an [effect](../../../video_editing/edit/montage/strips/effects/index.html)
(color blending, blurring…). The X axis represents time, so the further a strip
is placed to the right, the later it will play in the final video.

While a channel can contain multiple strips, they can’t overlap each other.
If you want two strips to play at the same time, you need to place them in different channels.
user: Give a detailed overview of Spline Length Node: syntax, arguments, return values, common patterns.

assistant: # Spline Length Node

[image reference removed]

The *Spline Length* node outputs the total length of each spline, as a distance, or a number of points.
This is different than the [Curve Length](curve_length.xhtml) node,
which adds up the total length for all of the curve’s splines.

The output values correspond to the spline domain, but the node can be used to output a value for every
curve control point as well.
user: Show practical ways to work with Troubleshoot an Override Hierarchy in a Blender add-on or script – include code.

assistant: These operations are only available from the Outliner contextual menu. They can help fixing a broken
override hierarchy.

### Resync

The hierarchy of the linked data (the relationships between linked data-blocks) can change.
Overrides need to be resynced to match the new hierarchy. This operator will resync the override
to match the new hierarchy in the library.

### Resync Enforce

In some cases, especially with older blend-files that were saved with ‘broken’ (non-hierarchy-matching) overrides,
a regular resync itself cannot rebuild properly the override as expected (e.g. some objects might go missing).
To solve this issue, this operator rebuilds the local override from its linked reference,
as well as its hierarchy of dependencies, enforcing that hierarchy to match the linked data
(i.e. ignoring existing overrides on data-blocks properties).
This is similar to a regular resync, but is more forceful, aggressive,
at the cost of a potential loss of some overrides on ID pointers properties.

### Delete

Remove the whole library override hierarchy, and replace all of these override data-blocks by
their original linked data-blocks. This fully reverts the *Make* operation.
user: How do I use Selecting Bones in Blender? Include parameters, examples, warnings and best practices.

assistant: By clicking on a bone’s body, you will select it
(and hence you will implicitly select its root and tip).

Using `Shift`-click, you can add to/remove from the selection.

You also have some *advanced selection* options, based on their relations.

Pick Shortest Path `Ctrl`-click
:   Selects the path from the active bone to the bone under the mouse.

### Deselecting Connected Bones

There is a subtlety regarding connected bones.

When you have several connected bones selected, if you deselect one bone,
its tip will be deselected, but not its root, if it is also the tip of another selected bone.

To understand this, look at Fig. [Bone deselection in a selected chain.](#fig-rig-bone-select-deselect).

Bone deselection in a selected chain.

|  |  |
| --- | --- |
| <../../../_images/animation_armatures_bones_selecting_whole-chain.png>   A selected chain. | <../../../_images/animation_armatures_bones_selecting_two-bones.png>   Two selected bones. |

After `Shift`-clicking “Bone.003”:

- “Bone.003” ‘s tip (which is same as “Bone.004” ‘s root) is deselected.
- “Bone” is “Bone.003” ‘s parent. Therefore, “Bone.003” ‘s root is the same as the tip of “Bone”.
  Since “Bone” is still selected, its tip is selected. Thus the root of “Bone.003” remains selected.
user: Describe Tooltips from the Blender manual or Python API, including usage steps and snippets.

assistant: [image reference removed]

Tooltip of the Renderer selector in the Info Editor.

After hovering the mouse cursor over a button or setting for a few moments, a tooltip will appear.

### Elements

The context-sensitive tooltip might contain some of these elements:

Short Description
:   Related details depending on the control.

Shortcut
:   A keyboard or mouse shortcut associated to the tool.

Value
:   The value of the property.

    Hovering over a color property will display a large swatch preview of the color and the color’s hexadecimal, RGBA,
    and HSVA values.

    [image reference removed]

    Tooltip showing color information.

Library
:   Source file of the active object. See also [Linked Libraries](../files/linked_libraries/index.html).

Disabled (red)
:   The reason why the value is not editable.

Python
:   When [Python Tooltips](../editors/preferences/interface.html#bpy-types-preferencesview-show-tooltips-python) are enabled, a Python expression is
    displayed for [scripting](../advanced/scripting/index.html#scripting-index) (usually an operator or property).
user: Explain Examples in complete detail according to the official Blender documentation.

assistant: Below are some common curves you can use to achieve desired effects.

[image reference removed]

From left to right: 1. Lighten shadows 2. Negative 3. Decrease contrast 4. Posterize.

### Color Correction using Curves

[image reference removed]

Color correction with curves.

In this example, the image has too much red in it,
so we run it through an *RGB Curves* node and reduce the Red channel.

The documentation for the [Mix Color Node](../../../compositing/types/color/mix_color.xhtml) has an additional
example about fixing overexposure.

### Color Correction using Black/White Levels

[image reference removed]

Color correction with Black/White Levels.

Manually adjusting the RGB curves for color correction can be difficult.
Another option for color correction is to use the Black and White Levels instead,
which really might be their main purpose.

In this example,
the White Level is set to the color of a bright spot of the sand in the background,
and the Black Level to the color in the center of the fish’s eye.
To do this efficiently it is best to bring up the Image Editor showing the original input image.
You can then use the levels’ color picker to easily choose
the appropriate colors from the input image, zooming into pixel level if necessary.
The result can be fine-tuned with the R, G, and B curves like in the previous example.

The curve for C is used to compensate for the increased contrast that is a side effect of
setting Black and White Levels.

### Effects

[image reference removed]

Changing colors by inverting the red channel.
user: Show practical ways to work with BlendDataPointClouds(bpy_struct) in a Blender add-on or script – include code.

assistant: # BlendDataPointClouds(bpy_struct)

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

*class* bpy.types.BlendDataPointClouds(*bpy_struct*)
:   Collection of point clouds

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

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

        Returns:
        :   New point cloud data-block

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

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

        Parameters:
        :   - **pointcloud** ([`PointCloud`](bpy.types.PointCloud.html#bpy.types.PointCloud "bpy.types.PointCloud"), (never None)) – Point cloud to remove
            - **do_unlink** (*boolean**,* *(**optional**)*) – Unlink all usages of this point cloud before deleting it (WARNING: will also delete objects instancing that point cloud data)
            - **do_id_user** (*boolean**,* *(**optional**)*) – Decrement user counter of all data-blocks used by this point cloud data
            - **do_ui_user** (*boolean**,* *(**optional**)*) – Make sure interface does not reference this point cloud 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 Repeat Zone and how is it used in Blender Python scripting?

assistant: # Repeat Zone

A *Repeat Zone* executes a set of nodes multiple times.

[image reference removed]

The zone consists of an input node on the left, an output node on the right,
and an orange area in the middle for placing the nodes to repeat. When the zone executes
for the first time, it evaluates its inputs and forwards them to its inner nodes.
These inner nodes can then write to the output node for providing inputs to the next
iteration, and for providing the result of the zone after the last iteration.

The nodes inside the zone can also take inputs from nodes outside the zone – these
inputs are then the same in every iteration. However, nodes inside the zone can’t
send their outputs to nodes outside the zone.
user: Give a detailed overview of GeometryNodeViewer(GeometryNode): syntax, arguments, return values, common patterns.

assistant: # GeometryNodeViewer(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.GeometryNodeViewer(*GeometryNode*)
:   Display the input data in the Spreadsheet Editor

    active_index
    :   Index of the active item

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

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

    domain
    :   Domain to evaluate fields on

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

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

    viewer_items
    :   Type:
        :   [`NodeGeometryViewerItems`](bpy.types.NodeGeometryViewerItems.html#bpy.types.NodeGeometryViewerItems "bpy.types.NodeGeometryViewerItems") [`bpy_prop_collection`](bpy.types.bpy_prop_collection.html#bpy.types.bpy_prop_collection "bpy.types.bpy_prop_collection") of [`NodeGeometryViewerItem`](bpy.types.NodeGeometryViewerItem.html#bpy.types.NodeGeometryViewerItem "bpy.types.NodeGeometryViewerItem"), (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")

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

assistant: Attribute Type
:   Specifies the type of the attribute.

    Geometry:
    :   The attribute is associated with the geometry of the object, and its value varies from
        vertex to vertex, or within the volume of the object.

        Most geometry attributes are directly accessible through the various input nodes, except for these:

        Ocean Foam
        :   Gives a scalar defining where foam might appear when using
            an [Ocean Modifier](../../../modeling/modifiers/physics/ocean.xhtml).
            This depends on the name you give this property.

    Object:
    :   The attribute name specifies a [custom property](../../../files/custom_properties.xhtml#files-data-blocks-custom-properties) name,
        or an RNA path to a built-in property (like the single property [driver variables](../../../animation/drivers/drivers_panel.xhtml#drivers-variables)).

        The values of attributes of this type are defined once per object. The name or path is looked up
        first in the object data-block, followed by the mesh data-block if not found.
        Custom properties have priority over built-in ones.

        The property value must be an integer, float, boolean, or a vector of 1 to 4 floats or ints; properties of other
        types are ignored. If a suitable property is not found, all sockets of the node, including *Alpha*, output 0.

    Instancer:
    :   Similar to *Object*, but the attribute is looked up in the instancer particle system settings,
        followed by [Geometry Node instance](../../../modeling/geometry_nodes/instances.xhtml) attributes
        (searching from the innermost instancing layer to outer ones), and finally in the instancer object.
        If the current object is not instanced, or the property is not found, it falls back to the *Object* mode.

    View Layer:
    :   The attribute is looked up in the current [View Layer](../../layers/introduction.xhtml),
        [Scene](../../../scene_layout/scene/introduction.xhtml) and [World](../../lights/world.xhtml), using the same lookup
        logic as *Object*, and likewise producing all zero outputs including *Alpha* if not found. Attributes of this
        type have the same uniform value throughout the whole Render Layer.

Name
:   The name of the attribute to retrieve.
user: Show practical ways to work with Attribute Domain Only Mesh Items in a Blender add-on or script – include code.

assistant: # Attribute Domain Only Mesh Items

POINT:
:   Point.

    Attribute on point.

EDGE:
:   Edge.

    Attribute on mesh edge.

FACE:
:   Face.

    Attribute on mesh faces.

CORNER:
:   Face Corner.

    Attribute on mesh face corner.
user: How do I use FloatColorAttribute(Attribute) in Blender? Include parameters, examples, warnings and best practices.

assistant: # FloatColorAttribute(Attribute)

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

*class* bpy.types.FloatColorAttribute(*Attribute*)
:   Geometry attribute that stores RGBA colors as floating-point values using 32-bits per channel

    data
    :   Type:
        :   [`bpy_prop_collection`](bpy.types.bpy_prop_collection.html#bpy.types.bpy_prop_collection "bpy.types.bpy_prop_collection") of [`FloatColorAttributeValue`](bpy.types.FloatColorAttributeValue.html#bpy.types.FloatColorAttributeValue "bpy.types.FloatColorAttributeValue"), (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: Provide the full official documentation entry for Mask by Color, preserving all code examples.

assistant: Click on any color on the mesh to create a new mask (based on the active color attribute).

Threshold
:   How much changes in color affect the mask generation. A smaller threshold includes fewer similar colors.
    A larger threshold includes much more similar colors.

Contiguous
:   Mask only contiguous color areas. Colors that don’t touch the one that you click on will not be masked.

Invert
:   Invert the generated mask.

Preserve Previous Mask
:   Preserve previous mask and add or subtract the new one generated by the colors.
user: Show practical ways to work with Examples in a Blender add-on or script – include code.

assistant: [image reference removed]

Choosing closest pixels.

In the example above, the render output from two scenes are mixed using the Depth Combine node,
one from a sphere of size 1.3, and the other a cube of size 1.0.
The sphere and square are located at the same place. The cube is tipped forward,
so the corner in the center is closer to the camera than the sphere surface;
so Depth Combine chooses to use the cube’s pixels. But the sphere is slightly larger
(a size of 1.3 versus 1.0), so it does not fit totally inside the cube. At some point,
as the cube’s sides recede back away from the camera, the sphere’s sides are closer.
When this happens, Depth Combine uses the sphere’s pixels to form the resulting picture.

This node can be used to combine a foreground with a background matte painting.
Walt Disney pioneered the use of multi-plane mattes, where three or four partial mattes were
painted on glass and placed on the left and right at different depth positions; minimal camera
moves to the right created the illusion of depth as Bambi moved through the forest.

[image reference removed]

Mix and match images.

The Depth Combine can be used to merge two images as well.
Using the depth values from the sphere and cube scenes above, but inputting different images,
yields the example to the right.

[image reference removed]

Depth Combine in action.

In this node setup a render scene is mixed with a flat image. In the side view of the scene,
the orange cube is 10 units away from the camera, and the blue ball is at a depth of 20.
The 3D cursor is about 15 units away from the camera.
The image depth is 15, thus inserting it in between the cube and the ball.
The resulting image appears to have the cube on the green image.
user: What is ShaderFxShadow(ShaderFx) and how is it used in Blender Python scripting?

assistant: # ShaderFxShadow(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.ShaderFxShadow(*ShaderFx*)
:   Shadow effect

    amplitude
    :   Amplitude of Wave

        Type:
        :   float in [0, inf], default 0.0

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

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

    object
    :   Object to determine center of rotation

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

    offset
    :   Offset of the shadow

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

    orientation
    :   Direction of the wave

        Type:
        :   enum in [`'HORIZONTAL'`, `'VERTICAL'`], default `'HORIZONTAL'`

    period
    :   Period of Wave

        Type:
        :   float in [0, inf], default 0.0

    phase
    :   Phase Shift of Wave

        Type:
        :   float in [-inf, inf], default 0.0

    rotation
    :   Rotation around center or object

        Type:
        :   float in [-6.28319, 6.28319], default 0.0

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

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

    scale
    :   Scale of the shadow

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

    shadow_color
    :   Color used for Shadow

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

    use_object
    :   Use object as center of rotation

        Type:
        :   boolean, default False

    use_wave
    :   Use wave effect

        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: How do I use GeometryNodeImportCSV(GeometryNode) in Blender? Include parameters, examples, warnings and best practices.

assistant: # GeometryNodeImportCSV(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.GeometryNodeImportCSV(*GeometryNode*)
:   Import geometry from an CSV file

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

assistant: # GeometryNodeRemoveAttribute(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.GeometryNodeRemoveAttribute(*GeometryNode*)
:   Delete an attribute with a specified name from a geometry. Typically used to optimize performance

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Explain Inputs in complete detail according to the official Blender documentation.

assistant: Vector
:   3D coordinate that’s projected onto the 2D image using the selected *Projection* method.
    The node then outputs the color and alpha at this projected point.

    This slot is usually connected to an output of the [Texture Coordinate Node](../input/texture_coordinate.html).
    If left unconnected, the coordinate is taken from the object’s active UV map (with Z = 0).
user: Give a detailed overview of Principled Volume: syntax, arguments, return values, common patterns.

assistant: # Principled Volume

[image reference removed]

The *Principled Volume* shader combines all volume shading components into
a single easy to use node. Volumes like smoke and fire can be rendered with
a single shader node, which includes scattering, absorption and blackbody emission.
user: Explain References in complete detail according to the official Blender documentation.

assistant: |  |  |
| --- | --- |
| - [`bpy.context.active_bone`](bpy.context.html#bpy.context.active_bone "bpy.context.active_bone") - [`bpy.context.bone`](bpy.context.html#bpy.context.bone "bpy.context.bone") - [`Armature.bones`](bpy.types.Armature.html#bpy.types.Armature.bones "bpy.types.Armature.bones") - [`ArmatureBones.active`](bpy.types.ArmatureBones.html#bpy.types.ArmatureBones.active "bpy.types.ArmatureBones.active") - [`Bone.bbone_custom_handle_end`](#bpy.types.Bone.bbone_custom_handle_end "bpy.types.Bone.bbone_custom_handle_end") | - [`Bone.bbone_custom_handle_start`](#bpy.types.Bone.bbone_custom_handle_start "bpy.types.Bone.bbone_custom_handle_start") - [`Bone.children`](#bpy.types.Bone.children "bpy.types.Bone.children") - [`Bone.parent`](#bpy.types.Bone.parent "bpy.types.Bone.parent") - [`BoneCollection.bones`](bpy.types.BoneCollection.html#bpy.types.BoneCollection.bones "bpy.types.BoneCollection.bones") - [`PoseBone.bone`](bpy.types.PoseBone.html#bpy.types.PoseBone.bone "bpy.types.PoseBone.bone") |
user: Provide the full official documentation entry for Get Named Grid Node, preserving all code examples.

assistant: # Get Named Grid Node

[image reference removed]

The *Get Named Grid* node retrieves a specific voxel grid from a volume geometry by its name.
Each volume object can contain multiple grids (for example, *density*, *color*,
*temperature*, or *velocity*), and this node allows accessing one of them for
further processing in the node tree.

The retrieved grid can then be sampled, modified, or converted to geometry
using other grid or SDF nodes.
user: How do I use FunctionNodeEulerToRotation(FunctionNode) in Blender? Include parameters, examples, warnings and best practices.

assistant: # FunctionNodeEulerToRotation(FunctionNode)

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"), [`FunctionNode`](bpy.types.FunctionNode.html#bpy.types.FunctionNode "bpy.types.FunctionNode")

*class* bpy.types.FunctionNodeEulerToRotation(*FunctionNode*)
:   Build a rotation from separate angles around each axis

    *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: Give a detailed overview of Inset Faces: syntax, arguments, return values, common patterns.

assistant: # Inset Faces

This tool takes the currently selected faces and creates an inset of them,
with adjustable thickness and depth. Think of it as like creating an edge loop,
but relative to the selected edges, even in complex meshes.

The tool is modal, such that when you activate it,
you may adjust the thickness with your mouse position.
You may also adjust the depth of the inset during the modal operation by holding `Ctrl`.

|  |  |
| --- | --- |
| ../../../../_images/modeling_meshes_editing_face_inset-faces_before.png   Selection to inset. | ../../../../_images/modeling_meshes_editing_face_inset-faces_after.png   Result of inset with *Select Outer* enabled. |
user: How do I use MovieTrackingPlaneTracks(bpy_struct) in Blender? Include parameters, examples, warnings and best practices.

assistant: # MovieTrackingPlaneTracks(bpy_struct)

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

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

    active
    :   Active plane track in this tracking data object. Deprecated, use objects[name].plane_tracks.active

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

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

assistant: The editor has several different modes that can be selected from a dropdown in the header.
The default *Dope Sheet* mode gives an overview of most types of animatable data.
For others, such as masks, you need to switch to a more specific mode.

[image reference removed]

Dope Sheet modes.

The modes are as follows:

- Dope Sheet
- [Action Editor](modes/action.xhtml)
- [Shape Key Editor](modes/shape_key.xhtml)
- [Grease Pencil](modes/grease_pencil.xhtml)
- [Mask](modes/mask.xhtml)
- Cache File: originally meant to show the baked animation data in [Alembic](../../files/import_export/alembic.xhtml)
  files, but never implemented.
user: Show practical ways to work with GeometryNodeCurveLength(GeometryNode) in a Blender add-on or script – include code.

assistant: # GeometryNodeCurveLength(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.GeometryNodeCurveLength(*GeometryNode*)
:   Retrieve the length of all splines added together

    *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: Provide the full official documentation entry for Space, preserving all code examples.

assistant: The *Target Space* is the reference frame for retrieving the location coordinates,
rotation angles, and scale factors of the *Target*. The *Owner Space* is the
reference frame for applying those numbers to the object or bone that owns the constraint.

[image reference removed]

Using *World Space* for both *Target* and *Owner* places the constrained object
at the same location as the target regardless of their parents.

### Space Types

World Space
:   Use the transformation relative to the world axes.

Custom Space
:   Use the transformation relative to an arbitrary object or bone.

Pose Space Bones Only
:   Use the transformation relative to the armature object.

Local Space
:   For an object, use the transformation relative to its parent.

    For a bone, use the transformation relative to its rest state, after that rest state was
    transformed by the bone’s ancestors. (If the bone has no other constraints, this is its
    transformation as shown in the [Properties Editor](../../../editors/properties_editor.html) while in Pose Mode.)

Local with Parent Bones Only
:   Use the transformation relative to the bone’s rest state. Unlike *Local Space*, this includes
    the rotation and location difference caused by rotating any ancestor bone.

Local Space (Owner Orientation) Bone Targets Only
:   This space is intended to be used with the *Owner* set to *Local Space*. It retrieves the *Local Space*
    of the Target bone, adjusted to work with the rest orientation of the Owner bone. The result is that,
    if the parent bones of both the Target and the Owner are in their rest pose, the Owner will
    undergo the same transformation as the Target *in armature space*. The following image
    demonstrates this:

    [image reference removed]

    - The left hand armature contains the Target bone which we rotate manually.
    - The middle armature has a constraint that copies the *Local Space* rotation of the Target bone.
      If the Target bone is rotated around its Y axis, this Owner bone rotates by the same amount around
      *its own* Y axis.
    - The right hand armature has a constraint that copies the *Local Space (Owner Orientation)* rotation
      of the Target bone. If the Target bone is rotated around its Y axis, the Owner bone rotates around
      *that same* axis in armature space. Initially this is the same as using *Pose Space* or even
      *World Space*, but if the parent bones are rotated as well, the result will be different.
user: What is Render Region and how is it used in Blender Python scripting?

assistant: Allows you to limit rendering to a 2D rectangular area. If you’re busy tweaking
just a small part of the scene, it can be quite wasteful to have the whole viewport in
[Rendered shading mode](../display/shading.html#view3d-viewport-shading) or make full-frame renders,
so this feature lets you save time.

You can define Render Regions in two different contexts:

- If you define one while in [Camera View](camera_view.html),
  it will apply not just to the viewport, but also to the final render.
  If you want to temporarily disable this region rather than clearing it entirely,
  you can do so in the Output tab of the [Properties](../../../render/output/properties/format.html#bpy-types-rendersettings-use-border) editor.
- If you define one while not in Camera View, it will only apply to the viewport.
  If you want to temporarily disable this region rather than clearing it entirely,
  you can do so in the [Sidebar](../sidebar.html#bpy-types-spaceview3d-use-render-border).

Both Render Regions can exist at the same time.

Render region and associated render.

|  |  |
| --- | --- |
| ../../../_images/editors_3dview_navigate_regions_render-border-1.png | ../../../_images/editors_3dview_navigate_regions_render-border-2.png |
user: How do I use basic.pivot in Blender? Include parameters, examples, warnings and best practices.

assistant: Single-bone rig type that creates a ‘custom pivot’ control for rotating and scaling its child sub-rigs.

This type of control transforms its children when rotated or scaled, while moving it
merely changes the pivot point used by rotation or scaling.

Master Control
:   When enabled an extra parent control bone with a box widget is created to allow moving the rig.
    It is also required by all other options besides *Deform Bone*.

Widget Type
:   Allows selecting one of the predefined widgets to generate for the master control instead of the default cube.

Switchable Parent
:   Generates a mechanism for switching the effective parent of the rig based on the value of a custom property.

Register Parent
:   Registers the rig as a potential parent scope for its child sub-rigs’ parent switches.

    Tags
    :   Specifies additional comma-separated tag keywords for the registered parent scope.
        They can be used by other rigs to filter parent choices, or for selecting the default parent.

        Some of the existing tags that are useful here:

        `injected` (special)
        :   The parent scope will be made available for all children of the *parent* sub-rig,
            rather than just this rig’s children.

        `held_object`
        :   A control for the object held in the character’s hand. Preferred by finger IK.

            The `injected,held_object` combination is perfect for such a control.

Pivot Control
:   Disabling this avoids generating the actual custom pivot control, effectively turning this rig type
    into a version of [basic.super_copy](#basic-super-copy) with parent switching support and a different widget.

Deform Bone
:   When enabled a deform bone will be created.