PGCRYPT/OpenBlender_Train huggingface dataset:
user: Explain NodeTreeInterfaceSocketIntPercentage(NodeTreeInterfaceSocket) in complete detail according to the official Blender documentation.

assistant: # NodeTreeInterfaceSocketIntPercentage(NodeTreeInterfaceSocket)

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

*class* bpy.types.NodeTreeInterfaceSocketIntPercentage(*NodeTreeInterfaceSocket*)
:   Integer number socket of a node

    default_value
    :   Input value used for unconnected socket

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

    max_value
    :   Maximum value

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

    min_value
    :   Minimum value

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

    subtype
    :   Subtype of the default value

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

    draw(*context*, *layout*)
    :   Draw interface socket settings

        Parameters:
        :   **layout** ([`UILayout`](bpy.types.UILayout.html#bpy.types.UILayout "bpy.types.UILayout"), (never None)) – Layout, Layout in the UI

    init_socket(*node*, *socket*, *data_path*)
    :   Initialize a node socket instance

        Parameters:
        :   - **node** ([`Node`](bpy.types.Node.html#bpy.types.Node "bpy.types.Node"), (never None)) – Node, Node of the socket to initialize
            - **socket** ([`NodeSocket`](bpy.types.NodeSocket.html#bpy.types.NodeSocket "bpy.types.NodeSocket"), (never None)) – Socket, Socket to initialize
            - **data_path** (*string**,* *(**never None**)*) – Data Path, Path to specialized socket data

    from_socket(*node*, *socket*)
    :   Setup template parameters from an existing socket

        Parameters:
        :   - **node** ([`Node`](bpy.types.Node.html#bpy.types.Node "bpy.types.Node"), (never None)) – Node, Node of the original socket
            - **socket** ([`NodeSocket`](bpy.types.NodeSocket.html#bpy.types.NodeSocket "bpy.types.NodeSocket"), (never None)) – Socket, Original socket

    *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 Creating a Rigid Body: syntax, arguments, return values, common patterns.

assistant: Only mesh objects can be part of a rigid body simulation.
To create rigid bodies, either click on the *Rigid Body* button in the *Physics* tab of
the Properties or use *Add Active*/*Add Passive* in the Object ‣ Rigid Body menu.

There are two types of rigid bodies: active and passive. *Active* bodies are dynamically simulated, while *passive*
bodies remain static. Both types can be driven by the animation system when using the *Animated* option.

During the simulation,
the rigid body system will override the position and orientation of dynamic rigid body objects.
Note however, that the location and rotation of the objects are not changed,
so the rigid body simulation acts similar to a constraint.
To apply the rigid body transformations you can use
the *Apply Object Transform* operator.

The scale of the rigid body object also influences the simulation, but is always controlled by the animation system.

Rigid body physics on the object can be *removed* with the *Rigid Body* button
in the *Physics* tab in the Properties or in the Object ‣ Rigid Body menu.
user: Give a detailed overview of Inherited Properties: syntax, arguments, return values, common patterns.

assistant: |  |  |
| --- | --- |
| - [`bpy_struct.id_data`](bpy.types.bpy_struct.html#bpy.types.bpy_struct.id_data "bpy.types.bpy_struct.id_data") | - [`LineStyleThicknessModifier.name`](bpy.types.LineStyleThicknessModifier.html#bpy.types.LineStyleThicknessModifier.name "bpy.types.LineStyleThicknessModifier.name") |
user: Describe Example from the Blender manual or Python API, including usage steps and snippets.

assistant: The Filter node has eight modes, shown here.

|  |  |
| --- | --- |
| ../../../_images/compositing_types_filter_filter-node_example-1-original.png   Original image. | ../../../_images/compositing_types_filter_filter-node_example-2-soften.png   Soften. |
| ../../../_images/compositing_types_filter_filter-node_example-3-box-sharpen.png   Box Sharpen. | ../../../_images/compositing_types_filter_filter-node_example-4-diamond-sharpen.png   Diamond Sharpen. |
| ../../../_images/compositing_types_filter_filter-node_example-5-laplace.png   Laplace. | ../../../_images/compositing_types_filter_filter-node_example-6-sobel.png   Sobel. |
| ../../../_images/compositing_types_filter_filter-node_example-7-prewitt.png   Prewitt. | ../../../_images/compositing_types_filter_filter-node_example-8-kirsch.png   Kirsch. |
| ../../../_images/compositing_types_filter_filter-node_example-9-shadow.png   Shadow. |  |
user: Describe Inputs from the Blender manual or Python API, including usage steps and snippets.

assistant: Value/Vector
:   The input value or vector to be remapped.

From Min
:   The lower bound of the range to remap from.

From Max
:   The higher bound of the range to remap from.

To Min
:   The lower bound of the target range.

To Max
:   The higher bound of the target range.

Steps
:   The number of values allowed between *To Min* and *To Max* when using *Stepped Linear* interpolation.
    A higher value will give a smoother interpolation while lower values will progressively quantize the input.
user: Explain Erase Lasso in complete detail according to the official Blender documentation.

assistant: The *Erase Lasso* operator erases all Grease Pencil strokes within a freeform selection.

- Press and hold `Ctrl`-`Alt`-`RMB`, then draw a lasso shape around the area you want to erase.
- Release the mouse button to apply the eraser.
- Only points within the lasso region are removed.
user: What is Overview and how is it used in Blender Python scripting?

assistant: Closures are a socket type that represent callable node graphs.
They define a set of inputs and outputs that can be evaluated inside another node group through the
[Evaluate Closure](../../../../interface/controls/nodes/types/utilities/closure/evaluate_closure.html) node.

When a closure is connected, its internal node graph is *injected* into the evaluation of the node group where it is
used. This allows procedural systems to remain flexible while exposing clear, customizable control points.

Closures can be thought of as function parameters for node groups.
They let users define operations that can be executed in a controlled environment defined by the parent node tree.
user: Describe NodeTreeInterfaceSocketVectorXYZ2D(NodeTreeInterfaceSocket) from the Blender manual or Python API, including usage steps and snippets.

assistant: # NodeTreeInterfaceSocketVectorXYZ2D(NodeTreeInterfaceSocket)

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

*class* bpy.types.NodeTreeInterfaceSocketVectorXYZ2D(*NodeTreeInterfaceSocket*)
:   3D vector socket of a node

    default_value
    :   Input value used for unconnected socket

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

    dimensions
    :   Dimensions of the vector socket

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

    max_value
    :   Maximum value

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

    min_value
    :   Minimum value

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

    subtype
    :   Subtype of the default value

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

    draw(*context*, *layout*)
    :   Draw interface socket settings

        Parameters:
        :   **layout** ([`UILayout`](bpy.types.UILayout.html#bpy.types.UILayout "bpy.types.UILayout"), (never None)) – Layout, Layout in the UI

    init_socket(*node*, *socket*, *data_path*)
    :   Initialize a node socket instance

        Parameters:
        :   - **node** ([`Node`](bpy.types.Node.html#bpy.types.Node "bpy.types.Node"), (never None)) – Node, Node of the socket to initialize
            - **socket** ([`NodeSocket`](bpy.types.NodeSocket.html#bpy.types.NodeSocket "bpy.types.NodeSocket"), (never None)) – Socket, Socket to initialize
            - **data_path** (*string**,* *(**never None**)*) – Data Path, Path to specialized socket data

    from_socket(*node*, *socket*)
    :   Setup template parameters from an existing socket

        Parameters:
        :   - **node** ([`Node`](bpy.types.Node.html#bpy.types.Node "bpy.types.Node"), (never None)) – Node, Node of the original socket
            - **socket** ([`NodeSocket`](bpy.types.NodeSocket.html#bpy.types.NodeSocket "bpy.types.NodeSocket"), (never None)) – Socket, Original socket

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

assistant: # Shader Editor

The Shader Editor is used to edit materials which are used for [rendering](../render/index.html).
Materials used by Cycles and EEVEE are defined using a node tree.
Therefore, the main window of the Shader editor is a [node editor](../interface/controls/nodes/index.html).

[image reference removed]

Shader Editor with the default material node tree.

A list of all [shader nodes](../render/shader_nodes/index.html) is available in the rendering section.
user: What is MotionPath(bpy_struct) and how is it used in Blender Python scripting?

assistant: # MotionPath(bpy_struct)

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

*class* bpy.types.MotionPath(*bpy_struct*)
:   Cache of the world-space positions of an element over a frame range

    color
    :   Custom color for motion path before the current frame

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

    color_post
    :   Custom color for motion path after the current frame

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

    frame_end
    :   End frame of the stored range

        Type:
        :   int in [-inf, inf], default 0, (readonly)

    frame_start
    :   Starting frame of the stored range

        Type:
        :   int in [-inf, inf], default 0, (readonly)

    is_modified
    :   Path is being edited

        Type:
        :   boolean, default False

    length
    :   Number of frames cached

        Type:
        :   int in [-inf, inf], default 0, (readonly)

    line_thickness
    :   Line thickness for motion path

        Type:
        :   int in [1, 6], default 0

    lines
    :   Use straight lines between keyframe points

        Type:
        :   boolean, default False

    points
    :   Cached positions per frame

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

    use_bone_head
    :   For PoseBone paths, use the bone head location when calculating this path

        Type:
        :   boolean, default False, (readonly)

    use_custom_color
    :   Use custom color for this motion path

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

assistant: [image reference removed]

Edit Mode selection buttons.

In Edit Mode there are three different selection modes.
You can enter the different modes by selecting one of the three buttons in the header.

Points:
:   To select individual points.

Strokes:
:   To select an entire stroke.

Segments:
:   To select all points that are between other strokes.

[image reference removed]

Points, stroke and in between stroke selection sample.
user: Provide the full official documentation entry for Erase Multires Displacement, preserving all code examples.

assistant: # Erase Multires Displacement

This brush deletes displacement information of
the [Multires Modifier](../../../modeling/modifiers/generate/multiresolution.xhtml),
resetting the mesh to a regular subdivision surface result.

This can be used to reset parts of the sculpt or to fix reprojection artifacts
after applying a [Shrinkwrap Modifier](../../../modeling/modifiers/deform/shrinkwrap.xhtml).
user: Explain Duplicate Active Keyframe (Active Layer) in complete detail according to the official Blender documentation.

assistant: Duplicates the strokes on the last keyframe by copying them to the current frame.

Mode
:   Pick which layers to duplicate.

    Active:
    :   Duplicate only the active layer.

    All:
    :   Duplicate all the layers.
user: Give a detailed overview of Wrap Methods: syntax, arguments, return values, common patterns.

assistant: ### Nearest Surface Point

This will select the nearest point over the surface of the shrunk target.

### Project

[image reference removed]

Project mode.

This will project vertices along a chosen axis until they touch the shrink target.
Vertices that never touch the shrink target are left in their original position.

Limit
:   This is a distance limit between original vertex and surface.
    If the distance is larger than this limit vertex would not be projected onto the surface.

Subdivision Levels
:   This applies a (temporary) *Catmull-Clark* subdivision to the modified object’s geometry,
    before computing the wrap.

Axis
:   Along which local axis of the modified object the projection is done.
    These options can be combined with each other, yielding a “median axis” of projection.
    If none are selected, the normal direction is used.

Negative/Positive
:   This allows you to select the allowed direction(s) of the shrink along the selected axis.
    If both options are enabled, both ways are evaluated and the closest hit is selected.

Face Cull
:   Allows you to prevent any projection over the “front side”
    (respectively the “back side”) of the target’s faces. The “side” of a face is determined
    by its normal (front being the side “from where” the normal “originates”).

Invert Cull
:   If *Cull Faces* is enabled, and *Negative* direction along axis is allowed,
    this option can be used to invert the *Front* or *Back* cull choice
    for the *Negative* direction. This is useful when projecting in both directions.

Auxiliary Target
:   An additional object to project over.

### Nearest Vertex

[image reference removed]

Nearest Vertex mode.

This will snap vertices to the nearest vertex of the shrunk target. It adds no extra options.

This method doesn’t support the *Snap Mode* setting.

### Target Normal Project

[image reference removed]

Target Normal Project mode.

This mode is similar to *Nearest Surface Point*, but produces a much smoother
projection in return for being significantly slower.

Instead of finding the closest point, it searches for the nearest point
that has its interpolated smooth normal pointing towards or away from the original vertex position.
Non-manifold boundary edges are specially handled as infinitely thin cylinders
that emit normals in all perpendicular directions; ignores flat shading.
user: Give a detailed overview of Waveform: syntax, arguments, return values, common patterns.

assistant: The waveform of the audio is shown depending on two options:

Overlay
:   The Sequencer Overlay menu has options to show all strip wave-forms, none of them, or to use the per-strip option
    described below.

Strip
:   Each strip has an option *Display Waveform*.
    It is only visible when the above overlay option is set to *Use Strip Option*.

Clipping audio, i.e. values over 100% amplitude, will be shown in red in the waveform.

More strip options are documented in [Sound Sidebar Panel](../../../../editors/video_sequencer/sequencer/sidebar/strip.xhtml#vse-sidebar-strip-sound).
user: Explain FunctionNodeHashValue(FunctionNode) in complete detail according to the official Blender documentation.

assistant: # FunctionNodeHashValue(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.FunctionNodeHashValue(*FunctionNode*)
:   Generate a randomized integer using the given input value as a seed

    data_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 `'INT'`

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

assistant: Panels should be documented by their own heading, nested panels should use decreasing heading levels. Each panel could
have its own page based on the length of documentation and/or the amount of panels. Expanded menus that toggle what
properties are presented to the user should be treated like subpanels:

```
Panel Title
===========

Nested Panel Title
------------------
```
user: How do I use Extract Face Set in Blender? Include parameters, examples, warnings and best practices.

assistant: Creates a new mesh based on the selected face set.
Once the operator is initiated, hover over the face set and `LMB` to create the new mesh.
After the operator is finished the new mesh will be selected in Object Mode.
user: Explain In Edit Mode in complete detail according to the official Blender documentation.

assistant: Each selected element is transformed around its own centerpoint.

[image reference removed]

Starting situation, rotation around Individual Origins, rotation around Median Point.

[image reference removed]

Starting situation, scaling using Individual Origins, scaling using Median Point.

When you transform adjacent faces or edges, they are treated as a single element
(meaning they don’t become disconnected).
user: Explain Example in complete detail according to the official Blender documentation.

assistant: |  |  |
| --- | --- |
| ../../../_images/render_eevee_render-settings_motion-blur_1step-nofx.png   No motion blur. | ../../../_images/render_eevee_render-settings_motion-blur_1step-fx.png   Only post-process blur. |
| ../../../_images/render_eevee_render-settings_motion-blur_4step-nofx.png   4 time steps without post-process blur. | ../../../_images/render_eevee_render-settings_motion-blur_4step-fx.png   4 time steps with post-process blur. |
| ../../../_images/render_eevee_render-settings_motion-blur_32step-nofx.png   32 time steps without post-process blur. | ../../../_images/render_eevee_render-settings_motion-blur_32step-fx.png   32 time steps with post-process blur. |
user: Explain Adding Strips in complete detail according to the official Blender documentation.

assistant: [image reference removed]

The Add Menu.

The Add menu is the main menu you will be using to add content to the Video Sequencer.
In general, you load up your strips, create strips of special transition effects,
and then animate out your sequence by selecting “Do Sequence” and clicking the *Animation* button.
You can use the Add menu in the header,
or hover your mouse cursor over the Sequence workspace and press `Shift`-`A`.

Blender does not care which of these you use; you can freely mix and match any of them.
When you choose to add one of these, it lets you either choose a data-block or
the editor area will switch to a File Browser for you to select what you want to add.
Supported files are filtered by default.

The start frame of the newly created strips will be placed at the position of the frame indicator.
When loading multiple files (movie and sound) at the same time each will be added one after the other.

### Adding Effects & Transitions

Blender offers a set of effects that can be added to your sequence.

To add an effect strip, select one base strip (image, movie, or scene) by `LMB` clicking on it.
For some effects, like the Cross transition effect,
you will need to `Shift`-`LMB` a second overlapping strip (it depends on the effect you want).
From Add menu pick the effect you want.
When you do, the Effect strip will be shown above the source strips. If it is an independent effect,
like the [Color Generator](color.xhtml),
it will be placed at the position of the frame indicator.

With some effects, like the
[Alpha Over](effects/alpha_over_under.xhtml),
the order in which you select the strips is important.
You can also use one effect strip as the input or source strip with another strip,
thus layering effects on top of one another.

If you picked the wrong effect from the menu,
you can always exchange it using [Effect Strip](../editing.xhtml#sequencer-edit-change).

Some effects such as Brightness/Contrast and Hue/Saturation
can be applied using [Strip Modifiers](../strip_modifiers.xhtml#bpy-types-stripmodifier).
user: What is References and how is it used in Blender Python scripting?

assistant: |  |  |
| --- | --- |
| - [`bpy.context.pointcloud`](bpy.context.html#bpy.context.pointcloud "bpy.context.pointcloud") - [`BlendData.pointclouds`](bpy.types.BlendData.html#bpy.types.BlendData.pointclouds "bpy.types.BlendData.pointclouds") | - [`BlendDataPointClouds.new`](bpy.types.BlendDataPointClouds.html#bpy.types.BlendDataPointClouds.new "bpy.types.BlendDataPointClouds.new") - [`BlendDataPointClouds.remove`](bpy.types.BlendDataPointClouds.html#bpy.types.BlendDataPointClouds.remove "bpy.types.BlendDataPointClouds.remove") |
user: Show practical ways to work with Switch Direction in a Blender add-on or script – include code.

assistant: The *Switch Direction* operator reverses the direction of the selected Grease Pencil stroke. This means the starting
point of the stroke becomes the endpoint, and vice versa. While this operation does not alter the visual appearance
of the stroke, but affects behaviors that rely on the point order, such as the
[Build Modifier](../../modifiers/generate/build.html).
user: Describe Final Considerations from the Blender manual or Python API, including usage steps and snippets.

assistant: As this guide showed, there is more to stereo 3D rendering than just generate two images.
The earlier the stereo pipeline is considered the smoother it will get.
The following sections are a more in-depth view of the individual components we visited in the workflow.
user: Provide the full official documentation entry for References, preserving all code examples.

assistant: |  |  |
| --- | --- |
| - [`WindowManager.piemenu_begin__internal`](bpy.types.WindowManager.html#bpy.types.WindowManager.piemenu_begin__internal "bpy.types.WindowManager.piemenu_begin__internal") | - [`WindowManager.piemenu_end__internal`](bpy.types.WindowManager.html#bpy.types.WindowManager.piemenu_end__internal "bpy.types.WindowManager.piemenu_end__internal") |
user: Give a detailed overview of References: syntax, arguments, return values, common patterns.

assistant: |  |  |
| --- | --- |
| - [`NodeCombineBundle.bundle_items`](bpy.types.NodeCombineBundle.html#bpy.types.NodeCombineBundle.bundle_items "bpy.types.NodeCombineBundle.bundle_items") - [`NodeCombineBundleItems.new`](bpy.types.NodeCombineBundleItems.html#bpy.types.NodeCombineBundleItems.new "bpy.types.NodeCombineBundleItems.new") | - [`NodeCombineBundleItems.remove`](bpy.types.NodeCombineBundleItems.html#bpy.types.NodeCombineBundleItems.remove "bpy.types.NodeCombineBundleItems.remove") |
user: Explain Maintain Volume Constraint in complete detail according to the official Blender documentation.

assistant: # Maintain Volume Constraint

The *Maintain Volume* constraint ensures that an object or bone keeps its
original volume by automatically scaling down two axes when another axis
is scaled up (and vice versa). This can be useful for stretching and squashing
stylized characters, for example.
user: Give a detailed overview of CompositorNodeBokehImage(CompositorNode): syntax, arguments, return values, common patterns.

assistant: # CompositorNodeBokehImage(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.CompositorNodeBokehImage(*CompositorNode*)
:   Generate image with bokeh shape for use with the Bokeh Blur filter node

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

    update()

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: Vertices
:   Number of vertices in the top and/or bottom circle of the cone.
    No geometry is generated if the number is below three.

Side Segments
:   Number of vertically stacked face loops that make up the cone’s sides.
    Increasing this will add horizontal cuts.
    No geometry is generated if the number is below one.

Fill Segments
:   Number of concentric rings in the top and/or bottom.
    No geometry is generated if the number is below one.

Radius Top
:   The radius of the cone’s top circle.
    If this is zero, the circle is reduced to a single vertex.

Radius Bottom
:   Same as *Radius Top* but for the bottom circle.

Depth
:   Height of the generated cone.
user: Explain References in complete detail according to the official Blender documentation.

assistant: |  |  |
| --- | --- |
| - [`BlendData.sounds`](bpy.types.BlendData.html#bpy.types.BlendData.sounds "bpy.types.BlendData.sounds") - [`BlendDataSounds.load`](bpy.types.BlendDataSounds.html#bpy.types.BlendDataSounds.load "bpy.types.BlendDataSounds.load") - [`BlendDataSounds.remove`](bpy.types.BlendDataSounds.html#bpy.types.BlendDataSounds.remove "bpy.types.BlendDataSounds.remove") | - [`SoundStrip.sound`](bpy.types.SoundStrip.html#bpy.types.SoundStrip.sound "bpy.types.SoundStrip.sound") - [`Speaker.sound`](bpy.types.Speaker.html#bpy.types.Speaker.sound "bpy.types.Speaker.sound") |
user: Describe References from the Blender manual or Python API, including usage steps and snippets.

assistant: |  |  |
| --- | --- |
| - [`NodeTreeInterface.move_to_parent`](bpy.types.NodeTreeInterface.html#bpy.types.NodeTreeInterface.move_to_parent "bpy.types.NodeTreeInterface.move_to_parent") - [`NodeTreeInterface.new_panel`](bpy.types.NodeTreeInterface.html#bpy.types.NodeTreeInterface.new_panel "bpy.types.NodeTreeInterface.new_panel") | - [`NodeTreeInterface.new_socket`](bpy.types.NodeTreeInterface.html#bpy.types.NodeTreeInterface.new_socket "bpy.types.NodeTreeInterface.new_socket") - [`NodeTreeInterfaceItem.parent`](bpy.types.NodeTreeInterfaceItem.html#bpy.types.NodeTreeInterfaceItem.parent "bpy.types.NodeTreeInterfaceItem.parent") |
user: Show practical ways to work with Inherited Properties in a Blender add-on or script – include code.

assistant: |  |  |
| --- | --- |
| - [`bpy_struct.id_data`](bpy.types.bpy_struct.html#bpy.types.bpy_struct.id_data "bpy.types.bpy_struct.id_data") - [`Constraint.name`](bpy.types.Constraint.html#bpy.types.Constraint.name "bpy.types.Constraint.name") - [`Constraint.type`](bpy.types.Constraint.html#bpy.types.Constraint.type "bpy.types.Constraint.type") - [`Constraint.is_override_data`](bpy.types.Constraint.html#bpy.types.Constraint.is_override_data "bpy.types.Constraint.is_override_data") - [`Constraint.owner_space`](bpy.types.Constraint.html#bpy.types.Constraint.owner_space "bpy.types.Constraint.owner_space") - [`Constraint.target_space`](bpy.types.Constraint.html#bpy.types.Constraint.target_space "bpy.types.Constraint.target_space") - [`Constraint.space_object`](bpy.types.Constraint.html#bpy.types.Constraint.space_object "bpy.types.Constraint.space_object") - [`Constraint.space_subtarget`](bpy.types.Constraint.html#bpy.types.Constraint.space_subtarget "bpy.types.Constraint.space_subtarget") | - [`Constraint.mute`](bpy.types.Constraint.html#bpy.types.Constraint.mute "bpy.types.Constraint.mute") - [`Constraint.enabled`](bpy.types.Constraint.html#bpy.types.Constraint.enabled "bpy.types.Constraint.enabled") - [`Constraint.show_expanded`](bpy.types.Constraint.html#bpy.types.Constraint.show_expanded "bpy.types.Constraint.show_expanded") - [`Constraint.is_valid`](bpy.types.Constraint.html#bpy.types.Constraint.is_valid "bpy.types.Constraint.is_valid") - [`Constraint.active`](bpy.types.Constraint.html#bpy.types.Constraint.active "bpy.types.Constraint.active") - [`Constraint.influence`](bpy.types.Constraint.html#bpy.types.Constraint.influence "bpy.types.Constraint.influence") - [`Constraint.error_location`](bpy.types.Constraint.html#bpy.types.Constraint.error_location "bpy.types.Constraint.error_location") - [`Constraint.error_rotation`](bpy.types.Constraint.html#bpy.types.Constraint.error_rotation "bpy.types.Constraint.error_rotation") |
user: Show practical ways to work with Usage in a Blender add-on or script – include code.

assistant: Vertex groups can be created manually or generated automatically. They are most commonly used for armature-based
deformation (also called *skinning*), but they are also used in many other areas of Blender, such as:

- Shape keys
- Modifiers
- Particle systems
- Physics simulations
user: What is Transformation Constraint and how is it used in Blender Python scripting?

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

assistant: # GpPaint(Paint)

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

*class* bpy.types.GpPaint(*Paint*)
:   color_mode
    :   Paint Mode

        - `MATERIAL`
          Material – Paint using the active material base color.
        - `VERTEXCOLOR`
          Color Attribute – Paint the material with a color attribute.

        Type:
        :   enum in [`'MATERIAL'`, `'VERTEXCOLOR'`], default `'MATERIAL'`

    *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 Bpy.Types.Geometryset in a Blender add-on or script – include code.

assistant: types.GeometrySet.volume bpy.types.GeometrySet.from_evaluated_object()
user: Provide the full official documentation entry for Cryptomatte Node (Legacy), preserving all code examples.

assistant: # Cryptomatte Node (Legacy)

[image reference removed]

The Cryptomatte node uses the Cryptomatte standard to efficiently create mattes for compositing.
Cycles and EEVEE output the required render passes, which can then be used in the Compositor
or another compositor with Cryptomatte support to create masks for specified objects.

Unlike the Material and Object Index passes, the objects to isolate are selected in compositing,
and mattes will be anti-aliased and take into account effects like motion blur and transparency.
user: What is Examples and how is it used in Blender Python scripting?

assistant: ### Using Image Output

This can simply be achieved by using the Alpha Over node.

[image reference removed]

Image output.

### Using Plane Output

This can be achieved by mixing the movie clip and the image by using the plane output as the factor.

[image reference removed]

Plane output.
user: Show practical ways to work with Volumes in a Blender add-on or script – include code.

assistant: # Volumes

Volume rendering is used to render various effects that cannot be represented by hard surfaces alone.

- Smoke, fire or clouds are set up using a volume object or fluid simulation,
  with only a volume shader.
- Meshes can also be used to create such shapes by removing the default surface shader
  and using a volume shader with the mesh shape defining the volume bounds
  and textures defining the volume density.
- Mist is created with a volume shader for the world,
  or with a large mesh object encompassing the scene.
- Absorption in glass is simulated by combining a glass surface shader with refraction
  and a volume absorption shader for the interior of the object.
user: What is CompositorNodeTranslate(CompositorNode) and how is it used in Blender Python scripting?

assistant: # CompositorNodeTranslate(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.CompositorNodeTranslate(*CompositorNode*)
:   Offset an image

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

    update()

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: [image reference removed]

Contains strip-specific proxy settings. The checkbox in the header can be used to
enable/disable proxy generation.

Custom Proxy
:   Directory
    :   By default, all generated proxy videos are stored to
        the folder `<path of original footage>/BL_proxy/<clip name>`,
        but this can be changed to a custom directory using this option.

    File
    :   Allows you to use preexisting proxies.

Resolutions
:   The resolution(s) of the proxy videos to generate; multiple sizes can be selected.

Overwrite
:   Whether to overwrite existing proxy files or keep them.

Quality
:   Controls the level of lossy compression applied to the image, expressed as a percentage.
    Lossy compression reduces file size by discarding some image data, which may result in a loss of detail.

    - **0%**: Maximum compression, producing the smallest file size but the most noticeable quality loss.
    - **100%**: No compression, preserving full image quality at the cost of a larger file size.

[Timecode](../../../../glossary/index.html#term-Timecode) Index
:   When you are working with footage directly copied from a camera without preprocessing it,
    there might be numerous artifacts, mostly due to seeking to a given frame in the sequence.
    This happens because such footage usually does not have correct frame rate values in the file header.
    This issue can still arise when the source clip has the same frame rate as the scene settings.
    In order for Blender to correctly calculate the frames and frame rate there are two possible solutions:

    1. Preprocess your video with e.g. MEncoder to repair the file header and insert the correct keyframes.
    2. Use the Timecode Index option in Blender.

    None:
    :   Ignore generated timecodes, seek in movie stream based on calculated timestamp.

    Record Run:
    :   Seek based on timestamps read from movie stream, giving the best match between scene and movie times.

    Record Run No Gaps:
    :   Effectively convert movie to an image sequence,
        ignoring incomplete or dropped frames, and changes in frame rate.
user: Show practical ways to work with Properties in a Blender add-on or script – include code.

assistant: Domain
:   Which [attribute domain](../attributes_reference.html#attribute-domains) to store the evaluated data on.

### Capture Items

[List View](../../../interface/controls/templates/list_view.html#ui-list-view) for adding, removing, reordering, and renaming the inputs of the node.

Data Type
:   The [data type](../attributes_reference.html#attribute-data-types) of the selected input.
user: Explain Introduction in complete detail according to the official Blender documentation.

assistant: To add translations to your Python script, you must define a dictionary formatted like that:
`{locale: {msg_key: msg_translation, ...}, ...}` where:

- locale is either a lang ISO code (e.g. `fr`), a lang+country code (e.g. `pt_BR`),
  a lang+variant code (e.g. `sr@latin`), or a full code (e.g. `uz_UZ@cyrilic`).
- msg_key is a tuple (context, org message) - use, as much as possible, the predefined [`contexts`](#bpy.app.translations.contexts "bpy.app.translations.contexts").
- msg_translation is the translated message in given language!

Then, call `bpy.app.translations.register(__name__, your_dict)` in your `register()` function, and
`bpy.app.translations.unregister(__name__)` in your `unregister()` one.

The `Manage UI translations` add-on has several functions to help you collect strings to translate, and
generate the needed Python code (the translation dictionary), as well as optional intermediary po files
if you want some… See
[How to Translate Blender](https://developer.blender.org/docs/handbook/translating/translator_guide/) and
[Using i18n in Blender Code](https://developer.blender.org/docs/handbook/translating/developer_guide/)
for more info.
user: What is ThemeWidgetColors(bpy_struct) and how is it used in Blender Python scripting?

assistant: # ThemeWidgetColors(bpy_struct)

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

*class* bpy.types.ThemeWidgetColors(*bpy_struct*)
:   Theme settings for widget color sets

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

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

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

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

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

    roundness
    :   Amount of edge rounding

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

    shadedown
    :   Type:
        :   int in [-100, 100], default 0

    shadetop
    :   Type:
        :   int in [-100, 100], default 0

    show_shaded
    :   Type:
        :   boolean, default False

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

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

    *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: Distribution
:   Microfacet distribution to use.

    GGX:
    :   GGX microfacet distribution.

    Multiscatter GGX:
    :   Takes multiple scattering events between microfacets into account.
        This gives more energy conserving results, which would otherwise be visible as excessive darkening.

    Beckmann:
    :   Cycles Only
        Beckmann microfacet distribution.
user: How do I use Brush Settings in Blender? Include parameters, examples, warnings and best practices.

assistant: # Brush Settings

[image reference removed]

Brush settings panel.

Information on brush settings for every mode can be found in these pages:

[Brush](../../brush/brush_settings.xhtml)
:   General and advanced settings.

[Texture](../../brush/texture.xhtml)
:   Color and mask texture settings.

[Stroke](../../brush/stroke.xhtml)
:   Stroke methods and settings.

[Falloff](../../brush/falloff.xhtml)
:   Falloff curves and settings.

[Cursor](../../brush/cursor.xhtml)
:   Cursor and appearance settings.