PGCRYPT/OpenBlender_Train huggingface dataset:
user: Provide the full official documentation entry for CompositorNodeAlphaOver(CompositorNode), preserving all code examples.

assistant: # CompositorNodeAlphaOver(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.CompositorNodeAlphaOver(*CompositorNode*)
:   Overlay a foreground image onto a background 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: How do I use Prune Grid Node in Blender? Include parameters, examples, warnings and best practices.

assistant: # Prune Grid Node

[image reference removed]

The *Prune Grid* node optimizes the storage of a voxel grid by collapsing
uniform regions into coarser tiles or inner nodes, reducing memory usage and
improving performance.

This node performs the inverse operation of the
[Voxelize Grid](voxelize_grid.html) node.
While voxelization expands sparse tiles into dense voxels, pruning
detects large uniform areas and replaces them with more compact representations.
This is especially useful after operations that create large
regions of constant values, such as filling, clipping, or thresholding.
user: Explain O in complete detail according to the official Blender documentation.

assistant: |  |  |
| --- | --- |
| - [**Object**](glossary/index.html#term-Object) - [**Object Center**](glossary/index.html#term-Object-Center) - [Object Constraints](animation/constraints/introduction.html#index-1)   - [Action Constraint](animation/constraints/relationship/action.html#index-0)   - [Armature Constraint](animation/constraints/relationship/armature.html#index-0)   - [Camera Solver Constraint](animation/constraints/motion_tracking/camera_solver.html#index-0)   - [Child Of Constraint](animation/constraints/relationship/child_of.html#index-0)   - [Clamp To Constraint](animation/constraints/tracking/clamp_to.html#index-0)   - [Copy Location Constraint](animation/constraints/transform/copy_location.html#index-0)   - [Copy Rotation Constraint](animation/constraints/transform/copy_rotation.html#index-0)   - [Copy Scale Constraint](animation/constraints/transform/copy_scale.html#index-0)   - [Copy Transforms Constraint](animation/constraints/transform/copy_transforms.html#index-0)   - [Damped Track Constraint](animation/constraints/tracking/damped_track.html#index-0)   - [Floor Constraint](animation/constraints/relationship/floor.html#index-0)   - [Follow Path Constraint](animation/constraints/relationship/follow_path.html#index-0)   - [Follow Track Constraint](animation/constraints/motion_tracking/follow_track.html#index-0)   - [Geometry Attribute Constraint](animation/constraints/relationship/geometry_attribute.html#index-0)   - [Inverse Kinematics Constraint](animation/constraints/tracking/ik_solver.html#index-0)   - [Limit Distance Constraint](animation/constraints/transform/limit_distance.html#index-0)   - [Limit Location Constraint](animation/constraints/transform/limit_location.html#index-0)   - [Limit Rotation Constraint](animation/constraints/transform/limit_rotation.html#index-0)   - [Limit Scale Constraint](animation/constraints/transform/limit_scale.html#index-0)   - [Locked Track Constraint](animation/constraints/tracking/locked_track.html#index-0)   - [Maintain Volume Constraint](animation/constraints/transform/maintain_volume.html#index-0)   - [Object Solver Constraint](animation/constraints/motion_tracking/object_solver.html#index-0)   - [Pivot Constraint](animation/constraints/relationship/pivot.html#index-0)   - [Shrinkwrap Constraint](animation/constraints/relationship/shrinkwrap.html#index-0)   - [Spline IK Constraint](animation/constraints/tracking/spline_ik.html#index-0)   - [Stretch To Constraint](animation/constraints/tracking/stretch_to.html#index-0)   - [Track To Constraint](animation/constraints/tracking/track_to.html#index-0)   - [Transform Cache Constraint](animation/constraints/transform/transform_cache.html#index-0)   - [Transformation Constraint](animation/constraints/transform/transformation.html#index-0) | - [**Object Origin**](glossary/index.html#term-Object-Origin) - [**Octahedron**](glossary/index.html#term-Octahedron) - [**OpenGL**](glossary/index.html#term-OpenGL) - [**Operator**](glossary/index.html#term-Operator) - [**Overscan**](glossary/index.html#term-Overscan) |
user: How do I use Inputs in Blender? Include parameters, examples, warnings and best practices.

assistant: Geometry
:   The geometry input to the node group, used when the node is connected to another geometry socket.

Input Type
:   Determines the source type of the geometry.

    Object:
    :   Uses a single object as the geometry source.

    Collection:
    :   Uses all objects within a collection as the geometry source.

Object / Collection
:   Specifies the object or collection to use as the geometry input, depending on the selected *Input Type*.

Relative Space
:   When enabled, the input geometry is transformed relative to the modifier or main geometry’s local space,
    rather than using its original world-space transform.

As Instance
:   When enabled, the geometry is added as an instance instead of being merged into the main geometry.
    Some operations require realized (non-instance) geometry, so use this option accordingly.

Replace Original
:   - When enabled, the incoming geometry is replaced by the selected input geometry.
    - When disabled, the input geometry is added alongside the existing one.
user: Show practical ways to work with GpVertexPaint(Paint) in a Blender add-on or script – include code.

assistant: # GpVertexPaint(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.GpVertexPaint(*Paint*)
:   *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 VDM Displacement and how is it used in Blender Python scripting?

assistant: *Vector Displacement Maps* are supported for the *Draw* brush to insert complex & overhanging shapes.
Unlike regular displacement, this uses all 3 color channels of the image
to displace geometry in three directions instead of just one.

[image reference removed]

An example of various VDM brushes used on a smooth head from the official demo file.

[Download the demo file](https://www.blender.org/download/demo-files/#sculpting)
for more information and to try the feature out.

To use this feature, enable [Vector Displacement](../../brush/texture.xhtml#bpy-types-brush-use-color-as-displacement) in the texture
panel. All [stroke methods](../../brush/stroke.xhtml#bpy-types-brush-stroke-method) are supported, but the recommended behavior is
*Anchored*.

Ideal images for vector displacement are open EXR files
with [color clamping](../../../render/materials/legacy_textures/colors.xhtml) disabled.
user: Describe Freestyle Module (freestyle) from the Blender manual or Python API, including usage steps and snippets.

assistant: # Freestyle Module (freestyle)

This module provides data types of view map components (0D and 1D
elements), base classes for defining line stylization rules
(predicates, functions, chaining iterators, and stroke shaders),
as well as helper functions for style module writing.
user: What is Selecting and how is it used in Blender Python scripting?

assistant: Blender has two main selection modes: left-click select and right-click select.
See the [Select with Mouse Button](../../editors/preferences/keymap.xhtml#keymap-blender-default-prefs-select-with) preference.

While left-click select is the default as it’s the most common in other applications,
right-click select does have its advantages.
See: [Learn the benefits of right-click select](https://vimeo.com/76335056).
user: Show practical ways to work with Transform in a Blender add-on or script – include code.

assistant: # Transform

[image reference removed]

The Transform panel for armatures in Edit Mode.

We will not detail here the various transformations of bones, nor things like axis locking, pivot points, and so on,
as they are common to most object editing, and already described in
the [mesh section](../../../../scene_layout/object/editing/transform/control/index.xhtml).
The same goes for mirroring,
as it is nearly the same as with [mesh editing](../../../../modeling/meshes/editing/mesh/mirror.xhtml).
Just keep in mind that bones’ roots and tips behave more or less like meshes’ vertices,
and bones themselves act like edges in a mesh.

As you know, bones can have two types of relationships: They can be parented,
and in addition connected. Parented bones behave in *Edit Mode* exactly as if they
had no relations. They can be moved, rotated, scaled, etc. without affecting their descendants.
However, connected bones must always have parent’s tips connected to child’s roots,
so by transforming a bone, you will affect all its connected parent/children/siblings.

While with other transform tools, the “local axes” means the object’s axes,
here they are the bone’s own axes (when you lock to a local axis,
by pressing the relevant key twice, the constraint is applied along the selected bone’s local axis,
not the armature object’s axis).

Finally, you can edit in the *Transform* panel in the Sidebar region
the positions and radius of both joints of the active selected bone,
as well as its [roll rotation](bone_roll.xhtml#armature-bone-roll).
user: Explain Copy/Paste Pose in complete detail according to the official Blender documentation.

assistant: # Copy/Paste Pose

Blender allows you to copy and paste a pose, either through the *Pose* menu, or
by using hotkeys.

Copy Pose
:   Copy the current pose of selected bones into the pose buffer.

Paste Pose
:   Paste the buffered pose to the currently posed armature.

Paste Pose Flipped
:   Paste the *X axis mirrored* buffered pose to the currently posed armature.

Here are important points:

- This tool works at the [Blender session](../../../../glossary/index.html#term-Blender-Session) level, which means you can use it across
  armatures, scenes, and even files. However, the pose buffer is not saved, so you lose it when you
  close Blender.
- There is only one pose buffer.
- Only the selected bones are taken into account during copying (i.e. you copy only selected bones’ pose).
- During pasting, on the other hand, bone selection has no importance.
  The copied pose is applied on a per-name basis
  (i.e. if you had a `forearm` bone selected when you copied the pose,
  the `forearm` bone of the current posed armature will get its pose when you paste it –
  and if there is no such named bone, nothing will happen…).
- What is copied and pasted is in fact the position, rotation or scale of each bone, in its own space.
  This means that the resulting pasted pose might be very different from the originally copied one, depending on:

  - The rest position of the bones.
  - And the current pose of their parents.

|  |  |
| --- | --- |
| ../../../../_images/animation_armatures_posing_editing_copy-paste_examples-1.png   The rest position of the original armature. | ../../../../_images/animation_armatures_posing_editing_copy-paste_examples-2.png   The rest position of the destination armature. |

Examples of pose copy/paste.

|  |  |  |
| --- | --- | --- |
| ../../../../_images/animation_armatures_posing_editing_copy-paste_examples-3.png   The first copied pose (note that only two bones are selected and hence copied). | ../../../../_images/animation_armatures_posing_editing_copy-paste_examples-4.png   The pose pasted on the destination armature. | ../../../../_images/animation_armatures_posing_editing_copy-paste_examples-5.png   The pose mirror-pasted on the destination armature. |
| ../../../../_images/animation_armatures_posing_editing_copy-paste_examples-6.png   The same pose as above is copied, but this time with all bones selected. | ../../../../_images/animation_armatures_posing_editing_copy-paste_examples-7.png   The pose pasted on the destination armature. | ../../../../_images/animation_armatures_posing_editing_copy-paste_examples-8.png   The pose mirror-pasted on the destination armature. |
user: Give a detailed overview of World Output Node: syntax, arguments, return values, common patterns.

assistant: # World Output Node

[image reference removed]

The *World Output* node is used to output color information to the scene’s
[World](../../lights/world.xhtml).

To access this node, change the *Shader Type* in the header of
the Shader Editor to *World*.
user: Describe Cursor from the Blender manual or Python API, including usage steps and snippets.

assistant: # Cursor

[image reference removed]

Cursor options.

While painting or sculpting a special cursor is shown to display information about the active brush.
The cursor is shown as a circle in the 3D Viewport, the radius of the circle matches the size of the brush.

The cursor can be disabled by toggling the checkbox in the panel’s header.

Cursor Color
:   Set the color of the brush ring while performing an add/positive stroke.

Inverse Color
:   In some paint/sculpt modes the brush can be negative and subtract information from the paint target;
    these brushes can be given a separate color.

Opacity Options
:   Depending on the paint or sculpt mode different overlays are shown within the cursor
    to give information on how the brush is textured.
    This is most commonly used to show the brush falloff with a gradient from the circle center to the perimeter.

    Alpha
    :   You can change the amount of transparency used
        when showing the texture using the slider.

    Override Overlay
    :   Allows you to turn off the viewport overlay during strokes.

    / Use Cursor Overlay
    :   Toggles whether to show or hide the given brush texture overlay.
user: Explain Select Linked in complete detail according to the official Blender documentation.

assistant: Selects all control points connected to the active control point.

This operator makes it easier to select or deselect entire segments of a curve, especially in
dense or complex curves, where manually selecting each point would be time-consuming.

### Select Linked Pick

Selects (`L`) or deselects (`Shift`-`L`) control points
connected to the control point nearest the mouse cursor.
user: Give a detailed overview of Header: syntax, arguments, return values, common patterns.

assistant: Show Only Selected
:   This option is only available if the object is in Edit Mode.
    When checked, only data for the selected geometry elements is shown.

Use Filter
:   Whether to use the filters that are defined in the Sidebar (see below).

### View Menu

Toolbar `T`
:   Show or hide the tab panel on the left for creating and manipulating markers and masks.

Sidebar `N`
:   Show or hide the [Sidebar](../interface/window_system/regions.html#ui-region-sidebar).

---

Internal Attributes
:   Display attributes with names starting with a period that are meant for internal use.

---

Area
:   Area controls. See the [user interface](../interface/window_system/areas.html)
    documentation for more information.
user: Show practical ways to work with Inputs in a Blender add-on or script – include code.

assistant: Mesh
:   Standard geometry input.

Shade Smooth
:   When true, the selected faces will be marked to render smooth shaded.
    Otherwise the faces will be rendered flat shaded.

Selection
:   Boolean input for selecting which faces will have the Shade Smooth value applied.
user: Give a detailed overview of NodeCombineBundle(NodeInternal): syntax, arguments, return values, common patterns.

assistant: # NodeCombineBundle(NodeInternal)

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

*class* bpy.types.NodeCombineBundle(*NodeInternal*)
:   Combine multiple socket values into one.

    active_index
    :   Index of the active item

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

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

    define_signature
    :   This node defines a bundle signature that should be used by other nodes

        Type:
        :   boolean, default False

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

assistant: The Multiresolution Modifier can be used for subdivision based sculpting.
This means the object will be subdivided, similar to the
[Subdivision Surface Modifier](../../../modeling/modifiers/generate/subdivision_surface.html),
only that the subdivisions can be freely sculpted for very high resolution detailing.

[image reference removed]

This technique has the advantage of sculpting with multiple resolutions,
meaning you have the ability to sculpt on any level of subdivision.
This allows to add a much higher resolution of details for rendering and sculpting,
while displaying lower resolutions for better viewport performance.
It also allows sculpting on lower resolutions any time for broader changes.

As an example, you can sculpt general proportions in subdivision level 1,
add high resolution details in level 4 and switch back to subdivision 1 to correct the shape further.

The disadvantages are that you may end up with some mesh distortions
because the topology is not dynamic like voxel remeshing and dyntopo.
The topology should also not be changed once already subdivided,
since any edits to the base mesh will result in corrupted subdivision details.

Additional brushes like the [Multires Eraser](../brushes/multires_displacement_eraser.html) and
[Multires Smear](../brushes/multires_displacement_smear.html) are recommended for adjustments.

Here are general shortcuts to use the feature.

- Step up one multires level `Alt`-`2`
- Step down one multires level `Alt`-`1`
- Set multires level / Create multires modifier `Ctrl`-`0` to `Ctrl`-`5`
user: Explain Layer in complete detail according to the official Blender documentation.

assistant: # Layer

This brush is similar to [Draw](clay.html),
except that the height capped.
This creates the appearance of a flat layer.

It is recommended to use the [Persistent](#bpy-types-brush-use-persistent) setting
and regularly [Set Persistent Base](#bpy-ops-sculpt-set-persistent-base),
so that multiple strokes to not add on top of each other.
user: Show practical ways to work with File Context in a Blender add-on or script – include code.

assistant: bpy.context.active_file
:   Type:
    :   [`bpy.types.FileSelectEntry`](bpy.types.FileSelectEntry.html#bpy.types.FileSelectEntry "bpy.types.FileSelectEntry")

bpy.context.selected_files
:   Type:
    :   sequence of [`bpy.types.FileSelectEntry`](bpy.types.FileSelectEntry.html#bpy.types.FileSelectEntry "bpy.types.FileSelectEntry")

bpy.context.asset_library_reference
:   Type:
    :   [`bpy.types.AssetLibraryReference`](bpy.types.AssetLibraryReference.html#bpy.types.AssetLibraryReference "bpy.types.AssetLibraryReference")

bpy.context.asset
:   Type:
    :   [`bpy.types.AssetRepresentation`](bpy.types.AssetRepresentation.html#bpy.types.AssetRepresentation "bpy.types.AssetRepresentation")

bpy.context.selected_assets
:   Type:
    :   sequence of [`bpy.types.AssetRepresentation`](bpy.types.AssetRepresentation.html#bpy.types.AssetRepresentation "bpy.types.AssetRepresentation")

bpy.context.id
:   Type:
    :   [`bpy.types.ID`](bpy.types.ID.html#bpy.types.ID "bpy.types.ID")

bpy.context.selected_ids
:   Type:
    :   sequence of [`bpy.types.ID`](bpy.types.ID.html#bpy.types.ID "bpy.types.ID")
user: What is Options and how is it used in Blender Python scripting?

assistant: Text
:   The actual text displayed.
    Text is limited to 512 characters.

Wrap Width
:   Wraps the text by the percentage of the frame width,
    setting this to zero disables word wrapping.

### Style

Font
:   [Data-Block Menu](../../../../interface/controls/templates/data_block.xhtml#ui-data-block) to choose which font-file is used to render the text.

    (Bold)
    :   Use a bold font face with a strong/thick visual appearance.

    (Italic)
    :   Use an italicized font face with a slanted visual appearance.

Size
:   Size of the text.

Color
:   The text color.

#### Outline

Creates a line enclosing the shape of the text.

Color
:   The color and opacity of the outline.

Width
:   The thickness of the outline.

#### Shadow

Creates a shadow under the text.

Color
:   The color and opacity of the shadow.

Angle
:   Defines the position of the shadow as an angle, 0° being to the right and 90° being below.

Offset
:   Amount to shift the shadow compared to the normal text.

Blur
:   Amount to blur the shadow.

#### Box

Creates a background for the text to improve the readability and clarity of text in some situations.

Color
:   The color and opacity of the box.

Margin
:   The distance the box boundaries extends from the boundaries of the font glyphs.
    The distance is measured as a factor of the image’s width.

Roundness
:   Rounds the corners of the box, defined as a factor of box height.

### Layout

Location X, Y
:   Positions the text on the X, Y axis.

Alignment X, Y
:   Controls the horizontal positioning of text within the text strip.
    The text content can be aligned to the left, center, or right.

Anchor X, Y
:   Horizontal (X) or vertical (Y) “origin” of the text relative to the location.
user: Show practical ways to work with Contribute in a Blender add-on or script – include code.

assistant: # Contribute

This guide uses French (`fr`) as an example, but other
[language codes](https://www.gnu.org/software/gettext/manual/html_node/Usual-Language-Codes.html) can be used.
Replace `/fr` in this guide with the code for your desired language.

The currently available languages can be checked on the
[online translation interface](https://translate.blender.org/projects/blender-manual/manual/)
or in the [underlying git repository](https://projects.blender.org/blender/blender-manual-translations).
user: Show practical ways to work with Components of a Catalog in a Blender add-on or script – include code.

assistant: Each catalog consists of a *catalog path*, a *UUID*, and a *simple name*.
Normally you would only deal with the catalog path; the rest is for internal Blender
use and/or for emergency situations.

### Catalog Path

The path of a catalog determines where in the catalog hierarchy the catalog is shown.
Examples are `Characters/Ellie/Poses/Hand` or `Kitbash/City/Skyscrapers`,
which would result in the following catalog tree.
The highlighted catalog has path `Characters/Ellie/Poses/Hand`.

[image reference removed]

Example tree of asset catalogs.

### UUID

Each catalog has a [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier),
which is normally hidden from the user interface
(enable Developer Extras and the experimental Asset Debug Info option to see them).
This is what is stored in the asset, and what determines the “identity” of the catalog.
As a result, a catalog can be renamed or moved around (i.e. you can change its path),
and all assets that are contained in it will move along with it.
This only requires a change to the catalog itself, and not to any asset blend-file.

### Simple Name

Each catalog has an optional *simple name*. This name is stored along with the UUID in each asset.
The purpose is to make it possible for humans to recognize the catalog the asset was assigned to,
even when the *catalog definition file* (see below) is lost.

Like the UUID, the simple name is normally hidden from the user interface.
Enable Developer Extras in the interface preferences to make it visible in the Asset Browser.
user: Explain Workflow in complete detail according to the official Blender documentation.

assistant: The process of multi camera editing can be rather easy in the Video Sequencer if properly setup.
The following guide shows the basic steps to setup a basic multi camera editing workflow.

1. First you are going to want to add in each of your video strips.
2. Next, you will want to sync all your cameras by either using
   [Audio Waveforms](../sound.xhtml) or by the movement of objects.
3. Split the editor into many [Previews](../../../../../editors/video_sequencer/preview/index.xhtml), one for each input track.
   Then change the [Display Channel](../../../../../editors/video_sequencer/preview/sidebar.xhtml#bpy-types-spacesequenceeditor-display-channel)
   of each of the previews to the channel number of the input track.
4. Add a Multicam Selector strip *above* all the video channel tracks.

   After completing these steps you should get something similar to the following image:

   [image reference removed]

   Multi-camera editing setup.
5. Now select the Multicam strip, if you take a look at the strip options (in the Sidebar),
   you will notice, that Multicam is a rather simple effect strip:
   It just takes a selected channel as its input. That is all.
   The magic comes with the convenient keyboard layout.
6. When you select the Multicam strip, the keys `1` to `9` are mapped to the cut buttons.
   So, select the Multicam strip and start playback and press the keys
   for the correct input while watching the individual cameras.
7. You will end up with a small Multicam Selector strip for every cut.

In reality, it boils down to: watch a few seconds to see, what is coming,
watch it again and do a rough cut using the number keys.
Then fine-tune the placement by selecting the outer handles of two neighboring Multicam for A/B rolling.
user: Provide the full official documentation entry for Viewing Color Attributes, preserving all code examples.

assistant: Color Attributes can be used in a material node tree using the [Color Attribute Node](../../render/shader_nodes/input/vertex_color.xhtml).

Color Attributes can be viewed in the 3D viewport using the Workbench render engine.
To use such feature, set the 3D Viewport to [Solid Shading](../../editors/3dview/display/shading.xhtml#dview-shading-solid)
and select the *Attribute* Color option.
user: Describe Python Wheels from the Blender manual or Python API, including usage steps and snippets.

assistant: # Python Wheels

[Python wheels](https://pythonwheels.com/) (`*.whl`) are the standard way of distributing Python modules.
They are supported in Blender to make self-contained Python [Extensions](index.xhtml#extensions-index).
user: Provide the full official documentation entry for Outputs, preserving all code examples.

assistant: Fresnel
:   Dielectric Fresnel weight, useful for example for layering diffuse and
    glossy shaders to create a plastic material. This is like the Fresnel node,
    except that the input of this node is in the often more convenient 0.0 to 1.0 range.

Facing
:   Weight that blends from the first to the second shader
    as the surface goes from facing the viewer to viewing it at a grazing angle.
user: Describe Corners of Face Node from the Blender manual or Python API, including usage steps and snippets.

assistant: # Corners of Face Node

[image reference removed]

Selects a corner of a face and outputs its index.

This node is a bit special because it operates in two different domains.
First, it evaluates a *Weight* for each corner in the geometry.
Then, for each item in the context domain, it will:

- Pick a face from the geometry based on the *Face Index*.
- Find the corners of this face.
- Sort these corners by their associated weight.
- Pick a corner from the above sorted list based on the *Sort Index*,
  where 0 means the corner with the lowest weight,
  1 means the corner with the second-lowest weight and so on.
- Output the geometry-wide index of this corner.
user: Provide the full official documentation entry for Components of a Catalog, preserving all code examples.

assistant: Each catalog consists of a *catalog path*, a *UUID*, and a *simple name*.
Normally you would only deal with the catalog path; the rest is for internal Blender
use and/or for emergency situations.

### Catalog Path

The path of a catalog determines where in the catalog hierarchy the catalog is shown.
Examples are `Characters/Ellie/Poses/Hand` or `Kitbash/City/Skyscrapers`,
which would result in the following catalog tree.
The highlighted catalog has path `Characters/Ellie/Poses/Hand`.

[image reference removed]

Example tree of asset catalogs.

### UUID

Each catalog has a [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier),
which is normally hidden from the user interface
(enable Developer Extras and the experimental Asset Debug Info option to see them).
This is what is stored in the asset, and what determines the “identity” of the catalog.
As a result, a catalog can be renamed or moved around (i.e. you can change its path),
and all assets that are contained in it will move along with it.
This only requires a change to the catalog itself, and not to any asset blend-file.

### Simple Name

Each catalog has an optional *simple name*. This name is stored along with the UUID in each asset.
The purpose is to make it possible for humans to recognize the catalog the asset was assigned to,
even when the *catalog definition file* (see below) is lost.

Like the UUID, the simple name is normally hidden from the user interface.
Enable Developer Extras in the interface preferences to make it visible in the Asset Browser.
user: Show practical ways to work with What is an Asset Library? in a Blender add-on or script – include code.

assistant: An asset library is a directory on your drive that is registered in the Preferences as an asset library.
Registering it means that you give the library a name (like “Sprite Fright”)
and the location on drive (like `/home/sybren/projects/sprite-fright/assets`).

[image reference removed]

Name and Location of asset libraries in the Preferences.

Once registered, you can select the asset library in the Asset Browser.
All the blend-files in the asset library will be scanned for assets,
and all those assets will be shown in the Asset Browser.

The blend-files can be directly in the top-level directory of the asset library, or in any subdirectory.
The on-drive organization of asset libraries is all up to you. Regardless of which blend-file contains the assets,
each asset can be assigned a **catalog**. For more info about how to organize your assets
this way, see [Asset Catalogs](catalogs.xhtml).
user: Explain Mouse in complete detail according to the official Blender documentation.

assistant: Emulate 3 Button Mouse
:   Blender can be configured to work with pointing devices which do not have an `MMB`.
    The functionality of the three mouse buttons by holding `Alt`-`LMB`.

    Mouse/Keyboard combinations referenced in this manual
    can be expressed with the combinations shown in the table. For example:

    `MMB` drag becomes `Alt`-`LMB` drag for example.

    Modifier
    :   The modifier key to press to emulate the middle mouse keybindings.
        This option is unsupported on Microsoft Windows.

        Alt:
        :   Use the `Alt` key to emulate the middle mouse button.

        OSKey:
        :   Use the `OSKey` to emulate the middle mouse button.

            This has the advantage that it doesn’t conflict with existing `Alt`-`MMB` shortcuts,
            noted above.

Continuous Grab
:   This feature is used to prevent the problem where an action such as moving objects or panning a view,
    is limited by your screen bounds.

    This is done by warping the mouse within the view.

Release Confirms
:   Dragging `LMB` on an object will move it.
    To confirm this (and other) transform, an `LMB` is necessary by default.
    When this option is activated, the release of `LMB` acts as confirmation of the transform.

Double Click Speed
:   The time in milliseconds to trigger a double click.

Mouse Drag Threshold
:   The number of pixels that a User Interface element has to be moved before it is recognized by Blender,
    values below this will be detected as click events.

Tablet Drag Threshold
:   The drag threshold for tablet events.

Drag Threshold
:   The drag threshold for non mouse/tablet events (keyboard or [NDOF](../../glossary/index.html#term-NDOF) for example).

    This affects [Pie Menu on Drag](keymap.html#keymap-pref-py-menu-on-drag) keymap preference.

Motion Threshold
:   The number of pixels the cursor must be moved before the movement is registered.
    This is helpful for tablet pens that are a lot more difficult to keep still,
    then this could help to reduce stuttering of the cursor position.
user: Describe Bpy.Types.Stripsmeta from the Blender manual or Python API, including usage steps and snippets.

assistant:  start frame for the new strip length ( int in [ -inf , inf ] , ( optional ) ) – Length of the strip in frames, or the length of each strip if multiple are added input1 ( Strip , (optional)) – First input strip for effect input2 ( Strip , (optional)) – Second input strip for effect Returns : New Strip Return type : Strip remove ( sequence ) ¶ Remove a Strip Parameters : sequence ( Strip , (never None)) – Strip to remove classmethod bl_rna_get_subclass ( id , default = None , / ) ¶ Parameters : id ( str ) – The RNA type identifier. Returns : The RNA type or default when not found. Return type : bpy.types.Struct 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 Inherited Properties ¶ bpy_struct.id_data Inherited Functions ¶ bpy_struct.as_pointer bpy_struct.driver_add bpy_struct.driver_remove bpy_struct.get bpy_struct.id_properties_clear bpy_struct.id_properties_ensure bpy_struct.id_properties_ui bpy_struct.is_property_hidden bpy_struct.is_property_overridable_library bpy_struct.is_property_readonly bpy_struct.is_property_set bpy_struct.items bpy_struct.keyframe_delete bpy_struct.keyframe_insert bpy_struct.keys bpy_struct.path_from_id bpy_struct.path_from_module bpy_struct.path_resolve bpy_struct.pop bpy_struct.property_overridable_library_set bpy_struct.property_unset bpy_struct.rna_ancestors bpy_struct.type_recast bpy_struct.values References ¶ MetaStrip.strips Next StripsTopLevel(bpy_struct) Previous StripTransform(bpy_struct) Copyright &#169; Blender Authors Made with Furo Report issue on this page On this page StripsMeta(bpy_struct) StripsMeta StripsMeta.new_clip() StripsMeta.new_mask() StripsMeta.new_scene() StripsMeta.new_image() StripsMeta.new_movie() StripsMeta.new_sound() StripsMeta.new_meta() StripsMeta.new_effect() StripsMeta.remove() StripsMeta.bl_rna_get_subclass() StripsMeta.bl_rna_get_subclass_py() Inherited Properties Inherited Functions References
user: Explain Life-Time of Python Objects Wrapping Blender Data in complete detail according to the official Blender documentation.

assistant: Typically, Python objects representing (wrapping) Blender data have a limited life-time.
They are created on-demand, and deleted as soon as they are not used in Python anymore.

This means that storing python-only data in these objects should not be done for anything that
requires some form of persistence.

There are some exceptions to this rule. For example, IDs do store their Python instance, once created,
and re-use it instead of re-creating a new Python object every time they are accessed from Python.
And modal operators will keep their instance as long as the operator is running.
However, this is done for performances purpose and is considered an internal implementation detail.
Relying on this behavior from Python code side for any purpose is not recommended.

Further more, Blender may free its internal data, in which case it will try to invalidate a known
Python object wrapping it. But this is not always possible, which can lead to invalid memory access and
is another good reason to never store these in Python code in any persistent way.
See also the [troubleshooting crashes](info_gotchas_crashes.html#troubleshooting-crashes) documentation.
user: Explain Light Settings (Cycles) in complete detail according to the official Blender documentation.

assistant: # Light Settings (Cycles)

Next to lighting from the background and any object with an emission shader,
lights are another way to add light into the scene.
The difference is that they are not directly visible in the rendered image,
and can be more easily managed as objects of their own type.
user: Show practical ways to work with Details in a Blender add-on or script – include code.

assistant: Although the process is quite intuitive,
the principles behind *Extrude* are fairly elaborate as discussed below:

- First, the algorithm determines the outside edge loop of the extrude; that is,
  which among the selected edges will be changed into faces. By default (see below),
  the algorithm considers edges belonging to two or more selected faces as internal, and hence not part of the loop.
- The edges in the edge loop are then changed into faces.
- If the edges in the edge loop belong to only one face in the complete mesh,
  then all of the selected faces are duplicated and linked to the newly created faces. For example,
  rectangles will result in parallelepipeds during this stage.
- In other cases, the selected faces are linked to the newly created faces but not duplicated.
  This prevents undesired faces from being retained “inside” the resulting mesh.
  This distinction is extremely important since it ensures the construction of consistently coherent,
  closed volumes at all times when using *Extrude*.
- When extruding completely closed volumes (like e.g. a cube with all its six faces),
  extrusion results merely in a duplication, as the volume is duplicated, without any link to the original one.
- Edges not belonging to selected faces, which form an “open” edge loop,
  are duplicated and a new face is created between the new edge and the original one.
- Single selected vertices which do not belong to selected edges
  are duplicated and a new edge is created between the two.
user: Describe Editor Layout from the Blender manual or Python API, including usage steps and snippets.

assistant: The Video Sequencer is composed of multiple regions.
They are described in more detail in the next sections.
Figure 1 shows the combined *Sequencer & Preview* view type:

[image reference removed]

Figure 1: The Video Sequencer Editor shown in the Sequencer & Preview view type.

Header
:   Contains menus and buttons for interacting with the editor.
    The header changes slightly depending on the selected view type (see below).

Footer
:   Contains menus and buttons for interacting with animation playback.

Preview
:   Shows the output of the Sequencer at the time of the Playhead.

Sequencer
:   Shows a timeline for managing the montage of strips.

Sidebar
:   Shows the properties of the active strip.
    It’s divided into panels and tabs. Toggle on or off with `N`.

Toolbar
:   Shows a list of tools. Toggle on or off with `T`.
user: Show practical ways to work with GeometryNodeEdgePathsToSelection(GeometryNode) in a Blender add-on or script – include code.

assistant: # GeometryNodeEdgePathsToSelection(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.GeometryNodeEdgePathsToSelection(*GeometryNode*)
:   Output a selection of edges by following paths across mesh edges

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

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

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

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

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

This directory will be kept between upgrades but will be removed if the extension is uninstalled.
user: How do I use Decimate Geometry in Blender? Include parameters, examples, warnings and best practices.

assistant: Reduces the face count of the selected geometry while minimizing shape changes.

Ratio
:   The target triangle count ratio. For example, enter 0.4 to keep collapsing edges
    until the triangle count is 40% of the original.

Vertex Group
:   Use the active vertex group when choosing which edges to collapse.
    The higher the vertex weights for an edge, the more likely it is to be chosen,
    even taking priority over “better” (shorter) candidates.

    Weight
    :   Factor by which to multiply the vertex weights.

    Invert
    :   Inverts the vertex weights, making edges with *lower* weights get collapsed first.

Symmetry
:   Maintain symmetry on either the *X*, *Y*, or *Z* axis.
user: What is Technical Details and how is it used in Blender Python scripting?

assistant: In the Soft Body world, vertices of meshes are treated as particles having a mass.
Their movement is determined by the forces affecting them. Beside other forces
the individual particles can interact with another along edges using a physical model
which is very close to shock absorbers used in cars. The working parts are:

- A spring trying to keep the particles at a certain distance.
  How hard the spring tries to do that is controlled by the soft body parameter *Stiffness*.
- A damping element to calm the movement down.
  The resistance the element builds up against motion is controlled by the soft body parameter *Damping*.
user: How do I use Inherited Properties in Blender? Include parameters, examples, warnings and best practices.

assistant: |  |  |
| --- | --- |
| - [`bpy_struct.id_data`](bpy.types.bpy_struct.html#bpy.types.bpy_struct.id_data "bpy.types.bpy_struct.id_data") | - [`PropertyGroup.name`](bpy.types.PropertyGroup.html#bpy.types.PropertyGroup.name "bpy.types.PropertyGroup.name") |