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

assistant: Naming conventions in Blender are not only useful for you in finding the right bone,
but also to tell Blender when any two of them are counterparts.

In case your armature can be mirrored in half (i.e. it is bilaterally symmetrical),
it is worthwhile to stick to a left/right naming convention.
This will enable you to use some tools that will probably save you time and effort
(like the *X-Axis Mirror* editing tool).

[image reference removed]

An example of left/right bone naming in a simple rig.

1. First you should give your bones meaningful base-names,
   like “leg”, “arm”, “finger”, “back”, “foot”, etc.
2. If you have a bone that has a copy on the other side (a pair),
   like an arm, give it one of the following separators:

   - Left/right separators can be either the second position
     “L**_**calf_bone” or last-but-one “calf_bone**.**R”.
   - If there is a lower or upper case “L”, “R”, “left” or “right”, Blender handles the counterpart correctly.
     See below for a list of valid separators.
     Pick one and stick to it as close as possible when rigging; it will pay off.

   Examples of valid separators:

   - (nothing): handLeft –> handRight
   - “_” (underscore): hand**_**L –> hand**_**R
   - “.” (dot): hand**.**l –> hand**.**r
   - “-” (dash): hand**-**l –> hand**-**r
   - “ “ (space): hand LEFT –> hand RIGHT
3. Before Blender handles an armature for mirroring or flipping,
   it first removes the number extension, e.g. “.001”.
