PGCRYPT/OpenBlender_Train huggingface dataset:
user: Give a detailed overview of Example: syntax, arguments, return values, common patterns.

assistant: [image reference removed]

Glass profile.

First, create a mesh representing the profile of your object.
If you are modeling a hollow object, it is a good idea to thicken the outline.
Fig. [Glass profile.](#fig-mesh-spin-glass) shows the profile for a wine glass we will model as a demonstration.

We will be rotating the object around the cursor in the top view,
so switch to the top view with `Numpad7`.

[image reference removed]

Glass profile, top view in Edit Mode, just before spinning.

Place the cursor along the center of the profile by entering Edit Mode
and selecting one of the vertices along the center, and snapping the 3D cursor to
that location with Mesh ‣ Snap ‣ Cursor to Selection.
(Fig. [Glass profile, top view in Edit Mode, just before spinning.](#fig-mesh-spin-glass-top)) shows the wine glass profile from
top view, with the cursor correctly positioned.

Select all the vertices with `A` and select the *Spin* tool from the Toolbar
and use the Gizmo to spin the vertices. Fig. [Spun profile.](#fig-mesh-spin-profile) shows the result of a successful spin.

### Angle

Spun profile.

|  |  |
| --- | --- |
| ../../../_images/modeling_meshes_tools_spin_spun-profile360.png   Spun profile using an angle of 360. | ../../../_images/modeling_meshes_tools_spin_spun-profile120.png   Spun profile using an angle of 120. |

### Duplicate

|  |  |
| --- | --- |
| ../../../_images/modeling_meshes_tools_spin_result.png   Result of spin operation. | ../../../_images/modeling_meshes_tools_spin_dubli.png   Result of *Duplicate* enabled. |

### Merge Duplicates

[image reference removed]

Duplicate vertices.

The spin operation leaves duplicate vertices along the profile.
You can select all vertices at the seam with Box select `B`
(shown in Fig. [Duplicate vertices.](#fig-mesh-screw-duplicate)) and perform a *Merge by Distance* operation.

Notice the selected vertex count before and after the *Merge by Distance* operation
`Vertex count after removing doubles`. If all goes well, the final vertex count
(38 in this example) should match the number of the original profile noted in
Mesh data ‣ Vertex and face numbers.
If not, some vertices were missed and you will need to weld them manually.
Or, worse, too many vertices will have been merged.

### Recalculate Normals

All that remains now is to recalculate the normals to the outside by selecting all vertices,
pressing `Alt`-`N` and validating *Recalculate Normals Outside* in the pop-up menu.
user: Show practical ways to work with Layers in a Blender add-on or script – include code.

assistant: The base layer is a mix between metal, diffuse, subsurface, and transmission components.
Most materials will use one of these components, though it is possible to smoothly mix
between them.

[image reference removed]

The metal component is opaque and only reflect lights. Diffuse is fully opaque, while
subsurface also involves light scattering just below the surface. Both diffuse and
subsurface sit below a specular layer. The transmission component includes both
specular reflection and refraction.

On top of all base layers there is an optional glossy coat. And finally the sheen layer
sits on top of all other layers, to add fuzz or dust.

Light emission can also be added. Light emits from below the coat and sheen layers,
to model for example emissive displays with a coat or dust.
user: What is CompositorNodeDoubleEdgeMask(CompositorNode) and how is it used in Blender Python scripting?

assistant: # CompositorNodeDoubleEdgeMask(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.CompositorNodeDoubleEdgeMask(*CompositorNode*)
:   Create a gradient between two masks

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

    update()

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: [image reference removed]

The node can be used to round the corners of simple 3D poly splines.

[image reference removed]

The node can be combined with the curve primitive nodes to make more interesting shapes.
user: Provide the full official documentation entry for Chaining, preserving all code examples.

assistant: By default all retrieved lines from the line set are chained together.
There are two basic chaining methods:

Method
:   Plain:
    :   The default chaining method; it creates simple chains.

    Sketchy:
    :   This chaining option allows for generating chains of feature edges with sketchy multiple strokes.
        Basically, it generates *Round* strokes instead of a single one.
        It is only really useful if you use some random-driven modifiers in the line style!

        Rounds
        :   It specifies the number of rounds in sketchy strokes.

Same Object
:   If true, only feature edges of the same object are joined.

Chaining can also be turned off to render each line separately,
which can be useful for line styles which depend on accurate representation of the line set.
user: Provide the full official documentation entry for Select Random, preserving all code examples.

assistant: # Select Random

Adds random items to the selection. The [Adjust Last Operation](../../../interface/undo_redo.xhtml#bpy-ops-screen-redo-last)
panel offers the following options:

Ratio
:   The ratio of items that should end up selected, e.g. 0.5 to select half of all items
    (that are not [hidden](../../../scene_layout/object/editing/show_hide.xhtml)).

    Note that the existing selection is ignored: if half of the items are already selected,
    setting *Ratio* to 0.1 won’t deselect anything, nor will it select 10% of the unselected
    items. Instead, it always picks 10% of *all* visible items and adds them to the selection.

Random Seed
:   A number that influences which specific items get picked.

Action
:   Select:
    :   Add random items to the selection.

    Deselect:
    :   Remove random items from the selection.
user: What is Metadata and how is it used in Blender Python scripting?

assistant: # Metadata

[image reference removed]

Metadata panel.

The *Metadata* panel includes options for writing metadata into render output.

Metadata Input
:   Where to grab metadata from.

    Scene:
    :   Use metadata from the current scene.

    Sequencer Strips:
    :   Use metadata from the strips in the Sequencer.

Include
:   Date
    :   Includes the current date and time.

    Time
    :   Includes the current scene time and render frame at `HH:MM:SS.FF`.

    Render Time
    :   Includes the render time.

    Frame
    :   Includes the frame number.

    Frame Range
    :   Includes the start and end frame numbers.

    Memory
    :   Includes the peak memory usage.

    Hostname
    :   Includes the rendering machine’s [hostname](https://en.wikipedia.org/wiki/Hostname).

    Camera
    :   Includes the name of the active camera.

    Lens
    :   Includes the name of the active camera’s lens value.

    Scene
    :   Includes the name of the active scene.

    Marker
    :   Includes the name of the last marker.

    Filename
    :   Includes the filename of the blend-file.

    Strip Name
    :   Includes the name of the foreground sequence strip.
user: Give a detailed overview of GeometryNodeGizmoTransform(GeometryNode): syntax, arguments, return values, common patterns.

assistant: # GeometryNodeGizmoTransform(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.GeometryNodeGizmoTransform(*GeometryNode*)
:   Show a transform gizmo in the viewport

    use_rotation_x
    :   Type:
        :   boolean, default False

    use_rotation_y
    :   Type:
        :   boolean, default False

    use_rotation_z
    :   Type:
        :   boolean, default False

    use_scale_x
    :   Type:
        :   boolean, default False

    use_scale_y
    :   Type:
        :   boolean, default False

    use_scale_z
    :   Type:
        :   boolean, default False

    use_translation_x
    :   Type:
        :   boolean, default False

    use_translation_y
    :   Type:
        :   boolean, default False

    use_translation_z
    :   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 CompositorNodeViewer(CompositorNode), preserving all code examples.

assistant: # CompositorNodeViewer(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.CompositorNodeViewer(*CompositorNode*)
:   Visualize data from inside a node graph, in the image editor or as a backdrop

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

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

assistant: The compositor only supports a single active output target, that is, only one of the
[Group Output nodes](types/output/group_output.xhtml) or [Viewer nodes](types/output/viewer.xhtml#bpy-types-compositornodeviewer) in the node tree will be considered active and the rest will be
ignored. In particular, the compositor searches the *Active Node Tree Context* and falls back to the
*Root Node Tree Context* if no active output was found in the active node tree context. The active
node tree context is the node tree of an expanded node group, that is, when the user selects a node
group node and edits its underlying tree, while the root node tree context is the top level node
tree without any expanded node groups.

The compositor searches for the active *Group Output* node, if none was found, it searches for the
active *Viewer* node. If none was found, the compositor doesn’t run altogether.
Consequently, note that adding a *Viewer* node will have no effect on the viewport render if there
is a *Group Output* node, since the priority is given to *Group Output* nodes.
user: Describe Options from the Blender manual or Python API, including usage steps and snippets.

assistant: [[image reference removed]](../../../_images/modeling_modifiers_generate_weld_panel_connected.png)

The Weld modifier.

Mode
:   Method for choosing which vertices are merged.

    All:
    :   Merge includes all geometry including loose parts.

    Connected:
    :   Merge only includes attached geometry i.e. the modifier will not merge loose parts together.

Distance
:   Maximum distance that the vertices must have each other to be merged.

Only Loose Edges Connected Mode
:   Only collapse short edges which are not adjacent to any face.
    This is useful for example to stitch the seams used in cloth simulations.

Vertex Group
:   When the *Vertex Group* option is selected, only vertices with weight above zero will be affected by the modifier.

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

        The setting reverses the weight values of the group.
user: Provide the full official documentation entry for Brush Settings, preserving all code examples.

assistant: # Brush Settings

Each mode and brush has unique brush settings.
But there is also a lot of overlap or similar settings.
This page explains general and mode specific settings that are used across various brushes in more detail.

Changes to the settings of a brush asset are temporary and will be discarded when Blender is closed. To preserve
settings, save them to the currently active brush asset using *Save Changes to Asset*, or create a new brush asset
using *Duplicate Asset*, see [Asset Operators](brush_management.xhtml#brush-management-utility-operators). Loading a different file
while Blender remains open does not discard the settings.
user: How do I use Stereo3D Display Items in Blender? Include parameters, examples, warnings and best practices.

assistant: # Stereo3D Display Items

ANAGLYPH:
:   Anaglyph.

    Render views for left and right eyes as two differently filtered colors in a single image (anaglyph glasses are required).

INTERLACE:
:   Interlace.

    Render views for left and right eyes interlaced in a single image (3D-ready monitor is required).

TIMESEQUENTIAL:
:   Time Sequential.

    Render alternate eyes (also known as page flip, quad buffer support in the graphic card is required).

SIDEBYSIDE:
:   Side-by-Side.

    Render views for left and right eyes side-by-side.

TOPBOTTOM:
:   Top-Bottom.

    Render views for left and right eyes one above another.
user: Describe Set Handle Type from the Blender manual or Python API, including usage steps and snippets.

assistant: Handle types are a property of [Bézier curves](../../curves/structure.xhtml#curve-bezier) and
can be used to alter features of the curve.
For example, switching to *Vector handles* can be used to create curves with sharp corners.
Read the [Bézier curves](../../curves/structure.xhtml#curve-bezier-handle-type) page for more details.

Type
:   The handle type to switch to.

    Auto:
    :   This handle has a completely automatic length and direction
        which is set by Blender to ensure the smoothest result.
        These handles convert to *Align* handles when moved.

    Vector:
    :   Both parts of a handle always point to the previous handle or the next handle which allows
        you to create curves or sections thereof made of straight lines or with sharp corners.
        Vector handles convert to *Free* handles when moved.

    Align:
    :   These handles always lie in a straight line,
        and give a continuous curve without sharp angles.

    Free:
    :   The handles are independent of each other.

    Toggle Free/Align:
    :   Replaces Free handles with Align, and all Align with Free handles.
user: How do I use skin.transform.basic in Blender? Include parameters, examples, warnings and best practices.

assistant: This rig provides a simplistic [parent controller](#rigify-rigs-skin-skin-parents), which uses regular
translation, rotation, or scale to modify locations but not orientations or scale of its child chain controls.

Generate Control
:   Specifies whether to generate a visible control, or use the transformation of the ORG bone
    as a part of more complex and specific rig setup.
user: Describe Save Copy from the Blender manual or Python API, including usage steps and snippets.

assistant: Choose a file path to save the blend-file to, but return to editing the original file upon completion.
This can be used to save backups of the current working state without modifying the original file.

For options see [Save As](#bpy-ops-wm-save-as-mainfile).
user: How do I use Asset Bundles in Blender? Include parameters, examples, warnings and best practices.

assistant: *Asset bundles* are blend-files that do not reference any other file,
and whose name ends in `_bundle.blend`. Any textures and other external
files need to be [packed](../files/blend/packed_data.html) into the current blend-file.

Asset bundles can be copied to an asset library via the [Asset Browser](#bpy-ops-asset-bundle-install):

- Open the asset bundle blend-file.
- Switch its Asset Browser to *Current File* (if it’s not set to that already).
- Click on *Copy Bundle to Asset Library*.
- Choose the asset library to copy it to.
- A File Browser will open at the root folder of the selected asset library.
  Choose the desired location of the blend-file, and click the *Copy to Asset Library* button.
- The blend-file will be saved at the chosen location, and any [catalogs](../files/asset_libraries/catalogs.html) of
  the asset bundle will be merged into the target asset library.
user: What is StripColorBalance(StripColorBalanceData) and how is it used in Blender Python scripting?

assistant: # StripColorBalance(StripColorBalanceData)

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

*class* bpy.types.StripColorBalance(*StripColorBalanceData*)
:   Color balance parameters for a sequence strip

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

assistant: |  |  |
| --- | --- |
| - [`bpy.context.material_slot`](bpy.context.html#bpy.context.material_slot "bpy.context.material_slot") | - [`Object.material_slots`](bpy.types.Object.html#bpy.types.Object.material_slots "bpy.types.Object.material_slots") |
user: Provide the full official documentation entry for File Path Foreach Flag Items, preserving all code examples.

assistant: # File Path Foreach Flag Items

SKIP_LINKED:
:   Skip Linked.

    Skip paths of linked IDs.

SKIP_PACKED:
:   Skip Packed.

    Skip paths when their matching data is packed.

RESOLVE_TOKEN:
:   Resolve Token.

    Resolve tokens within a virtual filepath to a single, concrete, filepath. Currently only used for UDIM tiles.

SKIP_WEAK_REFERENCES:
:   Skip Weak References.

    Skip weak reference paths. Those paths are typically ‘nice to have’ extra information, but are not used as actual source of data by the current .blend file.

SKIP_MULTIFILE:
:   Skip Multi-file.

    Skip paths where a single dir is used with an array of files, eg. sequence strip images or point-caches. In this case only the first file path is processed. This is needed for directory manipulation callbacks which might otherwise modify the same directory multiple times.

RELOAD_EDITED:
:   Reload Edited.

    Reload data when the path is edited.
user: Give a detailed overview of Hotkeys: syntax, arguments, return values, common patterns.

assistant: Free-Align Toggle
:   Hold `LeftCtrl` while dragging a handle to switch between `Free` and `Align` handle types.
    Can be used to create sharp corners along the curve.

Move Entire Point
:   Hold `LeftAlt` while dragging a handle to move the entire point.

Snap Handle Angle
:   Hold `LeftShift` while dragging a handle to limit the movement of the handle to multiples 45 degrees,
    so the handle can only be vertical, horizontal or diagonal.
user: Explain Tools in complete detail according to the official Blender documentation.

assistant: |  |  |
| --- | --- |
| `W`, `E`, `R` | Move, Rotate, Scale |
| `Q` | [Selection Tools](../selecting.html) |
| `D` | [Annotate Tool](../annotate_tool.html) |
| `C` | [Cursor Tool](../../editors/3dview/3d_cursor.html) |
user: How do I use Basic Posing in Blender? Include parameters, examples, warnings and best practices.

assistant: As previously noted, bones’ transformations are performed based on the *Rest Position* of
the armature, which is its state as defined in *Edit Mode*. This means that in
rest position, in *Pose Mode*, each bone has a scale of 1.0, and null rotation
and position (as you can see it in the *Transform* panel, in the 3D Viewport’s Sidebar).

[image reference removed]

An example of a rotation locked to the local Y axis, with two bones selected.

Note that the two green lines materializing the axes are centered on the armature’s center,
and not each bone’s root…

Moreover, the local space for these actions is the bone’s own one
(visible when you enable the *Axes* option of the *Armature* panel).
This is especially important when using axis locking, for example,
there is no specific “bone roll” tool in *Pose Mode*,
as you can rotate around the bone’s main axis just by locking on the local Y axis
`R` `Y` `Y`… This also works with several bones selected;
each one is locked to its own local axis!

When you pose your armature,
you are supposed to have one or more objects skinned on it! And obviously,
when you transform a bone in *Pose Mode*,
its related objects or object’s shape is moved/deformed accordingly, in real-time.
Unfortunately, if you have a complex rig set-up and/or a heavy skin object,
this might produce lag during interactive editing.
If you experience such troubles, try enabling the *Delay Deform* button in
the *Armature* panel the skin objects will only be updated once you confirm
the transform operation.
user: Provide the full official documentation entry for Options, preserving all code examples.

assistant: Scale X, Y, Z
:   The amount to resize 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: How do I use TextureNodeAt(TextureNode) in Blender? Include parameters, examples, warnings and best practices.

assistant: # TextureNodeAt(TextureNode)

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

*class* bpy.types.TextureNodeAt(*TextureNode*)
:   *classmethod* is_registered_node_type()
    :   True if a registered node type

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: Toolbar `T`
:   Show or hide the [Toolbar](../../../interface/tool_system.xhtml#ui-region-toolbar).

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

Tool Settings
:   Show or hide the settings for the currently selected tool.

Footer
:   Show or hide the [Sidebar](../../../interface/window_system/regions.xhtml#ui-region-footer).

---

Preview During Transform
:   Show a preview of the start or end frame of a strip while transforming its respective handle.

---

Refresh All
:   Reloads external files and refreshes the current frame preview.
    This is useful when you modified an external file or made a change in a scene that Blender
    didn’t detect.

---

Frame Selected
:   Pan and zoom the view to focus on the selected image.

Fit Preview in Window `Home`
:   Pan and zoom the view so that the entire video is visible.
    This enables *Zoom to Fit*.

Zoom
:   Menu with convenient zoom levels and operations.
    The zoom levels are calculated based on the images resolution compared to the screen resolution.

    - 12.5% (1:8) `Numpad8` zoom out to a factor of 12.5%.
    - 25% (1:4) `Numpad4` zoom out to a factor of 25%.
    - 50% (1:2) `Numpad2` zoom out to a factor of 50%.
    - 100% (1:1) `Numpad1` resets the zoom to 100%.
    - 200% (2:1) `Ctrl`-`Numpad2` zoom in to a factor of 200%.
    - 400% (4:1) `Ctrl`-`Numpad4` zoom in to a factor of 400%.
    - 800% (8:1) `Ctrl`-`Numpad8` zoom in to a factor of 800%.

    Zoom In/Out `Wheel`
    :   Zooms the view in or out.

    Zoom to Fit `Shift`-`Home`
    :   Like *Frame All*, but uses as much space in the editor as possible.

    Zoom Region `Shift`-`B`
    :   Zoom in the view to the nearest item contained in the border.

Auto Zoom
:   As long as this option is enabled, the preview will automatically zoom to keep the
    video size synchronized with the editor size.

---

Proxy
:   See [Proxy](../sequencer/sidebar/proxy.xhtml).

---

Sequence Render Image
:   Show the current frame preview as a Render Result where you can save it as an image file.

Sequence Render Animation
:   Save previews of the frames in the scene range (or the preview range, if active) to a video file
    or a series of image files. See the [Output](../../../render/output/properties/output.xhtml) panel for details.

---

Export Subtitles
:   Exports [Text strips](../../../video_editing/edit/montage/strips/text.xhtml),
    which can act as subtitles, to a [SubRip](https://en.wikipedia.org/wiki/SubRip) file (`.srt`).
    The exported file contains all Text strips in the video sequence.

---

Toggle Sequencer/Preview `Ctrl`-`Tab`
:   Switch the editor mode between *Sequencer* and *Preview*.

---

Area
:   Area controls. See the [user interface](../../../interface/window_system/areas.xhtml)
    documentation for more information.
user: Provide the full official documentation entry for GeometryNodeInputEdgeSmooth(GeometryNode), preserving all code examples.

assistant: # GeometryNodeInputEdgeSmooth(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.GeometryNodeInputEdgeSmooth(*GeometryNode*)
:   Retrieve whether each edge is marked for smooth or split normals

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: Copies the color from any part of the user interfaces and sets it as the active
[Brush Color](../brush/brush_settings.xhtml#bpy-types-brush-color).

- Press `Shift`-`X` to sample a color from the image and set it as the primary brush color.
- In **Texture Paint**, `Shift`-`Ctrl`-`X` samples the **merged viewport color**, while `Shift`-`X`
  :   samples only the currently active texture.
user: What is Make Instances Real and how is it used in Blender Python scripting?

assistant: *Make Instances Real* creates a new object for each
[instance](../properties/instancing/index.html) generated by the selected ones,
and removes any direct instancing from those.

In the end, each instance becomes a real object.

### Options

By default, new objects will be added to the same collection as the one containing their instancer,
without keeping any hierarchy relationships. This behavior can be altered with the following options.

Parent
:   If *Keep Hierarchy* is not set, parents all the generated objects to the former instancer.

    Otherwise, parents all the generated objects *which are not already parented* to their respective instancer,
    or its matching new copy (this is important in case of recursive instancing, see the note below).

Keep Hierarchy
:   Preserves internal hierarchies (i.e. parent relationships) in the newly generated objects.
user: Give a detailed overview of Properties: syntax, arguments, return values, common patterns.

assistant: Movie Clip
:   Used to select a Movie Clip data-block to use, for controls see [Data-Block Menu](../../../interface/controls/templates/data_block.html#ui-data-block).

Tracking Object
:   Camera object to get track information from.

Track
:   The name of the track to get track information from.
user: Give a detailed overview of Separate Transform Node: syntax, arguments, return values, common patterns.

assistant: # Separate Transform Node

[image reference removed]

The *Separate Transform* node separates a [Transformation Matrix](../../../../glossary/index.html#term-Transformation-Matrix)
into a translation vector, a rotation vector, and a scale vector.
user: Provide the full official documentation entry for FBX, preserving all code examples.

assistant: # FBX

The *FBX* (Filmbox) format is widely used for exchanging 3D data between applications,
especially for animated characters and complex scene data. It is supported by software
such as Autodesk Maya, 3ds Max, Cinema 4D, and game engines like Unity and Unreal Engine.

The exporter can bake mesh modifiers and animation into the FBX so the final result looks the same as in Blender.
user: Explain VertexPaint(Paint) in complete detail according to the official Blender documentation.

assistant: # VertexPaint(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.VertexPaint(*Paint*)
:   Properties of vertex and weight paint mode

    use_group_restrict
    :   Restrict painting to vertices in the group

        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: What is Paint Modes and how is it used in Blender Python scripting?

assistant: - [Sculpt Mode](../../../sculpt_paint/sculpting/index.xhtml)
- [Texture Paint Mode](../../../sculpt_paint/texture_paint/index.xhtml)
- [Vertex Paint Mode](../../../sculpt_paint/vertex_paint/index.xhtml)
- [Weight Paint Mode](../../../sculpt_paint/weight_paint/index.xhtml)
user: Show practical ways to work with Collection in a Blender add-on or script – include code.

assistant: # Collection

*Instance Collections* allows you to create an instance of a collection for each instance of another object.
Collections may contain animations, objects with physics simulations and even other nested collections.
user: Provide the full official documentation entry for NlaTrack(bpy_struct), preserving all code examples.

assistant: # NlaTrack(bpy_struct)

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

*class* bpy.types.NlaTrack(*bpy_struct*)
:   An animation layer containing Actions referenced as NLA strips

    active
    :   NLA Track is active

        Type:
        :   boolean, default False, (readonly)

    is_override_data
    :   In a local override data, whether this NLA track comes from the linked reference data, or is local to the override

        Type:
        :   boolean, default False, (readonly)

    is_solo
    :   NLA Track is evaluated itself (i.e. active Action and all other NLA Tracks in the same AnimData block are disabled)

        Type:
        :   boolean, default False

    lock
    :   NLA Track is locked

        Type:
        :   boolean, default False

    mute
    :   Disable NLA Track evaluation

        Type:
        :   boolean, default False

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

    select
    :   NLA Track is selected

        Type:
        :   boolean, default False

    strips
    :   NLA Strips on this NLA-track

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

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Provide the full official documentation entry for GeometryNodeInputNamedAttribute(GeometryNode), preserving all code examples.

assistant: # GeometryNodeInputNamedAttribute(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.GeometryNodeInputNamedAttribute(*GeometryNode*)
:   Retrieve the data of a specified attribute

    data_type
    :   The data type used to read the attribute values

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

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Give a detailed overview of Grease Pencil: syntax, arguments, return values, common patterns.

assistant: Converts the selected curve, mesh, or text object to a Grease Pencil object, generating strokes
that follow the original shape. Basic materials are also created.
When multiple objects are selected, they are combined into a single Grease Pencil object.

Keep Original
:   Keeps the original object by creating a duplicate before conversion.

Thickness
:   Defines the stroke thickness.

Stroke Offset
:   Adjusts the offset to separate strokes from filled areas.

Export Faces
:   Converts mesh faces into filled strokes.
user: Explain Auto-Offset in complete detail according to the official Blender documentation.

assistant: When you drop a node with at least one input and one output socket onto an existing connection between two nodes,
*Auto-offset* will, depending on the direction setting, automatically move the left or right node away to make room
for the new node.
*Auto-offset* is a feature that helps organizing node layouts interactively without interrupting the user workflow.

[image reference removed]

Auto-offset is enabled by default,
but it can be disabled in the [Preferences](../../../editors/preferences/editing.xhtml#preferences-editing-node-editor).

You can toggle the offset direction while you are moving the node by pressing `T`.

The offset margin can be changed using the *Auto-offset Margin*
setting in the Editing section of the Preferences.
user: Give a detailed overview of Corners of Face Node: syntax, arguments, return values, common patterns.

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: Explain Lighting in complete detail according to the official Blender documentation.

assistant: # Lighting

The Workbench engine does not use the lights of the scene.
The lighting conditions that will be used can be set in the Lighting panel.

Flat:
:   Objects are “shaded” in a flat color, without any highlights or shadows.

Studio:
:   Use a predefined studio lighting setup, such as a key light
    shining from the front and a rim light shining from the back.
    Click the sphere to choose a different setup.

    The studio lights can be configured in the [Preferences](../../editors/preferences/lights.html#prefs-lights-studio).
    By default, they follow the viewport camera around, but this can be changed:

    World Space Lighting
    :   Keep the lights fixed in place rather than following the viewport camera.

    Rotation
    :   The rotation of the lights on the Z axis.

MatCap:
:   Use a Material Capture, which is an image with texturing, lighting
    and even reflections baked into it. Objects are shaded by
    simply picking colors from this image based on the direction of
    the normal in relation to the camera.

    Click the sphere to choose a different MatCap,
    or the double arrow button to flip it horizontally.

    Custom MatCaps can be loaded in the [Preferences](../../editors/preferences/lights.html#prefs-lights-matcaps).
user: Describe Grease Pencil Selectmode Items from the Blender manual or Python API, including usage steps and snippets.

assistant: # Grease Pencil Selectmode Items

POINT:
:   Point.

    Select only points.

STROKE:
:   Stroke.

    Select all stroke points.

SEGMENT:
:   Segment.

    Select all stroke points between other strokes.
user: What is Make an Override and how is it used in Blender Python scripting?

assistant: Create overrides from the selected data-blocks.

Blender automatically create overrides for all required data-blocks to ensure that
valid override hierarchies are created.

Only overrides created from selected items will be user-editable.

### Selected Items

Depending on where from the override is created, there are several ways to
‘select’ items to be overridden and user-editable.

#### 3DView

The selected objects will be considered as selected.

When a selected object is a local *Empty* instantiating a linked collection, the following will happen:

- The *Empty* object will be removed.
- Its linked collection will be overridden, and that override will be instanced
  in the same collection in the current *View Layer*.
- If the collection contains *Armature* objects, they will be user-editable.
  Otherwise, no created override will be defined as user-editable.

#### Outliner

The operation can be applied on either the selected items only, their content only, or both.

#### ID Widget

Only the linked data-block in the ID Widget is considered as selected, and set as editable
once overridden.

### Make Editable

That same operation can also be used to make existing overrides user-editable,
after they have been created, or [cleared](#bpy-ops-ui-override-idtemplate-clear)