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

assistant: # Tracks

A track plays one or more actions in sequence. You can create multiple tracks to play
several actions at the same time.

[image reference removed]

NLA Tracks and Strips.

The track region has the following properties:

Disable NLA stack (checkbox in blue object header)
:   When unchecked, mutes all the tracks except the Action Track.

Track name
:   Double-click to change. (Not possible for the Action Track, as this one simply displays the
    name of the action.)

Mute (checkbox in gray track header)
:   When unchecked, the track stops contributing to the animation. Its strips receive a dotted outline
    to indicate this. Note that you can also mute individual strips.

Lock (padlock icon)
:   Prevents changes from being made to this track.
    This is useful, for example, if you want to move the strips in all the tracks except for a few.

Solo (star icon)
:   Mutes all other tracks, including the Action Track, so that only this track contributes
    to the animation. This is useful for inspecting the track without any distractions from others.
user: Explain Inputs in complete detail according to the official Blender documentation.

assistant: Start/End Frame
:   Start frame and End frame of the range of time specifying the values
    the output should last. This range becomes the X axis of the graph.
    The time input could be reversed by specifying a start frame greater than the end frame.
user: What is Inputs and how is it used in Blender Python scripting?

assistant: Geometry
:   Standard geometry input, which is used as the default bake item.
    More bake items can be added by dragging sockets into the blank socket or in the *Bake Items* panel.
    Items can be renamed by `Ctrl`-`LMB` on the socket name or in the nodes *Properties* panel.
user: What is SpacePreferences(Space) and how is it used in Blender Python scripting?

assistant: # SpacePreferences(Space)

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

