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

assistant: You can now edit the documentation files, which are the `.rst` files inside the `manual` folder using a text
editor of your choice.

Be sure to check the [Writing Style Guide](../../guides/writing_guide.html) for conventions and
[Markup Style Guide](../../guides/markup_guide.html) to learn how to write in the reStructuredText markup language.

Happy writing!

### Bigger Changes

If you are going to add or overhaul a section, be sure to check carefully that it does not already exist. In some
places, the docs are so disorganized that sections may be duplicated or in a strange location. In the case that you
find a duplicate or out of place section, [create an issue](https://projects.blender.org/blender/documentation/issues/new) explaining the issue, and optionally include a
revision (actual changes).

Before you make any edits that are not simple and plainly justified (for example, moving folders around), you should
verify with a manual maintainer that your contribution is along the community’s vision for the manual. This ensures
the best use of your time and good will as it is otherwise possible that, for some reason, your changes will conflict
and be rejected or need time-consuming review. For example, another person may be already working on the section you
wish to change, the section may be scheduled for deletion or to be updated according to a planned change to Blender.

[Communicating](../../index.html#contribute-contact) early and frequently is the key to have a productive environment, to not
waste people’s effort and to attain a better Blender manual as a result.

### Getting Help/Answers

If you are in doubt about functionality that you wish to document, you should pose your questions to the Blender
developers responsible for that area or ask at the unofficial user support channel in the `#docs` or
`#blender-coders` channel in [Chat](../../../../getting_started/about/community.html#blender-chat).

Blender itself has a system of module owners with developer and artist members who are responsible for the design and
maintenance of the assigned Blender areas. See the [module pages](https://projects.blender.org/blender/blender/wiki) for more information.
user: Give a detailed overview of BlendDataScenes(bpy_struct): syntax, arguments, return values, common patterns.

assistant: # BlendDataScenes(bpy_struct)

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

*class* bpy.types.BlendDataScenes(*bpy_struct*)
:   Collection of scenes

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

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

        Returns:
        :   New scene data-block

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

    remove(*scene*, *\**, *do_unlink=True*)
    :   Remove a scene from the current blendfile

        Parameters:
        :   - **scene** ([`Scene`](bpy.types.Scene.html#bpy.types.Scene "bpy.types.Scene"), (never None)) – Scene to remove
            - **do_unlink** (*boolean**,* *(**optional**)*) – Unlink all usages of this scene before deleting it

    tag(*value*)
    :   tag

        Parameters:
        :   **value** (*boolean*) – Value

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: Viewport Anti-Aliasing
:   Control the [Anti-Aliasing](../../glossary/index.html#term-Anti-Aliasing) for higher quality rendering.

Smooth Wires
:   Overlay
    :   Display overlays with smooth wire, without this wires will be rendered aliased.
        To increase the visibility you can disable this for Edit Mode specificity (see below),
        since edges do not blend into other shaded regions.

    Edit Mode
    :   Display smooth wire in Edit Mode, without this wires will be rendered aliased.
user: What is VIEW3D_AST_brush_sculpt(AssetShelf) and how is it used in Blender Python scripting?

assistant: # VIEW3D_AST_brush_sculpt(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_sculpt(*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: Describe Stabilize Stroke from the Blender manual or Python API, including usage steps and snippets.

assistant: *Stabilize Stroke* makes the stroke lag behind the cursor
and creates a smoothed curve to the path of the cursor.
This can be enabled pressing `Shift` `S` or by clicking the checkbox found in the header.

Radius
:   Minimum distance from the last point before the stroke continues.

Factor
:   A smooth factor, where higher values result in smoother strokes but the drawing sensation
    feels like as if you were pulling the stroke.
user: Give a detailed overview of Snap: syntax, arguments, return values, common patterns.

assistant: # Snap

The *Snap* menu (also available from the 3D header in both *Object Mode* and *Edit Mode*
Object ‣ Snap and Mesh ‣ Snap).
This menu provides a number of options to move the cursor or your selection to a defined point
(the cursor, selection or the grid).

Selection to Grid
:   Snaps the currently selected object(s) to the nearest grid point.

Selection to Cursor
:   Moves each one of the currently selected object(s) to the cursor location.
    Optionally, the selection can be rotated to match the cursor.

Selection to Cursor (Offset)
:   Places the selection at the position of the 3D cursor.
    If there are multiple objects selected, they are not moved individually at the cursor position;
    instead, they are centered around the 3D cursor, maintaining their relative distances.

Selection to Active
:   Moves the selection to the origin of the active object.

Cursor to Selected
:   Places the cursor to the center of the current selection, unless see below.

Cursor to World Origin
:   Places the cursor to the origin of the world (location 0, 0, 0).

Cursor to Grid
:   Places the cursor to the nearest grid point.

Cursor to Active
:   Places the cursor to the origin of the *active* (last selected) object.

The *Cursor to Selected* option is also affected by the current [Transform Pivot Point](../../../editors/3dview/controls/pivot_point/index.html#pivot-point-index). For example:

- With the *Bounding Box Center* pivot point active,
  the *Cursor to Selected* option will snap the 3D cursor to
  the center of the bounding box surrounding the objects’ origins.
- When the *Median Point* pivot point is selected,
  *Cursor to Selected* will snap the 3D cursor to
  the [median](../../../editors/3dview/controls/pivot_point/median_point.html) of the object
  origins.
user: Explain Usage in complete detail according to the official Blender documentation.

assistant: Application templates are a feature that allows you to define a re-usable configuration
that can be selected to replace the default configuration,
without requiring a separate Blender installation or overwriting your personal settings.

Application templates can be selected from the splash screen or File ‣ New submenu.
When there are no templates found the menu will not be displayed on the splash screen.

New application templates can be installed from the [Blender Menu](../interface/window_system/topbar.xhtml#topbar-blender-menu).
If you would like to keep the current application template active on restarting Blender, save your preferences.

### Motivation

In some cases it’s not enough to write a single script or add-on,
and expect someone to replace their preferences and startup file, install scripts and change their keymap.

The goal of application templates is to support switching to a customized configuration
without disrupting your existing settings and installation.
This means people can build their own *applications* on top of Blender that can be easily distributed.

### Details

An application template may define its own:

Startup File
:   The default file to load with this template.

Preferences
:   Only certain preferences from a template are used:

    - Themes.
    - Add-ons.
    - Keymaps.
    - Viewport lighting.

Splash Screen
:   Templates may provide their own splash screen image.

Python Scripts
:   While templates have access to the same functionality as any other scripts,
    typical operations include:

    - Modifying and replacing parts of the user interface.
    - Defining new menus, keymaps and tools.
    - Defining a custom add-on path for template specific add-ons.

Templates also have their own user configuration, so saving a startup file while using a template
won’t overwrite your default startup file.

### Directory Layout

Templates may be located in one of two locations within the `scripts` directory.

Template locations:
:   `{BLENDER_USER_SCRIPTS}/startup/bl_app_templates_user`

    `{BLENDER_SYSTEM_SCRIPTS}/startup/bl_app_templates_system`

User configuration is stored in a subdirectory:

Without a template:
:   `./config/startup.blend`

    `./config/userpref.blend`

With a template:
:   `./config/{APP_TEMPLATE_ID}/startup.blend`

    `./config/{APP_TEMPLATE_ID}/userpref.blend`

See [Blender’s Directory Layout](blender_directory_layout.xhtml#blender-directory-layout) for details on script and configuration locations.

### Command Line Access

Using the [command-line arguments](command_line/arguments.xhtml#command-line-args) you can setup a launcher
that opens Blender with a specific app template:

```
blender --app-template my_template
```
user: Explain NodeEvaluateClosureOutputItems(bpy_struct) in complete detail according to the official Blender documentation.

assistant: # NodeEvaluateClosureOutputItems(bpy_struct)

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

*class* bpy.types.NodeEvaluateClosureOutputItems(*bpy_struct*)
:   new(*socket_type*, *name*)
    :   Add an item at the end

        Parameters:
        :   - **socket_type** (enum in [Node Socket Data Type Items](bpy_types_enum_items/node_socket_data_type_items.html#rna-enum-node-socket-data-type-items)) – Socket Type, Socket type of the item
            - **name** (*string**,* *(**never None**)*) – Name

        Returns:
        :   Item, New item

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

    remove(*item*)
    :   Remove an item

        Parameters:
        :   **item** ([`NodeEvaluateClosureOutputItem`](bpy.types.NodeEvaluateClosureOutputItem.html#bpy.types.NodeEvaluateClosureOutputItem "bpy.types.NodeEvaluateClosureOutputItem"), (never None)) – Item, The item to remove

    clear()
    :   Remove all items

    move(*from_index*, *to_index*)
    :   Move an item to another position

        Parameters:
        :   - **from_index** (*int in* *[**0**,* *inf**]*) – From Index, Index of the item to move
            - **to_index** (*int in* *[**0**,* *inf**]*) – To Index, Target index for the item

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

assistant: # TextureNodeSeparateColor(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.TextureNodeSeparateColor(*TextureNode*)
:   mode
    :   Mode of color processing

        Type:
        :   enum in [Node Combsep Color Items](bpy_types_enum_items/node_combsep_color_items.html#rna-enum-node-combsep-color-items), default `'RGB'`

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

assistant: [image reference removed]

Mask Layer panel.

Mask layers consists of one or several splines and used to “grouped” operation on splines.
Layers can be used to create complex shapes and to define how the splines interact with each other.
Splines belonging to the same layer can be animated together, for example by an item
from motion tracker footage.
Example of such tools might be parenting the whole set of splines to single motion tracking data or
simple to transform all of them together.

Opacity
:   Used to set the opacity of the mask layer.

Invert
:   Inverts the values (colors) in the mask layer.

Blend
:   The layer blending operation to perform. See [Color Blend Modes](../../glossary/index.xhtml#term-Color-Blend-Modes).

    Modes *Merge Add* and *Merge Subtract*
    give better results when using a *Feather* on overlapping masks
    than straightforward mathematical addition and subtraction.

Falloff
:   Type of the *Feather* falloff, controls the shape of the transition between black and white.

Overlap
:   Fills the self-intersecting areas.

Holes
:   Overlapping splines from the same layer will generate holes in the mask.

|  |  |
| --- | --- |
| ../../_images/movie-clip_masking_sidebar_example-overlap.png   The Overlap option example. | ../../_images/movie-clip_masking_sidebar_example-holes.png   The Holes option example. |

### Example

The purpose of mask layers can be explained with an example.
Suppose there are two unwanted people in the footage, and one of them goes from left to right, and
the other in the opposite direction. Two mask layers can then be used to mask them separately by
using a single mask data-block. At the point of intersection of these shapes they will be added together rather than
creating a hole, as would happen if they were on the same layer. If the motion is simple enough,
a single motion tracked point can be used to drive the location of the entire mask layer.
user: Provide the full official documentation entry for Relations Management, preserving all code examples.

assistant: [image reference removed]

Linking objects to a collection.

Objects and collections can be reorganized, linked, or parented directly in the *Outliner* using drag-and-drop
operations. This provides an intuitive way to manage scene hierarchies and relationships.

### Moving and Linking

- **Move:**
  Drag an object or collection onto another collection to move it there.
- **Link:**
  Drag an object (or collection) while holding `Ctrl` and drop it onto a collection
  to link it instead of moving it.
  This allows the same object or collection to be part of multiple parent collections at once.

### Parenting

- **Parent to Object:**
  Drag an object onto another object to make it a child of that object.
  Hold `Alt` while dropping to *not* keep the transform relationship (i.e. the child retains its world position).
- **Clear Parent:**
  Drag the child object out of its parent hierarchy to remove the parent relationship.
  Hold `Alt` while dropping to clear the parent while preserving the parent’s transform on the child.
- **Parent Across Collections:**
  To parent an object that resides in a different collection, hold `Shift` while dragging.

See [Parenting Objects](../../scene_layout/object/editing/parent.xhtml#bpy-types-object-parent) for more information on parenting and transformation inheritance.
user: Provide the full official documentation entry for Adding Text, preserving all code examples.

assistant: Generally, **you should always translate exactly what is in the text**, and avoid providing updates or extra
information.

But sometimes that is necessary, for example when talking about the manual itself: To a foreign reader it is not
clear, that they can contribute English text only, whereas this is obvious to an English reader.

In these (rare) cases you can and should provide extra information.
user: What is Movie Clip Node and how is it used in Blender Python scripting?

assistant: # Movie Clip Node

[image reference removed]

This node is a special node that uses some of the values taken from
footage cameras and trackings and link them to the output.
It is possible to load image sequences, but only Image and Alpha values
will be available, because the other outputs will not have any values
associated with them.
When a tracked clip is chosen, Blender will fulfill the outputs using
internal values taken from the tracking. So the controls for
start and end frames will be defined in the Movie Clip editor.
user: Describe Internet Access from the Blender manual or Python API, including usage steps and snippets.

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.html#bpy-types-preferencessystem-use-online-access)
on the preferences, or not.
user: How do I use EnumPropertyItem(bpy_struct) in Blender? Include parameters, examples, warnings and best practices.

assistant: # EnumPropertyItem(bpy_struct)

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

*class* bpy.types.EnumPropertyItem(*bpy_struct*)
:   Definition of a choice in an RNA enum property

    description
    :   Description of the item’s purpose

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

    icon
    :   Icon of the item

        Type:
        :   enum in [Icon Items](bpy_types_enum_items/icon_items.html#rna-enum-icon-items), default `'NONE'`, (readonly)

    identifier
    :   Unique name used in the code and scripting

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

    name
    :   Human readable name

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

    value
    :   Value of the item

        Type:
        :   int in [0, inf], default 0, (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: Give a detailed overview of ShaderFx(bpy_struct): syntax, arguments, return values, common patterns.

assistant: # ShaderFx(bpy_struct)

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

subclasses —
[`ShaderFxBlur`](bpy.types.ShaderFxBlur.html#bpy.types.ShaderFxBlur "bpy.types.ShaderFxBlur"), [`ShaderFxColorize`](bpy.types.ShaderFxColorize.html#bpy.types.ShaderFxColorize "bpy.types.ShaderFxColorize"), [`ShaderFxFlip`](bpy.types.ShaderFxFlip.html#bpy.types.ShaderFxFlip "bpy.types.ShaderFxFlip"), [`ShaderFxGlow`](bpy.types.ShaderFxGlow.html#bpy.types.ShaderFxGlow "bpy.types.ShaderFxGlow"), [`ShaderFxPixel`](bpy.types.ShaderFxPixel.html#bpy.types.ShaderFxPixel "bpy.types.ShaderFxPixel"), [`ShaderFxRim`](bpy.types.ShaderFxRim.html#bpy.types.ShaderFxRim "bpy.types.ShaderFxRim"), [`ShaderFxShadow`](bpy.types.ShaderFxShadow.html#bpy.types.ShaderFxShadow "bpy.types.ShaderFxShadow"), [`ShaderFxSwirl`](bpy.types.ShaderFxSwirl.html#bpy.types.ShaderFxSwirl "bpy.types.ShaderFxSwirl"), [`ShaderFxWave`](bpy.types.ShaderFxWave.html#bpy.types.ShaderFxWave "bpy.types.ShaderFxWave")

*class* bpy.types.ShaderFx(*bpy_struct*)
:   Effect affecting the Grease Pencil object

    name
    :   Effect name

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

    show_expanded
    :   Set effect expansion in the user interface

        Type:
        :   boolean, default False

    show_in_editmode
    :   Display effect in Edit mode

        Type:
        :   boolean, default False

    show_render
    :   Use effect during render

        Type:
        :   boolean, default False

    show_viewport
    :   Display effect in viewport

        Type:
        :   boolean, default False

    type
    :   Type:
        :   enum in [Object Shaderfx Type Items](bpy_types_enum_items/object_shaderfx_type_items.html#rna-enum-object-shaderfx-type-items), default `'FX_BLUR'`, (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](#bpy.types.ShaderFx.type "bpy.types.ShaderFx.type")
user: How do I use File Browser in Blender? Include parameters, examples, warnings and best practices.

assistant: # File Browser

The File Browser is used in all file-related operations. These include:

- Opening and saving blend-files.
- Browsing the content of other blend-files when appending or linking data-blocks
  (see [Linked Libraries](../files/linked_libraries/index.xhtml)).
- Importing from/exporting to other file formats.
- Updating the locations of previously imported media (images, videos, fonts…).

The most common way to use this editor is through modal operators (like opening or saving a blend-file).
The File Browser will appear in a new window, wait for you to select a file, and then close again.

You can also use the File Browser like a regular, permanently visible editor. In fact,
the predefined Video Editing [workspace](../interface/window_system/workspaces.xhtml) uses it this way.
This lets you drag-and-drop media from the browser straight into e.g. the
[3D Viewport](3dview/introduction.xhtml) or the
[Video Sequencer](video_sequencer/introduction.xhtml), saving you some overhead.

[image reference removed]

The File Browser.
user: Explain Animation in complete detail according to the official Blender documentation.

assistant: The most common trick is to
[Keyframe](../../glossary/index.html#term-Keyframe) animate the location or rotation of an *Active* physics object as well as
the *Animated* checkbox.
When the curve on the *Animated* property switches to disabled, the physics engine takes over
using the object’s last known location, rotation and velocities.

Animating the strengths of various other parameters
(a [Motor’s](constraints/types/motor.html) Target Velocity,
a [Hinge’s](constraints/types/hinge.html) limits, etc.)
can be used to accomplish a wide variety of interesting results.

Enabling a constraint during the physics simulation often has dramatic results
as the physics engine tries to bring into alignment two objects which are often dramatically out of alignment.
It is very common for the affected objects to build up enough kinetic energy to bounce themselves out of camera.

Rigid body dynamics can be baked to normal keyframes with *Bake To Keyframes*
in the Object ‣ Rigid Body menu.
user: Explain NodeTreeInterfaceSocketVectorEuler(NodeTreeInterfaceSocket) in complete detail according to the official Blender documentation.

assistant: # NodeTreeInterfaceSocketVectorEuler(NodeTreeInterfaceSocket)

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

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

    default_value
    :   Input value used for unconnected socket

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

    dimensions
    :   Dimensions of the vector socket

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

    max_value
    :   Maximum value

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

    min_value
    :   Minimum value

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

    subtype
    :   Subtype of the default value

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

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

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

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

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

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

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

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Explain GeometryNodeTree(NodeTree) in complete detail according to the official Blender documentation.

assistant: # GeometryNodeTree(NodeTree)

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

*class* bpy.types.GeometryNodeTree(*NodeTree*)
:   Node tree consisting of linked nodes used for geometries

    is_mode_edit
    :   The node group is used in edit mode

        Type:
        :   boolean, default False

    is_mode_object
    :   The node group is used in object mode

        Type:
        :   boolean, default False

    is_mode_paint
    :   The node group is used in paint mode

        Type:
        :   boolean, default False

    is_mode_sculpt
    :   The node group is used in sculpt mode

        Type:
        :   boolean, default False

    is_modifier
    :   The node group is used as a geometry modifier

        Type:
        :   boolean, default False

    is_tool
    :   The node group is used as a tool

        Type:
        :   boolean, default False

    is_type_curve
    :   The node group is used for curves

        Type:
        :   boolean, default False

    is_type_grease_pencil
    :   The node group is used for Grease Pencil

        Type:
        :   boolean, default False

    is_type_mesh
    :   The node group is used for meshes

        Type:
        :   boolean, default False

    is_type_pointcloud
    :   The node group is used for point clouds

        Type:
        :   boolean, default False

    show_modifier_manage_panel
    :   Turn on the option to display the manage panel when creating a modifier

        Type:
        :   boolean, default False

    use_wait_for_click
    :   Wait for mouse click input before running the operator from a menu

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

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

The Array modifier.

Fit Type
:   Controls how the length of the array is determined. There are three choices,
    activating respectively the display of the *Curve*, *Length* or *Count* settings explained below:

    Fit Curve
    :   Generates enough copies to fit within the length of the curve object specified in *Curve*.

    Fit Length
    :   Generates enough copies to fit within the fixed length given by *Length*.

    Fixed Count
    :   Generates the number of copies specified in *Count*.

### Relative Offset

Factor X/Y/Z
:   Adds a translation equal to the object’s bounding box size along each axis, multiplied by a scaling factor,
    to the offset. X, Y and Z scaling factors can be specified.

    [image reference removed]

    Relative offset (0.5, 1.0 and 1.5) examples.

### Constant Offset

Distance X/Y/Z
:   Adds a constant translation component to the duplicate object’s offset.
    X, Y and Z constant components can be specified.

### Object Offset

Adds a transformation taken from an object (relative to the current object) to the offset.
It is good practice to use an empty object centered or near to the initial object.
E.g. by rotating this empty a circle or helix of objects can be created.

[image reference removed]

Object offset example.

### Merge

If enabled, vertices in each copy will be merged with vertices
in the next copy that are within the given *Distance*.

First and Last Copies
:   If enabled **and** *Merge* is enabled, vertices in the first copy will be merged with vertices
    in the last copy, again if they are within *Distance* range. This is useful for circular objects.

    First and Last Copies merge example.

    |  |  |
    | --- | --- |
    | ../../../_images/modeling_modifiers_generate_array_first-last-off.png   Subdivision discontinuity caused by not merging vertices between first and last copies (*First and Last Copies* off). | ../../../_images/modeling_modifiers_generate_array_first-last-on.png   Subdivision discontinuity eliminated by merging vertices between first and last copies (*First and Last Copies* on). |

Distance
:   Controls the merge distance for *Merge* and *First and Last Copies*.

### UVs

Offset U/V
:   Shifts UVs of each new duplicate by a settable amount.

### Caps

Cap Start, End
:   This allows either endpoints of the array to have a different mesh subsisted.

    For the *start*: as if it was in position -1, i.e. one “array step” before the first “regular” array copy.
    For the *end*: as if it was in position *n* + 1, i.e. one “array step” after the last “regular” array copy.

    When *Merge* is activated, the *cap* vertices within the *Distance* threshold will be merged.
user: Provide the full official documentation entry for Start Tweaking Strips Actions (Full Stack), preserving all code examples.

assistant: Enters Tweak Mode for the selected strip’s action, making its keyframes available for editing.
Leaves all the other tracks enabled so that you can still see their effects while making changes.

When you’re done, click Strip ‣ Stop Tweaking Strips Actions
or press `Tab` again.
user: Show practical ways to work with IMAGE_AST_brush_paint(AssetShelf) in a Blender add-on or script – include code.

assistant: # IMAGE_AST_brush_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.IMAGE_AST_brush_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: Show practical ways to work with Curve Operators in a Blender add-on or script – include code.

assistant: vide selected segments

    Parameters:
    :   **number_cuts** (*int in* *[**1**,* *1000**]**,* *(**optional**)*) – Number of Cuts

bpy.ops.curve.switch_direction()
:   Switch direction of selected splines

bpy.ops.curve.tilt_clear()
:   Clear the tilt of selected control points

bpy.ops.curve.vertex_add(*\**, *location=(0.0, 0.0, 0.0)*)
:   Add a new control point (linked to only selected end-curve one, if any)

    Parameters:
    :   **location** ([`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf], (optional)) – Location, Location to add new vertex at
user: Give a detailed overview of Collection Color Items: syntax, arguments, return values, common patterns.

assistant: # Collection Color Items

NONE:
:   None.

    Assign no color tag to the collection.

COLOR_01:
:   Color 01.

COLOR_02:
:   Color 02.

COLOR_03:
:   Color 03.

COLOR_04:
:   Color 04.

COLOR_05:
:   Color 05.

COLOR_06:
:   Color 06.

COLOR_07:
:   Color 07.

COLOR_08:
:   Color 08.
user: Give a detailed overview of H: syntax, arguments, return values, common patterns.

assistant: |  |  |
| --- | --- |
| - [**HDRI**](glossary/index.html#term-HDRI) - [**Head**](glossary/index.html#term-Head) | - [**High Dynamic Range Image**](glossary/index.html#term-High-Dynamic-Range-Image) - [**Hue**](glossary/index.html#term-Hue) |
user: Provide the full official documentation entry for Outputs, preserving all code examples.

assistant: Segment Length
:   The distance between the current point and its previous point on the same curve.
    This can be used for evaluating curve smoothness, detecting segment stretching,
    or applying deformation relative to curve length.

Segment Direction
:   A normalized vector pointing from the previous point toward the current point.
    It represents the local tangent direction of the curve segment.

Neighbor Index
:   The index of the previous neighboring point along the curve.
    This can be used to reference or sample attributes from adjacent points.
user: Give a detailed overview of Faces by Edges: syntax, arguments, return values, common patterns.

assistant: *Faces by Edges* is similar to the *Rip* tool. When two or more touching interior edges,
or a border edge is selected, a hole will be created,
and the selected edges will be duplicated to form the border of the hole.

|  |  |
| --- | --- |
| <../../../../_images/modeling_meshes_editing_mesh_split_edges-before.png>   Selected edges. | <../../../../_images/modeling_meshes_editing_mesh_split_edges-after.png>   Adjacent face moved to reveal hole left by split. |
user: How do I use Non Manifold in Blender? Include parameters, examples, warnings and best practices.

assistant: Selects the [non-manifold](../../../glossary/index.xhtml#term-Non-manifold) geometry of a mesh.
This entry is only available in the *Vertex* and *Edge*
[selection modes](introduction.xhtml#bpy-types-toolsettings-mesh-select-mode).

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

Extend
:   Adds to the current selection instead of replacing it.

Wire
:   Selects edges that do not belong to any face.

Boundaries
:   Selects edges at boundaries and holes.

Multiple Faces
:   Selects edges that belong to three or more faces.

Non Contiguous
:   Selects edges that belong to exactly two faces with opposite normals.

Vertices
:   Selects vertices that are isolated, belong to an edge that’s a *Wire*
    or has *Multiple Faces*, or are the only vertex connecting two faces.
user: Show practical ways to work with Simulation in a Blender add-on or script – include code.

assistant: Simulation Range
:   Use a simulation range that is different from the scene range for
    [Simulation Nodes](../../modeling/geometry_nodes/simulation/simulation_zone.html)
    that do not override the frame range themselves.

Start, End
:   The frame at which the simulation starts/ends.
user: What is Example and how is it used in Blender Python scripting?

assistant: Closures are useful when part of a node group’s logic should be user-defined.
For example, a terrain generator can use a closure to define tree placement:

- The [Evaluate Closure](../../../../interface/controls/nodes/types/utilities/closure/evaluate_closure.xhtml)
  node is placed where tree instances are distributed.
- A closure input is exposed on the group’s interface.
- A [Closure](../../../../interface/controls/nodes/types/utilities/closure/closure.xhtml)
  node is connected defining any custom placement logic.

When the closure is evaluated, the contents of the connected node graph
are executed inside the context of the terrain generator.
This allows the generator to provide stable infrastructure
(e.g., scattering, masks, attributes) while users supply their own functional behavior.

[image reference removed]

A terrain generator node group using closures for custom tree placement.
user: Provide the full official documentation entry for Attribute(bpy_struct), preserving all code examples.

assistant: # Attribute(bpy_struct)

Attributes are used to store data that corresponds to geometry elements.
Geometry elements are items in one of the geometry domains like points, curves, or faces.

An attribute has a `name`, a `type`, and is stored on a `domain`.

`name`
:   The name of this attribute. Names have to be unique within the same geometry.
    If the name starts with a `.`, the attribute is hidden from the UI.

`type`
:   The type of data that this attribute stores, e.g. a float, integer, color, etc.
    See [Attribute Type Items](bpy_types_enum_items/attribute_type_items.html).

`domain`
:   The geometry domain that the attribute is stored on.
    See [Attribute Domain Items](bpy_types_enum_items/attribute_domain_items.html).
user: Explain GeometryNodeDeformCurvesOnSurface(GeometryNode) in complete detail according to the official Blender documentation.

assistant: # GeometryNodeDeformCurvesOnSurface(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.GeometryNodeDeformCurvesOnSurface(*GeometryNode*)
:   Translate and rotate curves based on changes between the object’s original and evaluated surface mesh

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Describe Bpy.Types.Bpy Struct from the Blender manual or Python API, including usage steps and snippets.

assistant: this is needed because types such as textures can be changed at runtime. Returns : a new instance of this object with the type initialized again. Return type : bpy.types.bpy_struct values ( ) ¶ Returns the values of this objects custom properties (matches Python’s dictionary function of the same name). Returns : custom property values. Return type : idprop.types.IDPropertyGroupViewValues Note Limited to: Types with Custom Property Support . id_data ¶ The bpy.types.ID object this data-block is from or None, (not available for all data types) Type : bpy.types.ID , (readonly) Next wmOwnerID(bpy_struct) Previous bpy_prop_collection_idprop Copyright &#169; Blender Authors Made with Furo Report issue on this page On this page bpy_struct bpy_struct bpy_struct.as_pointer() bpy_struct.driver_add() bpy_struct.driver_remove() bpy_struct.get() bpy_struct.id_properties_clear() bpy_struct.id_properties_ensure() bpy_struct.id_properties_ui() bpy_struct.is_property_hidden() bpy_struct.is_property_overridable_library() bpy_struct.is_property_readonly() bpy_struct.is_property_set() bpy_struct.items() bpy_struct.keyframe_delete() bpy_struct.keyframe_insert() bpy_struct.keys() bpy_struct.path_from_id() bpy_struct.path_from_module() bpy_struct.path_resolve() bpy_struct.pop() bpy_struct.property_overridable_library_set() bpy_struct.property_unset() bpy_struct.rna_ancestors() bpy_struct.type_recast() bpy_struct.values() bpy_struct.id_data
user: Explain Subdivide Curve Node in complete detail according to the official Blender documentation.

assistant: # Subdivide Curve Node

[image reference removed]

The *Subdivide Curve* node adds more control points in between existing control points on the curve input.
For Bézier and poly splines, the shape of the spline will not be changed at all.

With Bézier curves, this can be used to increase the control on the shape of the curve
while still having the higher-level provided by Bézier splines.
Unlike the [Resample Curve Node](resample_curve.xhtml), where they are converted to poly splines.
user: Explain Simplify in complete detail according to the official Blender documentation.

assistant: # Simplify

Common Settings

Max Subdivision
:   Maximum number of subdivision by the Subdivision Surface modifiers.

Child Particles
:   Show only a subset of all child hairs and particles.

Texture Limit
:   Automatically scales textures down so that they are no larger than the values chosen.
    This can help reduce computer memory resources when rendering large scenes with huge textures.