4. You can copy a bone named “blah.L” and flip it over using [Flip Names](#bpy-ops-armature-flip-names).
   Blender will name the copy “blah.L.001” and flipping the name will give you “blah.R”.
user: Explain Tool Settings in complete detail according to the official Blender documentation.

assistant: ### Brush Asset

Picks the brush asset used by the tool.

See [Brush Asset](../tool_settings/brushes.html) for more information.

See [Draw Brushes](../brushes/draw.html) for a detailed list of all draw brushes and their options.

### Brush Settings

Parameters to control to look of the stroke.

See [Draw Brushes](../brushes/draw.html) for details.

### Eraser

Default Eraser Brush
:   Select a brush to use as eraser for quickly alternating with the main brush using
    `Ctrl`-`LMB`.

### Color

Settings to determine the color of strokes.

See [Color](../tool_settings/color.html)
user: How do I use Notes in Blender? Include parameters, examples, warnings and best practices.

assistant: The slightest difference in seed values would result in completely different outputs.
Consequently, bad precision may have significant impact on the output.
Usually, we can mitigate this issue by:

- Eliminating the problematic seed value. If the problematic seed value is constant,
  it should be eliminated by choosing a lower dimension or multiplying it by zero.
- Adding an arbitrary value to the seed. The issue might only happen at certain boundaries,
  like unit boundaries, so simply adding an arbitrary value might solve the issue.
- Taking the absolute value of the seed. In computing, zero may be positive or negative,
  so taking the absolute values unifies the zero into a single value.

|  |  |
| --- | --- |
| ../../../_images/render_shader-nodes_textures_white-noise_issue.png   Precision issue due to signed zeros on the Z axis. | ../../../_images/render_shader-nodes_textures_white-noise_solution1.png   Mitigating the issue by eliminating the Z axis. |
| ../../../_images/render_shader-nodes_textures_white-noise_solution2.png   Mitigating the issue by adding an arbitrary value. | ../../../_images/render_shader-nodes_textures_white-noise_solution3.png   Mitigating the issue by taking the absolute value. |
user: Give a detailed overview of Usage: syntax, arguments, return values, common patterns.

assistant: - Select the *Source* mesh you want to copy data from.
- If the source mesh and modified mesh aren’t overlapping in world space,
  uncheck *Object Transform* (the axes icon next to the source mesh).
- Select which type of data you want to copy (e.g. vertex groups, UV maps…).
- If you only want to copy a specific vertex group/UV map/…, select it in *Layer Selection*.
- If the vertex groups/… you want to copy don’t exist yet on the modified mesh,
  click *Generate Data Layers* to create them.
user: Show practical ways to work with Color in a Blender add-on or script – include code.

assistant: # Color

Paint Mode
:   Controls the source of the stroke color.
    The mode can be pinned to the brush by enabling the Pin icon in the Tool Settings header.

    Material:
    :   Use the stroke/fill base color material.

    Color Attribute:
    :   Use Color Attribute.

Color Picker
:   Sets the primary brush color.

Color, Secondary Color
:   The color of the brush. See [Color Picker](../../../../interface/controls/templates/color_picker.html#ui-color-picker).

Mode
:   The color transformation will be applied on the stroke and/or the fill color.

    Stroke:
    :   Only paint over strokes.

    Fill:
    :   Only paint over fill areas.

    Stroke & Fill:
    :   Paint over strokes and fill areas.

Mix Factor
:   Mixing factor between the selected color and the base material color.
user: How do I use Examples in Blender? Include parameters, examples, warnings and best practices.

assistant: Three examples of how the size input may be used follow.

An [ID masked](../../mask/id_mask.html)
alpha image can be used so that a background is blurred while foreground objects remain in focus.
To prevent strange edges the [Dilate Node](../dilate_erode.html) should be used.

The Z pass can be visualized using a [Map Range](../../utilities/math/map_range.html) node
and a [Color Ramp](../../color/color_ramp.html) node
as described in [Render Layers](../../input/scene/render_layers.html).
A *multiply* [Math](../../utilities/math/math.html) node can be used following the color ramp
so that a blur value greater than one is used for objects outside the focal range.

[[image reference removed]](../../../../_images/compositing_types_filter_bokeh-blur_example-1.png)

Z pass used.

A manually created grayscale image can be used to define the sharp and blurry areas of a preexisting image.
Again, a Multiply Node can be used so that a blur value greater than one is used.

[[image reference removed]](../../../../_images/compositing_types_filter_bokeh-blur_example-2.png)

Image used.

|  |  |
| --- | --- |
| ../../../../_images/compositing_types_filter_bokeh-blur_example-1-render.jpg   Z pass used. | ../../../../_images/compositing_types_filter_bokeh-blur_example-2-render.jpg   Image used. |
user: Show practical ways to work with Displacement in a Blender add-on or script – include code.

assistant: # Displacement

Detail can be added to the shape of a surface with displacement shaders.

To create displacement, connect a [Displacement](../../shader_nodes/displacement/displacement.html)
or [Vector Displacement](../../shader_nodes/displacement/vector_displacement.html) node
to the displacement input of the Material Output node. Procedural, painted or baked textures can
then be connected to these nodes.

[image reference removed]

Typical displacement node setup.

Three displacement methods exist, with varying accuracy, performance and memory usage.
The displacement method can be set per material in the
[Material Settings](../../eevee/material_settings.html#bpy-types-material-displacement-method).

[image reference removed]

Bump only, displacement only, and displacement and bump combined.
user: Show practical ways to work with Snap in a Blender add-on or script – include code.

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.xhtml#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.xhtml) of the object
  origins.
user: Show practical ways to work with LatticeModifier(Modifier) in a Blender add-on or script – include code.

assistant: # LatticeModifier(Modifier)

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

*class* bpy.types.LatticeModifier(*Modifier*)
:   Lattice deformation modifier

    invert_vertex_group
    :   Invert vertex group influence

        Type:
        :   boolean, default False

    object
    :   Lattice object to deform with

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

    strength
    :   Strength of modifier effect

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

    vertex_group
    :   Name of Vertex Group which determines influence of modifier per point

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

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: # StudioLights(bpy_struct)

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

*class* bpy.types.StudioLights(*bpy_struct*)
:   Collection of studio lights

    load(*path*, *type*)
    :   Load studiolight from file

        Parameters:
        :   - **path** (*string**,* *(**never None**)*) – File Path, File path where the studio light file can be found
            - **type** (enum in [`'STUDIO'`, `'WORLD'`, `'MATCAP'`]) – Type, The type for the new studio light

        Returns:
        :   Newly created StudioLight

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

    new(*path*)
    :   Create studiolight from default lighting

        Parameters:
        :   **path** (*string**,* *(**never None**)*) – Path, Path to the file that will contain the lighting info (without extension)

        Returns:
        :   Newly created StudioLight

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

    remove(*studio_light*)
    :   Remove a studio light

        Parameters:
        :   **studio_light** ([`StudioLight`](bpy.types.StudioLight.html#bpy.types.StudioLight "bpy.types.StudioLight"), (never None)) – The studio light to remove

    refresh()
    :   Refresh Studio Lights from disk

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

assistant: Mesh
:   Standard geometry output.

UV Map
:   A 2D vector representing the default X/Y coordinates of the [UV Map](../../../../glossary/index.xhtml#term-UV-Map) for the primitive’s shape.
    This can be connected to the [Store Named Attribute Node](../../attribute/store_named_attribute.xhtml),
    to be used once the Geometry Nodes Modifier get applied.
    The UV map must be stored on the face corner in order to be accessed.
user: Show practical ways to work with Options in a Blender add-on or script – include code.

assistant: [image reference removed]

The Mirror modifier.

Axis
:   The X, Y, Z axis along which to mirror, i.e. the axis perpendicular to the mirror plane of symmetry.

    To understand how the axis applies to the mirror direction, if you were to mirror on the X axis,
    the positive X values of the original stroke would become the negative X values on the mirrored side.

    You can select more than one of these axes. And will then get more mirrored copies.
    With one axis you get a single mirror, with two axes four mirrors, and with all three axes eight mirrors.

Object
:   A [Data ID](../../../interface/controls/templates/data_block.html#ui-data-id) to select an object (usually an empty),
    which position and rotation will be used to define mirror planes
    (instead of using the ones from the modified object).

### Influence

See [Influence Filters](../introduction.html#grease-pencil-modifier-influence-filters).
user: Explain Draw Face Sets in complete detail according to the official Blender documentation.

assistant: # Draw Face Sets

Draw new or extend existing [Face Sets](../editing/face_sets.xhtml#sculpting-editing-facesets) with each stroke.

Holding `Ctrl` will continue drawing the same face set as the one under the cursor.
Holding `Shift` will relax or smooth the edges of the face sets
by modifying the underlying topology so edges flow along the perimeter of the face sets.
This will remove the jagged lines visible after drawing or creating a face set.
user: Describe bpy_extras submodule (bpy_extras.image_utils) from the Blender manual or Python API, including usage steps and snippets.

assistant: # bpy_extras submodule (bpy_extras.image_utils)

bpy_extras.image_utils.load_image(*imagepath*, *dirname=''*, *place_holder=False*, *recursive=False*, *ncase_cmp=True*, *convert_callback=None*, *verbose=False*, *relpath=None*, *check_existing=False*, *force_reload=False*)
:   Return an image from the file path with options to search multiple paths
    and return a placeholder if its not found.

    Parameters:
    :   - **filepath** (*str*) – The image filename
          If a path precedes it, this will be searched as well.
        - **dirname** (*str*) – is the directory where the image may be located - any file at
          the end will be ignored.
        - **place_holder** (*bool*) – if True a new place holder image will be created.
          this is useful so later you can relink the image to its original data.
        - **recursive** (*bool*) – If True, directories will be recursively searched.
          Be careful with this if you have files in your root directory because
          it may take a long time.
        - **ncase_cmp** (*bool*) – on non windows systems, find the correct case for the file.
        - **convert_callback** (*function*) – a function that takes an existing path and returns
          a new one. Use this when loading image formats blender may not support,
          the CONVERT_CALLBACK can take the path for a GIF (for example),
          convert it to a PNG and return the PNG’s path.
          For formats blender can read, simply return the path that is given.
        - **relpath** (*str* *|* *None*) – If not None, make the file relative to this path.
        - **check_existing** (*bool*) – If true,
          returns already loaded image data-block if possible
          (based on file path).
        - **force_reload** (*bool*) – If true,
          force reloading of image (only useful when `check_existing`
          is also enabled).

    Returns:
    :   an image or None

    Return type:
    :   [`bpy.types.Image`](bpy.types.Image.html#bpy.types.Image "bpy.types.Image") | None
user: Describe Navigating in Paint Modes from the Blender manual or Python API, including usage steps and snippets.

assistant: # Navigating in Paint Modes

There are different preferences for navigating the 3D Viewport in Blender.
For painting and sculpting specific workflows it is recommended to use any of the following methods.

Center View to Mouse `Alt` `MMB`
:   Center the View on the surface directly under the mouse position.
    This way the rotation point of the viewport can be manually changed to any point you wish to orbit around.

Center on Last Stroke `NumpadPeriod`
:   Center the View on the average position of the last stroke.

Various preferences can also make navigation more convenient.
These can be found in the “Navigation” tab of the preferences.

Orbit Method = Trackball
:   Tumble the view based on the mouse position in your 3D Viewport while rotating.
    This makes it very easy to tilt the viewport freely,
    instead of having the Z axis of the viewport locked.

[Zoom to Mouse Position](../editors/preferences/navigation.html#bpy-types-preferencesinput-use-zoom-to-mouse)
:   Use the mouse position to zoom towards and rotate around the surface that is pointed at.
    This can be an alternative to the repeated manual use of the Center View to Mouse operator.

    The disadvantage is that this navigation preference can lead to accidental navigation
    around backfacing geometry or very distant geometry.
user: Explain CompositorNodeBokehBlur(CompositorNode) in complete detail according to the official Blender documentation.

assistant: # CompositorNodeBokehBlur(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.CompositorNodeBokehBlur(*CompositorNode*)
:   Generate a bokeh type blur similar to Defocus. Unlike defocus an in-focus region is defined in the compositor

    *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: Give a detailed overview of Get Involved: syntax, arguments, return values, common patterns.

assistant: Help write Blender’s future! ✏️ Contribute to the Blender Manual and share your knowledge with creators worldwide.
No matter your expertise, your contributions can make Blender easier to learn and use for everyone.
Join the team and [start documenting Blender](contribute/manual/index.xhtml#about-user-contribute) today!

Translations

Help bring Blender to the world! 🌍
Join the translation effort to make the Blender accessible in more languages.

- [Translate Blender’s UI](contribute/translate_blender.xhtml)
- [Translate Blender’s User Manual](contribute/translate_manual/index.xhtml)
user: Give a detailed overview of IntProperty(Property): syntax, arguments, return values, common patterns.

assistant: # IntProperty(Property)

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

*class* bpy.types.IntProperty(*Property*)
:   RNA integer number property definition

    array_dimensions
    :   Length of each dimension of the array

        Type:
        :   int array of 3 items in [0, inf], [default](#bpy.types.IntProperty.default "bpy.types.IntProperty.default") (0, 0, 0), (readonly)

    array_length
    :   Maximum length of the array, 0 means unlimited

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

    default
    :   Default value for this number

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

    default_array
    :   Default value for this array

        Type:
        :   int array of 3 items in [-inf, inf], [default](#bpy.types.IntProperty.default "bpy.types.IntProperty.default") (0, 0, 0), (readonly)

    hard_max
    :   Maximum value used by buttons

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

    hard_min
    :   Minimum value used by buttons

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

    is_array
    :   Type:
        :   boolean, default False, (readonly)

    soft_max
    :   Maximum value used by buttons

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

    soft_min
    :   Minimum value used by buttons

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

    step
    :   Step size used by number buttons, for floats 1/100th of the step size

        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: Provide the full official documentation entry for UserExtensionRepo(bpy_struct), preserving all code examples.

assistant: # UserExtensionRepo(bpy_struct)

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

*class* bpy.types.UserExtensionRepo(*bpy_struct*)
:   Settings to define an extension repository

    access_token
    :   Personal access token, may be required by some repositories

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

    custom_directory
    :   The local directory containing extensions

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

    directory
    :   The local directory containing extensions

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

    enabled
    :   Enable the repository

        Type:
        :   boolean, default False

    module
    :   Unique module identifier

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

    name
    :   Unique repository name

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

    remote_url
    :   Remote URL to the extension repository, the file-system may be referenced using the file URI scheme: “<file://>”

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

    source
    :   Select if the repository is in a user managed or system provided directory

        - `USER`
          User – Repository managed by the user, stored in user directories.
        - `SYSTEM`
          System – Read-only repository provided by the system.

        Type:
        :   enum in [`'USER'`, `'SYSTEM'`], default `'USER'`

    use_access_token
    :   Repository requires an access token

        Type:
        :   boolean, default False

    use_cache
    :   Downloaded package files are deleted after installation

        Type:
        :   boolean, default False

    use_custom_directory
    :   Manually set the path for extensions to be stored. When disabled a user’s extensions directory is created.

        Type:
        :   boolean, default False

    use_remote_url
    :   Synchronize the repository with a remote URL

        Type:
        :   boolean, default False

    use_sync_on_startup
    :   Allow Blender to check for updates upon launch

        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: How do I use Make Segment in Blender? Include parameters, examples, warnings and best practices.

assistant: While this operator sounds like it creates a single segment (grid line) between two control points,
it’s really more similar to [Bridge Edge Loops](../../meshes/editing/edge/bridge_edge_loops.xhtml#bpy-ops-mesh-bridge-edge-loops) for meshes: it bridges the gap
between two disjoint surfaces by creating as many new segments as necessary. Simply select a border
row (or column) in each surface, then press `F` to connect those borders.

Note that the two surfaces need to be part of the same Surface object. If you have two separate
objects, these first need to be combined into one using [Join](../../../scene_layout/object/editing/join.xhtml).
Also, the borders to connect must have the same number of control points.

### Example

The images below show bridging of two “surfaces” consisting of just a curve, but it’s also possible to
connect sheets.

|  |  |
| --- | --- |
| ../../../_images/modeling_surfaces_editing_control-points_joining-ready.png   Before bridging. | ../../../_images/modeling_surfaces_editing_control-points_joining-complete.png   After bridging. |
user: What is Properties and how is it used in Blender Python scripting?

assistant: The *Closure* node does not have functional properties of its own, but its interface is configurable through the
*Node* tab in the Sidebar. Inputs and outputs can be added, removed, and renamed to define the closure’s signature.

Sync Sockets
:   Updates the current node to match the socket signature of the connected nodes.
    Use this after renaming, adding, or removing sockets.

Define Signature
:   Marks the current zone as the source of a closure signature that other nodes can reference. This ensures consistent
    input and output definitions across multiple closure instances.

### Input Items

List of input sockets
:   Displays one entry per socket defined in the closure. Double-click an entry to rename it.

Add Item
:   Add a new input socket to the closure.

Remove Item
:   Delete the selected input socket.

Type
:   Defines the data type for the selected socket (e.g. Float, Vector, Geometry, Object, Bundle).
    For value types, a default value control appears and is used when the socket is unlinked.

Shape
:   Defines the data structure supported by the input socket, such as a *Single* value, *Field*, or *Grid*.
    The shape determines how the data is evaluated and passed through the node network.
    See [Socket Shape](../../../parts.xhtml#interface-controls-nodes-socket-shape) for more information.

### Output Items

Available when the closure’s output zone is selected.

List of output sockets
:   Displays one entry per socket defined in the closure output. Double-click to rename.

Add Item
:   Add a new output socket to the closure.

Remove Item
:   Delete the selected output socket.

Type
:   Defines the data type for the selected socket (e.g. Float, Vector, Geometry, Object, Bundle).
    For value types, a default value control appears and is used when the socket is unlinked.

Shape
:   Defines the data structure supported by the input socket, such as a *Single* value, *Field*, or *Grid*.
    The shape determines how the data is evaluated and passed through the node network.
    See [Socket Shape](../../../parts.xhtml#interface-controls-nodes-socket-shape) for more information.
user: What is GeometryNodeSelfObject(GeometryNode) and how is it used in Blender Python scripting?

assistant: # GeometryNodeSelfObject(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.GeometryNodeSelfObject(*GeometryNode*)
:   Retrieve the object that contains the geometry nodes modifier currently being executed

    *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 Calling Operators: syntax, arguments, return values, common patterns.

assistant: Provides Python access to calling operators, this includes operators written in
C++, Python or macros.

Only keyword arguments can be used to pass operator properties.

Operators don’t have return values as you might expect,
instead they return a set() which is made up of:
`{'RUNNING_MODAL', 'CANCELLED', 'FINISHED', 'PASS_THROUGH'}`.
Common return values are `{'FINISHED'}` and `{'CANCELLED'}`, the latter
meaning that the operator execution was aborted without making any changes or
saving an undo history entry.

If operator was cancelled but there wasn’t any reports from it with `{'ERROR'}` type,
it will just return `{'CANCELLED'}` without raising any exceptions.
However, if there are error reports, a `RuntimeError` will be raised
after the operator finishes execution, including all error report messages,
regardless of the return status (even if it was `{'FINISHED'}`).

Calling an operator in the wrong context will raise a `RuntimeError`,
there is a poll() method to avoid this problem.

Note that the operator ID (bl_idname) in this example is `mesh.subdivide`,
`bpy.ops` is just the access path for Python.

### Keywords and Positional Arguments

For calling operators keywords are used for operator properties and
positional arguments are used to define how the operator is called.

There are 2 optional positional arguments (documented in detail below).

```
bpy.ops.test.operator(execution_context, undo)
```

- execution_context - `str` (enum).
- undo - `bool` type.

Each of these arguments is optional, but must be given in the order above.

```
import bpy

# Calling an operator.
bpy.ops.mesh.subdivide(number_cuts=3, smoothness=0.5)

# Check poll() to avoid exception.
if bpy.ops.object.mode_set.poll():
    bpy.ops.object.mode_set(mode='EDIT')
```
user: How do I use Documentation Todo List in Blender? Include parameters, examples, warnings and best practices.

assistant: # Documentation Todo List

This page provides a list of changes that need to be made to the manual. This is a great place for new contributors to
start. This page is auto-generated from any items marked with the `.. todo::` tag.

It is recommended to also check the [documentation workboard](https://projects.blender.org/blender/documentation/projects) since this will contain larger initiatives and
structured work efforts, as well as laying out priorities.
user: How do I use Outputs in Blender? Include parameters, examples, warnings and best practices.

assistant: Volume
:   The resulting volume geometry after optionally removing the retrieved grid.

Grid
:   The extracted grid corresponding to the given *Name* and *Data Type*.
    This grid can be passed to other nodes such as
    [Sample Grid](../sample/sample_grid.html) or
    [Grid to Mesh](../operations/grid_to_mesh.html)
    for further manipulation or conversion.
user: Explain Brush Curve Preset Items in complete detail according to the official Blender documentation.

assistant: # Brush Curve Preset Items

CUSTOM:
:   Custom.

SMOOTH:
:   Smooth.

SMOOTHER:
:   Smoother.

SPHERE:
:   Sphere.

ROOT:
:   Root.

SHARP:
:   Sharp.

LIN:
:   Linear.

POW4:
:   Sharper.

INVSQUARE:
:   Inverse Square.

CONSTANT:
:   Constant.
user: Show practical ways to work with Inputs in a Blender add-on or script – include code.

assistant: Image
:   Standard color input.

Alpha
:   The amount of Alpha can be set for the whole image by using the input field or
    per pixel by connecting to the socket.

Type
:   Method to mix the alpha with the input *Image*.

    Apply Mask:
    :   Multiply the input images RGBA channels by the *Alpha* input value.
        In this cases, the output is using [Premultiplied Alpha](../../../glossary/index.xhtml#term-Premultiplied-Alpha).

    Replace Alpha:
    :   Replace the inputs alpha channel with the *Alpha* input value.
        In this cases, the output is using [Straight Alpha](../../../glossary/index.xhtml#term-Straight-Alpha).
user: Explain Options in complete detail according to the official Blender documentation.

assistant: Progression
:   Profile of blend.

    Linear
    :   A linear progression.

Quadratic
:   A quadratic progression.

Easing
:   A flowing, nonlinear progression.

Diagonal
:   A diagonal progression.

Spherical
:   A progression with the shape of a three-dimensional ball.

Quadratic Sphere
:   A quadratic progression with the shape of a three-dimensional ball.

Radial
:   A radial progression: *Horizontal* / *Vertical*.
    The direction of the progression is flipped a quarter turn.
user: Show practical ways to work with Main Region in a Blender add-on or script – include code.

assistant: The Dope Sheet Editor shows a stack of [channels](../graph_editor/channels/index.xhtml)
(animatable properties), and for each channel, a series of keyframes laid out along the time axis.

[image reference removed]

The Dope Sheet Editor with object channels.

Keyframes can take on various colors and shapes:

|  |  |
| --- | --- |
| Gray | Unselected |
| Yellow | Selected |
| Other colors | Custom keyframe tag set by the user (Key ‣ Keyframe Type) |
| Diamond | Free Keyframe Handle (Key ‣ Handle Type) |
| Round | Auto-Clamped Keyframe Handle |
| Circle | Automatic Keyframe Handle |
| Square | Vector Keyframe Handle |
| Rhombus | Aligned Keyframe Handle |
| Gray bar between keys | Held key (the two keyframes are identical) |
| Green line between keys | The curve segment uses custom interpolation (Key ‣ Interpolation Mode) |
| Upwards arrow | Local maximum in curve (visible if View ‣ Show Curve Extremes is enabled) |
| Downwards arrow | Local minimum in curve |

Keyframes can be selected by clicking and moved by dragging. See the [Select](editing.xhtml#dopesheet-select-menu)
and [Key](editing.xhtml#dopesheet-key-menu) menus for more options.
user: Give a detailed overview of CompositorNodeNormal(CompositorNode): syntax, arguments, return values, common patterns.

assistant: # CompositorNodeNormal(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.CompositorNodeNormal(*CompositorNode*)
:   Input normalized normal values to other nodes in the tree

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

    update()

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: # LineStyleColorModifier_DistanceFromCamera(LineStyleColorModifier)

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

*class* bpy.types.LineStyleColorModifier_DistanceFromCamera(*LineStyleColorModifier*)
:   Change line color based on the distance from the camera

    blend
    :   Specify how the modifier value is blended into the base value

        Type:
        :   enum in [Ramp Blend Items](bpy_types_enum_items/ramp_blend_items.html#rna-enum-ramp-blend-items), default `'MIX'`

    color_ramp
    :   Color ramp used to change line color

        Type:
        :   [`ColorRamp`](bpy.types.ColorRamp.html#bpy.types.ColorRamp "bpy.types.ColorRamp"), (readonly)

    expanded
    :   True if the modifier tab is expanded

        Type:
        :   boolean, default False

    influence
    :   Influence factor by which the modifier changes the property

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

    range_max
    :   Upper bound of the input range the mapping is applied

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

    range_min
    :   Lower bound of the input range the mapping is applied

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

    type
    :   Type of the modifier

        Type:
        :   enum in [Linestyle Color Modifier Type Items](bpy_types_enum_items/linestyle_color_modifier_type_items.html#rna-enum-linestyle-color-modifier-type-items), default `'ALONG_STROKE'`, (readonly)

    use
    :   Enable or disable this modifier during stroke rendering

        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](#bpy.types.LineStyleColorModifier_DistanceFromCamera.type "bpy.types.LineStyleColorModifier_DistanceFromCamera.type")
user: Provide the full official documentation entry for Auto-Masking, preserving all code examples.

assistant: [Auto-Masking](../controls.xhtml) is also a fast way of only editing specific geometry
without having to manually create a new mask or hide geometry.
This feature is especially useful in combination with face sets.

[image reference removed]
user: Show practical ways to work with Options in a Blender add-on or script – include code.

assistant: Marble Type
:   Three settings for soft to more clearly defined *Marble*.

    Soft, Sharp, Sharper

Noise basis
:   Shape of wave to produce bands.

    Sine, Saw, Triangle

Noise Type
:   The noise function works with two methods.

    Soft, Hard

Size
:   The dimensions of the noise table.

Depth
:   The depth of the *Marble* calculation.
    A higher value results in greater calculation time, but also in finer details.

Turbulence
:   The turbulence of the sine bands.
user: Provide the full official documentation entry for CompositorNodeMovieDistortion(CompositorNode), preserving all code examples.

assistant: # CompositorNodeMovieDistortion(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.CompositorNodeMovieDistortion(*CompositorNode*)
:   Remove lens distortion from footage, using motion tracking camera lens settings

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

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

    update()

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: The *Influence* is a strength multiplier for the constraint.

[image reference removed]

By default, it’s 1, meaning that (for example) a *Copy Location* constraint fully overrides
the object’s original location.

Setting it to 0 is the same as disabling or even deleting the constraint.

Setting it between 0 and 1 will give an interpolated result. For example, a value of 0.5 would
place the object halfway between its previous location and the location of the *Target*.

The *Influence* can be keyframed, meaning constraints can be turned on and off over the course
of an animation.

Disable and Keep Transform
:   [Applies](header.xhtml#bpy-ops-constraint-apply) the result of the constraint to the object’s/bone’s
    own transformation, but instead of deleting the constraint, disables it by setting the *Influence* to 0.
    As with applying, this may not work perfectly if the constraint is not the first in the stack.
user: Provide the full official documentation entry for Fill Brushes, preserving all code examples.

assistant: Fill brushes are the special type of brushes that uses Grease Pencil for the *Fill* tools.
The brush can be changed in the Tool Settings.
The different fill brushes are settings variations of the same *Fill Brush*.
You can create many brushes, each with unique settings to get different result when filling areas.
user: Explain Gravity in complete detail according to the official Blender documentation.

assistant: # Gravity

Gravity is a global setting that is applied to all physics systems in a scene.
It can be found in the scene tab.
This value is generally fine left at its default, -9.810 on the Z axis,
which is the force of gravity in the real world.
Changing this value would simulate a lower or higher force of gravity.
Gravity denoted g, measurement *m* × *s*-2.

Gravity is applied in the same way to all physics systems.

Gravity is practically the same around the entirety of planet *Earth*.
For rendering scenes on The Moon, use -1.622 *m* × *s*-2 on the Z axis.
Another popular gravity value might be for Mars which
has a gravitation acceleration of -3.69 *m* × *s*-2 on the Z Axis.