*class* bpy.types.SpacePreferences(*Space*)
:   Blender preferences space data

    filter_text
    :   Search term for filtering in the UI

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

    filter_type
    :   Filter method

        - `NAME`
          Name – Filter based on the operator name.
        - `KEY`
          Key-Binding – Filter based on key bindings.

        Type:
        :   enum in [`'NAME'`, `'KEY'`], default `'NAME'`

    show_region_ui
    :   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

    *classmethod* draw_handler_add(*callback*, *args*, *region_type*, *draw_type*)
    :   Add a new draw handler to this space type.
        It will be called every time the specified region in the space type will be drawn.
        Note: All arguments are positional only for now.

        Parameters:
        :   - **callback** (*Callable**[**...**,* *Any**]*) – A function that will be called when the region is drawn.
              It gets the specified arguments as input, it’s return value is ignored.
            - **args** (*tuple**[**Any**,* *...**]*) – Arguments that will be passed to the callback.
            - **region_type** (*str*) – The region type the callback draws in; usually `WINDOW`. ([`bpy.types.Region.type`](bpy.types.Region.html#bpy.types.Region.type "bpy.types.Region.type"))
            - **draw_type** (*str*) – Usually `POST_PIXEL` for 2D drawing and `POST_VIEW` for 3D drawing. In some cases `PRE_VIEW` can be used. `BACKDROP` can be used for backdrops in the node editor.

        Returns:
        :   Handler that can be removed later on.

        Return type:
        :   object

    *classmethod* draw_handler_remove(*handler*, *region_type*)
    :   Remove a draw handler that was added previously.

        Parameters:
        :   - **handler** (*object*) – The draw handler that should be removed.
            - **region_type** (*str*) – Region type the callback was added to.
user: How do I use Outputs in Blender? Include parameters, examples, warnings and best practices.

assistant: Edge Index
:   The geometry-wide index of the selected edge. You can pass this to the
    [Evaluate at Index Node](../../utilities/field/evaluate_at_index.xhtml) or the
    [Sample Index Node](../../geometry/sample/sample_index.xhtml) (with the domain set to Edge)
    to retrieve details about the edge.

    If the vertex has no connected edges, *Edge Index* will be zero.

Total
:   The number of edges connected to the selected vertex.
user: How do I use Outputs in Blender? Include parameters, examples, warnings and best practices.

assistant: Color
:   Gives the color of the smoke inside the [Fluid Domain](../../../physics/fluid/type/domain/index.html).
    The color and vector outputs are the same. The Factor output is an average of the channels.

Density
:   Gives a scalar defining the density of any smoke inside
    the [Fluid Domain](../../../physics/fluid/type/domain/index.html).

Flame
:   Gives a scalar defining the density of any fire inside
    the [Fluid Domain](../../../physics/fluid/type/domain/index.html).
    All three outputs are the same.

Temperature
:   Gives a scalar defining the temperature of the volume. Values in the range 0 - 1 map to 0 - 1000 kelvin.
    This may be used to render physically-based fire with the Blackbody or Principled Volume shaders.
    All three outputs are the same.
user: Show practical ways to work with Reusing Existing Materials in a Blender add-on or script – include code.

assistant: Blender is built to allow you to reuse *anything*, including material settings,
between many objects. Instead of creating duplicate materials,
you can simply reuse an existing material.
There are several ways to do this using the Material’s data-block menu:

*Single Object* – With the object selected, click the sphere located to the left of the Material name.
A pop-up appears showing all the materials available in the current blend-file.
To use one, just click on it.

*Multiple Objects* – In the 3D Viewport, with `Ctrl`-`L`
you can quickly link all selected objects to the material (and other aspects)
of the [active object](../../scene_layout/object/selecting.html#object-active).
Very useful if you need to set a large number of objects to the same material;
just select all of them,
then the object that has the desired material, and `Ctrl`-`L` links them to that “parent”.
user: Show practical ways to work with Outputs in a Blender add-on or script – include code.

assistant: Edge Index
:   The geometry-wide index of the selected edge. You can pass this to the
    [Evaluate at Index Node](../../utilities/field/evaluate_at_index.html) or the
    [Sample Index Node](../../geometry/sample/sample_index.html) (with the domain set to Edge)
    to retrieve details about the edge.

    If the vertex has no connected edges, *Edge Index* will be zero.

Total
:   The number of edges connected to the selected vertex.
user: Show practical ways to work with Select Grouped in a Blender add-on or script – include code.

assistant: Selects nodes that share similar properties with the active node.

- **Type**: Select all nodes of the same type (e.g. all *Math* nodes).
- **Color**: Select nodes with the same custom [color](node_editors.html#bpy-types-node-color).
  (This refers to user-assigned editor colors, not the color data processed by nodes.)
- **Prefix/Suffix**: Select nodes whose names match the same starting or ending text.
user: How do I use Nudge in Blender? Include parameters, examples, warnings and best practices.

assistant: # Nudge

Moves vertices in the direction of the brush stroke.

Similar to the [Snake Hook](snake_hook.html) brush,
but instead only moves the geometry along the surface (using the area plane).
This is useful for grabbing geometry along curved surfaces,
without making too impactful changes to the overall object shape.
user: How do I use Dope Sheet Overlays in Blender? Include parameters, examples, warnings and best practices.

assistant: # Dope Sheet Overlays

Clicking  (Show Overlays) toggles all overlays in the Dope Sheet.

The drop-down button displays a popover with more detailed settings, which are described below.

Show Scene Strip Range
:   When using [scene time synchronization](../../../interface/window_system/workspaces.html#bpy-types-workspace-use-scene-time-sync)
    in the [Sequence Editor](../../video_sequencer/index.html), display the range of the current scene strip.
user: Show practical ways to work with BuildModifier(Modifier) in a Blender add-on or script – include code.

assistant: # BuildModifier(Modifier)

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

*class* bpy.types.BuildModifier(*Modifier*)
:   Build effect modifier

    frame_duration
    :   Total time the build effect requires

        Type:
        :   float in [1, 1.04857e+06], default 100.0

    frame_start
    :   Start frame of the effect

        Type:
        :   float in [-1.04857e+06, 1.04857e+06], default 1.0

    seed
    :   Seed for random if used

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

    use_random_order
    :   Randomize the faces or edges during build

        Type:
        :   boolean, default False

    use_reverse
    :   Deconstruct the mesh instead of building it

        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: Describe Main Features from the Blender manual or Python API, including usage steps and snippets.

assistant: Modular rigging
:   Rigify build blocks can be mixed together to rig any character you want.
    If you need to build a character with five arms and one leg,
    Rigify can handle it for you creating all the required complex controls system
    (FK, IK, and all the relative snapping tools and the UI) in few seconds.

Nondisruptive re-rig
:   If the generated rig doesn’t fit all the features you need or, for example,
    you decide to add something more to your character (like a sixth arm or a tail),
    you can re-generate your rig without losing your previously generated features and your animation data.

Advanced and flexible feature set for character animation
:   The included rig samples (limbs, spines, tails, fingers, faces…) adds to all the stretchy FK/IK features
    a direct deformation secondary layer that lets you flex, bend and deform the character as you like
    through interactive Bendy Bones controls.

Shareable animation through all Rigify rigs
:   Since the control system is generated by Rigify, if you share a meta-rig through different characters
    you will be able to share data between them even if they have different proportions.

Extendable feature set
:   You can save and encode your meta-rigs to a button to have them available at any time
    without recreating it by hand or share your meta-rigs with other people.
    Through Python scripting you can also extend Rigify with new Rigify types or new rig samples
    by implementing your own [feature set](feature_sets.xhtml) package.

Ready to go
:   Once you generate your rig you won’t need Rigify or any other add-on to use it.
user: Show practical ways to work with Fill Tool in a Blender add-on or script – include code.

assistant: # Fill Tool

The Fill tool is used to automatically fill closed strokes areas.

The Fill tool uses any of the Grease Pencil *Fill* draw mode brushes.
Activating a brush from an asset shelf or brush selector will also activate this tool for convenience.
user: What is Object Modes and how is it used in Blender Python scripting?

assistant: # Object Modes

[image reference removed]

The Mode select menu.

Modes allow editing different aspects of objects. While Object Mode allows
you to position/rotate/scale them, Edit Mode allows changing their geometry,
Pose Mode allows posing them, and so on.

You can change the current mode using the *Mode* selector in the 3D Viewport header.
Which modes are available depends on the object’s type. The complete list
is shown below.

Apart from using the selector, you can also press `Ctrl`-`Tab` to bring up
a pie menu around the cursor for faster access. (If the selected object is an
[Armature](../../animation/armatures/introduction.html), this shortcut will instead
switch between Object Mode and Pose Mode.)

Pressing `Tab` will toggle Edit Mode for objects that support it.

Modes can affect many things in Blender:

- Each mode changes the header and Toolbar to show its own unique set of menus and tools.
  This also means it affects the available keyboard shortcuts.
- Modes can completely change the look of the viewport. For example, Weight Paint mode
  will shade the object to show its vertex weights, which are not normally visible.
- Modes can affect other editors. For example, the [UV Editor](../uv/introduction.html)
  can only be used if the 3D Viewport is in Edit Mode. In the
  [Properties](../properties_editor.html) editor, too, certain buttons and panels
  can only be used in certain modes.
user: What is FloatAttributeValue(bpy_struct) and how is it used in Blender Python scripting?

assistant: # FloatAttributeValue(bpy_struct)

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

*class* bpy.types.FloatAttributeValue(*bpy_struct*)
:   Floating-point value in geometry attribute

    value
    :   Type:
        :   float in [-inf, inf], default 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: What is Mirror and how is it used in Blender Python scripting?

assistant: The *Mirror Vertex Group* tool mirrors the weights
from one side of a perfectly symmetrical mesh to the opposite side.
Those vertices that have no corresponding vertex on the other side will not be affected.
But note, the weights are not transferred to the corresponding opposite bone weight group.

[image reference removed]

Mirror example.

Mirror Weights
:   With this option checked, every selected vertex receives
    the weight information of its symmetrical counterpart.
    If both vertices are selected, it will be a weight information exchange;
    if only one is selected, information from the unselected will overwrite the selected one.
    Information on weight is passed for the active group only,
    unless *All Groups* is checked, in which case it is passed for all groups.

Flip Group Names
:   Works with selected vertices that belong to vertex groups with “symmetrical names”
    (with components like “L”, “R”, “right”, “left”).
    All selected vertices that belong to the active group, or to the symmetrical of the active group,
    will have their assignation to that group replaced by an assignation to the symmetrical one;
    however, its weight will be preserved.
    If *All Groups* is checked, all assignations to these kind of groups
    will be replaced by the symmetrical counterpart, also keeping the old weights.

All Groups
:   Operate on all vertex groups, instead of the active one.

Topology Mirror
:   Mirror for meshes which are not fully symmetric (approximate mirror).
    See [here](../../modeling/meshes/tools/tool_settings.xhtml#bpy-types-mesh-use-mirror-topology) for more information.
user: Describe Erase Brushes from the Blender manual or Python API, including usage steps and snippets.

assistant: Erase brushes are the special types of brushes that uses Grease Pencil for *Erase* tools.
The brush can be changed in the Tool Settings.
Soft and hard eraser brushes are settings variations of the same *Erase Brush*.
You can create many brushes, each with unique settings to get different effects while erasing.
The *Erase Brush* has also other two special eraser types: point and stroke.
user: Show practical ways to work with AttributeGroupPointCloud(bpy_struct) in a Blender add-on or script – include code.

assistant: # AttributeGroupPointCloud(bpy_struct)

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

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

    active
    :   Active attribute

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

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

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

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

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

        Returns:
        :   New geometry attribute

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

    remove(*attribute*)
    :   Remove attribute from geometry

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

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

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

        Returns:
        :   Size, Size of the domain

        Return type:
        :   int in [0, inf]

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: R
:   The radial distance from the origin.

Phi
:   The azimuthal angle (horizontal rotation) around the Z axis, measured in radians.

Theta
:   The polar angle (vertical inclination) from the Z axis, measured in radians.
user: Explain NlaStrips(bpy_struct) in complete detail according to the official Blender documentation.

assistant: # NlaStrips(bpy_struct)

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

*class* bpy.types.NlaStrips(*bpy_struct*)
:   Collection of NLA Strips

    new(*name*, *start*, *action*)
    :   Add a new Action-Clip strip to the track

        Parameters:
        :   - **name** (*string**,* *(**never None**)*) – Name for the NLA Strip
            - **start** (*int in* *[**-inf**,* *inf**]*) – Start Frame, Start frame for this strip
            - **action** ([`Action`](bpy.types.Action.html#bpy.types.Action "bpy.types.Action"), (never None)) – Action to assign to this strip

        Returns:
        :   New NLA Strip

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

    remove(*strip*)
    :   Remove a NLA Strip

        Parameters:
        :   **strip** ([`NlaStrip`](bpy.types.NlaStrip.html#bpy.types.NlaStrip "bpy.types.NlaStrip"), (never None)) – NLA 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`](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 Internet Access in Blender? Include parameters, examples, warnings and best practices.

assistant: If the add-on needs to use internet, it must check for the (read-only) property `bpy.app.online_access`.
This option is controlled by Preferences, which can be overriding via command-line
(`--offline-mode` / `--online-mode`).

For better error messages, you can check also for `bpy.app.online_access_overriden`,
to determine whether users can turn [Allow Online Access](../../editors/preferences/system.xhtml#bpy-types-preferencessystem-use-online-access)
on the preferences, or not.
user: Show practical ways to work with Preview Snapping in a Blender add-on or script – include code.

assistant: # Preview Snapping

The icon toggles snapping;
you can also do this temporarily by holding `Ctrl` after starting to transform an image.

Images have multiple snap points; they can snap along their edges, corners, or center.

The drop-down arrow offers the following options:

Snap to
:   Borders
    :   Snap images to the edges of the render region.

    Center
    :   Snap images to the horizontal and vertical center lines of the render region.

    Other Strips
    :   Snap images to the snap points of other images.
user: Give a detailed overview of Normalize All: syntax, arguments, return values, common patterns.

assistant: For each vertex, this tool makes sure that the sum of the weights across
all vertex groups is equal to 1. This tool normalizes all of the vertex groups,
except for locked groups, which keep their weight values untouched.

Lock Active
:   Keep the values of the active group while normalizing all the others.
user: What is Properties and how is it used in Blender Python scripting?

assistant: Rounding Mode
:   Round:
    :   Outputs the closest integer to Float, rounding either up or down based on the value.

    Floor:
    :   Outputs the closest integer less than Float, always rounding down.

    Ceiling:
    :   Outputs the closest integer greater than Float, always rounding up.

    Truncate:
    :   Outputs the closest integer between Float and zero. For positive numbers, acts like Floor.
        For negative numbers, acts as Ceiling.
user: What is Importing and how is it used in Blender Python scripting?

assistant: Import geometry and curves to the OBJ format.

If there is a matching `.MTL` for the OBJ then its materials will be imported too.

### General

Scale
:   Value by which to scale the imported objects in relation to the world’s origin.

Clamp Bounding Box
:   OBJ-files often vary greatly in scale, this setting clamps the imported file to a fixed size.

Forward Axis, Up Axis
:   Since many applications use a different axis for ‘Up’, these are axis conversion for these settings,
    Forward and Up axes – By mapping these to different axes you can convert rotations
    between applications default up and forward axes.

    Blender uses Y Forward, Z Up (since the front view looks along the +Y direction).
    For example, it’s common for applications to use Y as the up axis, in that case -Z Forward, Y Up is needed.

### Options

Split By Object
:   Import each OBJ “object name” group (`o`) as a separate object.

Split By Group
:   Import each OBJ “object name” group (`g`) as a separate object.

Vertex Groups
:   Import OBJ groups as vertex groups.

Validate Meshes
:   Check the imported mesh for corrupt data and fix it if necessary.
    When disabled, erroneous data may cause crashes displaying or editing the meshes.
    This option will make the importing slower but is recommended, as data errors are not always obvious.

Detect Cyclic Curves
:   Joins curve endpoints if overlapping control points are detected (if disabled, no curves will be cyclic).

Path Separator
:   Character used to separate an object’s name into a hierarchical
    structure using [Collections](../../scene_layout/collections/index.xhtml).

### Materials

Material Name Collision
:   Behavior when the name of an imported material conflicts with an existing material.

    Make Unique:
    :   Import each USD material as a unique Blender material.

    Reference Existing:
    :   If a material with the same name already exists, reference that instead of importing.
user: Provide the full official documentation entry for External, preserving all code examples.

assistant: Screen Grab Size
:   Size of the captured image for reprojecting.

Quick Edit
:   Edit a snapshot of the viewport in an external image editor.

Apply
:   Project edited image back onto the object.

Apply Camera Image
:   Project an edited render from the active camera back onto the object.
user: Provide the full official documentation entry for Inputs, preserving all code examples.

assistant: Value
:   The immediate value of each primitive to blur.

Iterations
:   Number of repetitions of mixing value with neighbors. Each iteration is independent.
    Until one iteration is completed, its results are not used as a source for next blurring.

Weight
:   Weight of each primitive.
user: Describe VIEW3D_AST_brush_vertex_paint(AssetShelf) from the Blender manual or Python API, including usage steps and snippets.

assistant: # VIEW3D_AST_brush_vertex_paint(AssetShelf)

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

*class* bpy.types.VIEW3D_AST_brush_vertex_paint(*AssetShelf*)
:   *classmethod* brush_type_poll(*context*, *asset*)

    *static* draw_popup_selector(*layout*, *context*, *brush*, *show_name=True*)

    *static* get_shelf_name_from_context(*context*)

    *classmethod* has_tool_with_brush_type(*context*, *brush_type*)

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

assistant: [image reference removed]

The Envelope modifier.

Mode
:   Deform:
    :   Replaces the original stroke with the envelope shape.

    Segments:
    :   Add segments to create the envelope shape keeping the original stroke.

    Fill:
    :   Add segments to create the envelope without the original stroke.

Spread Length
:   The number of points to skip when creating the straight segments that define the envelope.

Thickness
:   The thickness of the generated stroke segments.

Strength
:   The Opacity of the generated stroke segments.

Material Index
:   Defines the material to use on the generated stroke segments.

Skip Segments
:   The Number of generated stroke segments to skip to reduce complexity.

### Influence Filters

See [Influence Filters](../introduction.html#grease-pencil-modifier-influence-filters).
user: What is Crease Angle and how is it used in Blender Python scripting?

assistant: # Crease Angle

A modifier based on the Crease Angle (angle between two adjacent faces).
If a stroke segment does not lie on a crease (i.e. the edge does not have the *Crease Angle nature*),
its properties are not touched by the modifier.

Angle Min, Max
:   The range of input values to the mapping.
    Out-of-range crease angle values will be clamped by
    the Min and Max angles and their corresponding property values.

[[image reference removed]](../../../../../../_images/render_freestyle_parameter-editor_line-style_modifiers_color_crease-angle_example.png)

Crease Angle modifier example by T.K.
([blend-file](https://archive.blender.org/wiki/2015/index.php/File:Render_freestyle_modifier_crease_angle.blend)).
user: What is Startup Scene and how is it used in Blender Python scripting?

assistant: # Startup Scene

After closing the [splash screen](../../interface/window_system/splash.xhtml),
the startup scene is displayed in the 3D Viewport (if no other blend-file was loaded).
This startup scene can be [customized](../../interface/window_system/topbar.xhtml#startup-file).

[image reference removed]

The startup scene.
user: Show practical ways to work with Examples in a Blender add-on or script – include code.

assistant: The left image shows the “wire” in place and after chroma keying has been applied. You will see you are left
with a blank space – it’s shown as a black line here but it will be alpha in your Blender output.

[image reference removed]

Inpaint Node example.

Inpainting fills in a couple of pixels using the surrounding image and voilà… your wire is removed.

Inpainting can also cover up a multitude of other minor sins
such as control points for motion capture: use it sparingly and it will amaze.
user: Explain Additional Workflows in complete detail according to the official Blender documentation.

assistant: 2D Grab Brush
:   If the [Falloff Shape](../../brush/falloff.html#bpy-types-brush-falloff-shape) is set to *Projected*,
    the brush can grab infinitely deep into the viewport.
    This is especially useful for much broader changes to a sculpt.

    [image reference removed]

    The stroke can also be started outside of the mesh (like in empty 3D space)
    and grab the vertices within the brush radius.
    This can be useful for sculpting flat and tube-like meshes.
user: What is MASK_UL_layers(UIList) and how is it used in Blender Python scripting?

assistant: # MASK_UL_layers(UIList)

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

*class* bpy.types.MASK_UL_layers(*UIList*)
:   draw_item(*_context*, *layout*, *_data*, *item*, *icon*, *_active_data*, *_active_propname*, *_index*)

    *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 Trace Image to Grease Pencil from the Blender manual or Python API, including usage steps and snippets.

assistant: # Trace Image to Grease Pencil

The *Trace Image to Grease Pencil* tool traces a black and white image and generates Grease Pencil strokes.
If the image is not black and white, it will be internally converted.
For better results, convert the images manually to black and white.
Also try to keep the resolution of the image small; high resolutions can produce very dense strokes.
user: How do I use Known Limitations in Blender? Include parameters, examples, warnings and best practices.

assistant: ### Non-Uniform Scale

A parent with non-uniform scale and rotation in relation to its child may cause a *shear* effect.

While this is supported by parenting, the shear will be lost when the parent is cleared since it
can’t be represented by location, scale and rotation.

If *Clear and Keep Transformation* moves the object, non-uniform scale is the most likely cause.
user: What is GeometryNodeFieldAtIndex(GeometryNode) and how is it used in Blender Python scripting?

assistant: # GeometryNodeFieldAtIndex(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.GeometryNodeFieldAtIndex(*GeometryNode*)
:   Retrieve data of other elements in the context’s geometry

    data_type
    :   Type:
        :   enum in [Attribute Type Items](bpy_types_enum_items/attribute_type_items.html#rna-enum-attribute-type-items), default `'FLOAT'`

    domain
    :   Domain the field is evaluated in

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

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: Move X, Y, Z
:   The amount to move the selection on the respected axis.

Orientation
:   Aligns the transformation axes to a specified orientation constraint.
    See [Transform Orientations](../../../../editors/3dview/controls/orientation.html) for more information.

Proportional Editing
:   The extruded face will affect nearby geometry.
    See [Proportional Editing](../../../../editors/3dview/controls/proportional_editing.html) for a full reference.
user: Give a detailed overview of ShaderNodeGamma(ShaderNode): syntax, arguments, return values, common patterns.

assistant: # ShaderNodeGamma(ShaderNode)

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

*class* bpy.types.ShaderNodeGamma(*ShaderNode*)
:   Apply a gamma correction

    *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: Show practical ways to work with spines.basic_tail in a Blender add-on or script – include code.

assistant: Defines a bendy and stretchy b-bones tail.

X, Y, Z (Boolean)
:   Specifies which local axis rotations should be replicated along the chain from each control
    bone to the following one.

Assign Tweak Layers
:   If enabled, allows placing the Tweak controls in different bone collections from the IK bones.
user: Provide the full official documentation entry for Outputs, preserving all code examples.

assistant: For each field input, a separate grid output is created that contains the
evaluated voxel data.
All output grids share the same topology as the input grid, ensuring that
they are aligned and compatible for further processing or combination.
user: Show practical ways to work with Selections and the Active Object in a Blender add-on or script – include code.

assistant: Blender distinguishes between two different states of selection:

[image reference removed]

Active object in yellow, selected object in orange, and unselected object in black.

In *Object Mode* the last (de)selected item is called the “Active Object”
and is outlined in yellow (the others are orange).
There is at most one active object at any time.

Many actions in Blender use the active object as a reference (for example linking operations).
If you already have a selection and need to make a different object the active one,
simply reselect it with `Shift`-`LMB`.

All other selected objects are just selected. You can select any number of objects.
In order to change a property or to perform an operation on all selected objects (bones, and sequencer strips)
hold `Alt`, while confirming.
user: Give a detailed overview of Options: syntax, arguments, return values, common patterns.

assistant: [[image reference removed]](../../../_images/modeling_modifiers_deform_laplacian-deform_panel.png)

The Laplacian Deform modifier.

Repeat
:   How many iterations to do to improve the found solution.
    The objective is to find the rotation of the differential coordinates
    preserving the best possible geometric details.
    Details are retained better if more iterations are used,
    however, it will take longer to calculate.

    Deform horse example
    [blend-file](https://archive.blender.org/wiki/2015/uploads/a/a2/Apinzonf_Deform_Horse_example1.blend).

    |  |  |  |  |
    | --- | --- | --- | --- |
    | <../../../_images/modeling_modifiers_deform_laplacian-deform_cactus09.png>   Original Model. | <../../../_images/modeling_modifiers_deform_laplacian-deform_cactus-repeat1.png>   Repeat: 1. | <../../../_images/modeling_modifiers_deform_laplacian-deform_cactus-repeat2.png>   Repeat: 2. | <../../../_images/modeling_modifiers_deform_laplacian-deform_cactus-repeat5.png>   Repeat: 5. |
    | <../../../_images/modeling_modifiers_deform_laplacian-deform_horse-repeat0.jpg>   Original Model. | <../../../_images/modeling_modifiers_deform_laplacian-deform_horse-repeat1.jpg>   Repeat: 1. | <../../../_images/modeling_modifiers_deform_laplacian-deform_horse-repeat2.jpg>   Repeat: 2. | <../../../_images/modeling_modifiers_deform_laplacian-deform_horse-repeat10.jpg>   Repeat: 10. |

Anchor Weights
:   The group of vertices that the user will use to transform the model.
    The weight of each vertex does not affect the behavior of the modifier,
    the method only takes into account vertices with weight greater than 0.

    Invert
    :   Inverts the influence of the selected vertex group, meaning that the group
        now represents vertices that will not be deformed by the modifier.

        The setting reverses the weight values of the group.

Bind
:   The *Bind* button is what tells the *Laplacian Deform* modifier to actually capture the geometry details
    of the object, so that altering the anchor vertices actually alters the shape of the deformed object.

Unbind
:   After binding the modifier, you may later decide to make changes to the *Anchors Vertex Group*.
    To do so you will first need to *Unbind* the modifier before binding it again.
user: Give a detailed overview of Examples: syntax, arguments, return values, common patterns.

assistant: ### Table

| Value | Group Index | Leading | Trailing | Total |
| --- | --- | --- | --- | --- |
| 1 | 7 | 1 | 0 | 6 |
| 3 | 7 | 4 | 1 | 6 |
| 2 | 7 | 6 | 4 | 6 |
| 1 | 3 | 1 | 0 | 3 |
| 0 | 3 | 1 | 1 | 3 |
| 2 | 3 | 3 | 1 | 3 |

A few examples of input values and the node’s results. One important take-away from this table
is that the specific values for the *Group Input* do not matter; it only matters that the
values are shared between elements.

### Stacking Boxes

[image reference removed]

Here, the node is used in combination with the [Random Value Node](../random_value.xhtml)
to create a stack of randomly scaled boxes. The *Group Index* input is not used, because all boxes
are meant to be in the same stack.

[image reference removed]

A slightly more complicated version of the previous example,
using the *Group Index* input to create three separate stacks.
user: Provide the full official documentation entry for Custom Camera, preserving all code examples.

assistant: # Custom Camera

In addition to the built-in camera types (Perspective, Orthographic and Panoramic cameras),
Cycles also supports implementing custom cameras using
[Open Shading Language](https://github.com/AcademySoftwareFoundation/OpenShadingLanguage) (OSL).

Custom cameras are implemented as OSL shaders. A camera shader receives a sensor position
as its input and outputs the corresponding ray’s position, direction and throughput.

OSL for shading and custom cameras are independent, so the latter can be used even when OSL shading
is disabled.
user: Describe Camera from the Blender manual or Python API, including usage steps and snippets.

assistant: Gizmo settings for [cameras](../../../render/cameras.xhtml).

Lens
:   Show the gizmo to adjust the focal length (for Perspective cameras)
    or orthographic scale (for Orthographic cameras).

Focus Distance
:   Enable the gizmo for adjusting the focus distance. To see this gizmo,
    you need to enable the Viewport Display ‣ Limits checkbox
    in the camera’s properties (green camera icon).
user: What is Inputs and how is it used in Blender Python scripting?

assistant: Geometry
:   Standard geometry input containing a mesh.

Material
:   The material to apply to the geometry.

Selection
:   Whether to change the material of each face.
    True values mean the material will be changed, false values mean it will remain the same.

    Note, volumes and point clouds only support a single material,
    in these cases a field input will be ignored.
user: How do I use Editing Text Objects in Blender? Include parameters, examples, warnings and best practices.

assistant: # Editing Text Objects

Editing text is quite different from other object types in Blender, and happens mainly in two areas.
First, the 3D Viewport, where you type your text, and have a few shortcuts, e.g. for applying
styles (see [Font](properties.html#modeling-text-character)) – note however, that most Blender shortcuts you know
in Edit Mode do not exist for texts. The second place is the Properties, especially the *Font* tab.

Editing text objects is similar to using a standard text editor but is not as
full-featured and has some differences.
The menu of the 3D Viewport header offers few options. You have no transform nor mirror tools, and so on.
To leave Edit Mode use `Tab` as it does not insert a tab character in the text,
but rather enters and exits Edit Mode, as with other object types.
user: How do I use ThemeCommon(bpy_struct) in Blender? Include parameters, examples, warnings and best practices.

assistant: # ThemeCommon(bpy_struct)

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

*class* bpy.types.ThemeCommon(*bpy_struct*)
:   Theme properties shared by different editors

    anim
    :   Type:
        :   [`ThemeCommonAnim`](bpy.types.ThemeCommonAnim.html#bpy.types.ThemeCommonAnim "bpy.types.ThemeCommonAnim"), (readonly, never None)

    curves
    :   Type:
        :   [`ThemeCommonCurves`](bpy.types.ThemeCommonCurves.html#bpy.types.ThemeCommonCurves "bpy.types.ThemeCommonCurves"), (readonly, never None)

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type