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

assistant: [image reference removed]

The Vertex Weight Proximity modifier panel.

Vertex Group
:   The vertex group to affect.

Target Object
:   The object from which to compute distances.

Proximity Mode
:   Object Distance
    :   Use the distance between the modified mesh object and the target object as
        weight for all vertices in the affected vertex group.

    Geometry Distance
    :   Use the distance between each vertex and the target object, or its geometry.

        Vertex
        :   This will set each vertex’s weight from its distance to the nearest vertex of the target object.

        Edge
        :   This will set each vertex’s weight from its distance to the nearest edge of the target object.

        Face
        :   This will set each vertex’s weight from its distance to the nearest face of the target object.

Lowest
:   Distance mapping to 0.0 weight.

Highest
:   Distance mapping to 1.0 weight.

Normalize Weights
:   Scale the weights in the vertex group to keep the relative weight
    but the lowest and highest values follow the full 0 - 1 range.

### Falloff

Type
:   Type of mapping.

    Linear
    :   No mapping.

    Custom Curve
    :   Allows you to manually define the mapping using a curve.

    Sharp, Smooth, Root and Sphere
    :   These are classical mapping functions, from spikiest to roundest.

    Random
    :   Uses a random value for each vertex.

    Median Step
    :   Creates binary weights (0.0 or 1.0), with 0.5 as cutting value.

Invert
:   Inverts the falloff.

### Influence

Those settings are the same for the three *Vertex Weight* modifiers,
see the [Vertex Weight Edit modifier](weight_edit.xhtml#modeling-modifiers-weight-edit-influence-mask-options) page.
user: Describe Subdivide from the Blender manual or Python API, including usage steps and snippets.

assistant: The *Subdivide* operator adds new control points to selected curve segments by dividing them into smaller sections.
This is useful for creating smoother transitions, preparing curves for finer adjustments,
or adding more detail for animation or modeling.

Number of Cuts
:   Specifies the number of divisions for each selected segment; each cut adds one new control point per segment.

Selected Points
:   When enabled, limits the effect to only the selected points within the stroke.
user: Explain References in complete detail according to the official Blender documentation.

assistant: |  |  |
| --- | --- |
| - [`bpy.context.active_editable_fcurve`](bpy.context.html#bpy.context.active_editable_fcurve "bpy.context.active_editable_fcurve") - [`bpy.context.editable_fcurves`](bpy.context.html#bpy.context.editable_fcurves "bpy.context.editable_fcurves") - [`bpy.context.selected_editable_fcurves`](bpy.context.html#bpy.context.selected_editable_fcurves "bpy.context.selected_editable_fcurves") - [`bpy.context.selected_visible_fcurves`](bpy.context.html#bpy.context.selected_visible_fcurves "bpy.context.selected_visible_fcurves") - [`bpy.context.visible_fcurves`](bpy.context.html#bpy.context.visible_fcurves "bpy.context.visible_fcurves") - [`Action.fcurve_ensure_for_datablock`](bpy.types.Action.html#bpy.types.Action.fcurve_ensure_for_datablock "bpy.types.Action.fcurve_ensure_for_datablock") - [`ActionChannelbag.fcurves`](bpy.types.ActionChannelbag.html#bpy.types.ActionChannelbag.fcurves "bpy.types.ActionChannelbag.fcurves") - [`ActionChannelbagFCurves.ensure`](bpy.types.ActionChannelbagFCurves.html#bpy.types.ActionChannelbagFCurves.ensure "bpy.types.ActionChannelbagFCurves.ensure") - [`ActionChannelbagFCurves.find`](bpy.types.ActionChannelbagFCurves.html#bpy.types.ActionChannelbagFCurves.find "bpy.types.ActionChannelbagFCurves.find") - [`ActionChannelbagFCurves.new`](bpy.types.ActionChannelbagFCurves.html#bpy.types.ActionChannelbagFCurves.new "bpy.types.ActionChannelbagFCurves.new") - [`ActionChannelbagFCurves.new_from_fcurve`](bpy.types.ActionChannelbagFCurves.html#bpy.types.ActionChannelbagFCurves.new_from_fcurve "bpy.types.ActionChannelbagFCurves.new_from_fcurve") | - [`ActionChannelbagFCurves.new_from_fcurve`](bpy.types.ActionChannelbagFCurves.html#bpy.types.ActionChannelbagFCurves.new_from_fcurve "bpy.types.ActionChannelbagFCurves.new_from_fcurve") - [`ActionChannelbagFCurves.remove`](bpy.types.ActionChannelbagFCurves.html#bpy.types.ActionChannelbagFCurves.remove "bpy.types.ActionChannelbagFCurves.remove") - [`ActionGroup.channels`](bpy.types.ActionGroup.html#bpy.types.ActionGroup.channels "bpy.types.ActionGroup.channels") - [`AnimData.drivers`](bpy.types.AnimData.html#bpy.types.AnimData.drivers "bpy.types.AnimData.drivers") - [`AnimDataDrivers.find`](bpy.types.AnimDataDrivers.html#bpy.types.AnimDataDrivers.find "bpy.types.AnimDataDrivers.find") - [`AnimDataDrivers.from_existing`](bpy.types.AnimDataDrivers.html#bpy.types.AnimDataDrivers.from_existing "bpy.types.AnimDataDrivers.from_existing") - [`AnimDataDrivers.from_existing`](bpy.types.AnimDataDrivers.html#bpy.types.AnimDataDrivers.from_existing "bpy.types.AnimDataDrivers.from_existing") - [`AnimDataDrivers.new`](bpy.types.AnimDataDrivers.html#bpy.types.AnimDataDrivers.new "bpy.types.AnimDataDrivers.new") - [`AnimDataDrivers.remove`](bpy.types.AnimDataDrivers.html#bpy.types.AnimDataDrivers.remove "bpy.types.AnimDataDrivers.remove") - [`NlaStrip.fcurves`](bpy.types.NlaStrip.html#bpy.types.NlaStrip.fcurves "bpy.types.NlaStrip.fcurves") - [`NlaStripFCurves.find`](bpy.types.NlaStripFCurves.html#bpy.types.NlaStripFCurves.find "bpy.types.NlaStripFCurves.find") |
user: Show practical ways to work with Controls in a Blender add-on or script – include code.

assistant: :   Adds a new stop between the selected stop and the one before it.
:   Deletes the selected color stop.

Tools
:   Contains more operators for the color ramp.

    Flip Color Ramp
    :   Flips the gradient, mirroring the positions of the stops.

    Distribute Stops from Left
    :   Distribute the stops so that every step has the same space to the right.
        This is mostly useful when used with Constant interpolation mode.

    Distribute Stops Evenly
    :   Distribute the stops so that all neighbors have the same space between them.

    Eyedropper `E`
    :   An [Eyedropper](../buttons/eyedropper.html#ui-eyedropper) to sample a color or gradient from the interface to be used in the color ramp.

    Reset Color Ramp
    :   Resets the color ramp to its default state.

Color Mode
:   Selection of the [Color Model](../../../glossary/index.html#term-Color-Model) used for interpolation.

    RGB:
    :   Blends color by mixing each color channel and combining.

    HSV/HSL:
    :   Blends colors by first converting to HSV or HSL, mixing, then combining again.
        This has the advantage of maintaining saturation between different hues,
        where RGB would de-saturate. This allows for a richer gradient.

Color Interpolation
:   The interpolation method to use across the ramp.

    RGB
    :   B-Spline:
        :   Uses a B-spline interpolation for the color stops.

        Cardinal:
        :   Uses a cardinal interpolation for the color stops.

        Linear:
        :   Uses a linear interpolation for the color stops.

        Ease:
        :   Uses an ease interpolation for the color stops.

        Constant:
        :   Uses a constant interpolation for the color stops.

    HSV/HSL
    :   Clockwise:
        :   Clockwise interpolation around the HSV/HSL wheel.

        Counter-Clockwise:
        :   Counterclockwise around the HSV/HSL wheel.

        Near:
        :   Nearest route around the wheel.

        Far:
        :   Furthest route around the wheel.

        [[image reference removed]](../../../_images/interface_controls_templates_color-ramp_interpolation.png)

        HSV and HSL interpolation options.

Active Color Stop
:   Index of the active color stop (shown as a dashed line).
    Offers an alternative way of selecting a stop in case it’s so close to others
    that it’s hard to select it directly.

Position
:   This slider controls the position of the selected color stop in the range.

Color
:   A [color field](../buttons/fields.html) where you can
    specify the color and alpha of the selected stop.

### Shortcuts

- `LMB` (drag) moves color stops.
- `Ctrl`-`LMB` (click) adds a new color stop.
user: Show practical ways to work with NodeSeparateBundle(NodeInternal) in a Blender add-on or script – include code.

assistant: # NodeSeparateBundle(NodeInternal)

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

*class* bpy.types.NodeSeparateBundle(*NodeInternal*)
:   Split a bundle into multiple sockets.

    active_index
    :   Index of the active item

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

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

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

        Type:
        :   boolean, default False

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: # Examples

To start with cloth, the first thing you need, of course, is some fabric. So,
let us delete the default cube and add a plane. In order to get some good floppy and flexible fabric,
you will need to subdivide it several times, about eight is a good number.
So `Tab` into *Edit Mode* and subdivide the mesh a couple of times.

Now, we will make this cloth by going to the Physics tab.
Scroll down until you see the *Cloth* panel, and press the *Cloth* button.
Now, a lot of settings will appear, most of which we will ignore for now.

That is all you need to do to set your cloth up for animating,
but if you playback the animation, the drop of your newly created fabric will be quite unspectacular.
That is what we will cover in the next two sections about pinning and colliding.
user: Explain Holdout in complete detail according to the official Blender documentation.

assistant: # Holdout

[image reference removed]

The *Holdout* shader node is used to create a “hole” in the image with zero alpha
transparency, which is useful for compositing (see [Alpha Channel](../../../glossary/index.html#term-Alpha-Channel)).
user: Provide the full official documentation entry for References, preserving all code examples.

assistant: |  |  |
| --- | --- |
| - [`SpaceSpreadsheet.viewer_path`](bpy.types.SpaceSpreadsheet.html#bpy.types.SpaceSpreadsheet.viewer_path "bpy.types.SpaceSpreadsheet.viewer_path") | - [`SpreadsheetTableIDGeometry.viewer_path`](bpy.types.SpreadsheetTableIDGeometry.html#bpy.types.SpreadsheetTableIDGeometry.viewer_path "bpy.types.SpreadsheetTableIDGeometry.viewer_path") |
user: Provide the full official documentation entry for Extrude Region, preserving all code examples.

assistant: # Extrude Region

Extrusion tools duplicate vertices, while keeping the new geometry connected with the original vertices.
Vertices are turned into edges and edges will form faces.

|  |  |
| --- | --- |
| ../../../_images/modeling_meshes_tools_extrude-region_vert.png   Single vertex extruded. | ../../../_images/modeling_meshes_tools_extrude-region_edge.png   Single edge extruded. |

This tool is of paramount importance for creating new geometry.
It allows you to create parallelepipeds from rectangles and cylinders from circles,
as well as easily creating such things as tree limbs.

The axis on which vertices and edges are extruded along can be set interactively.
Faces are extruded by default along their averaged normal.
The extrusion can be limited to a single axis by specifying an axis;
see [Axis Locking](../../../scene_layout/object/editing/transform/control/axis_locking.xhtml).

The extrude tools differentiate in how the new geometry is connected in itself.

Only the border loop gets extruded.
The inner region of the selection gets moved unchanged with the extrusion.

|  |  |  |
| --- | --- | --- |
| ../../../_images/modeling_meshes_tools_extrude-region_face-before.png   Selected face. | ../../../_images/modeling_meshes_tools_extrude-region_face-after.png   During extrude. | ../../../_images/modeling_meshes_tools_extrude-region_face-after-zaxis.png   Set to Z axis. |
user: How do I use Bending Stiffness in Blender? Include parameters, examples, warnings and best practices.

assistant: The second method to stop an object from collapsing is to give it *Bending Stiffness.*
Just like the other settings, this can be combined with *Stiffness* to add bending
resistance to the diagonal springs as well.

We first do the same cube experiment as before, using only *Bending Stiffness*:

Bending Stiffness.

|  |  |  |
| --- | --- | --- |
| ../../../_images/physics_soft-body_forces_interior_quadvstri-sb-001.png   Frame 1. | ../../../_images/physics_soft-body_forces_interior_quadvstri-sb-bs-036.png   Frame 36. | ../../../_images/physics_soft-body_forces_interior_quadvstri-sb-bs-401.png   Frame 401. |

Both cubes keep their shape. Now, we try the same thing with subdivided planes,
again a quad-based one and a triangulated one:

|  |  |  |
| --- | --- | --- |
| ../../../_images/physics_soft-body_forces_interior_quadvstri-bending-001.png   Two planes falling. | ../../../_images/physics_soft-body_forces_interior_quadvstri-bending-101.png   No bending stiffness. | ../../../_images/physics_soft-body_forces_interior_quadvstri-bending-high-101.png   High bending stiffness (10). |

Without any *Bending Stiffness*, the faces can rotate freely as though their edges were hinges.
Enabling *Stiffness* to add diagonal springs would not change this (just as triangulating doesn’t).

With a high *Bending Stiffness*, however, the edges resist this rotation, and the planes
act more like planks than towels.
user: Give a detailed overview of Troubleshooting macOS – AMD: syntax, arguments, return values, common patterns.

assistant: # Troubleshooting macOS – AMD

Blender uses OpenGL for the 3D Viewport and user interface. The graphics processing unit (GPU) and driver have a big
impact on Blender’s behavior and performance.

This section lists possible solutions for graphics glitches, problems with EEVEE and Cycles, and crashes related to
your GPU.
user: How do I use Instance Processing in Blender? Include parameters, examples, warnings and best practices.

assistant: Almost all nodes that process geometry do so by processing each unique
geometry separately rather than realized geometry. For example,
if a [Subdivision Surface Node](mesh/operations/subdivision_surface.xhtml) was placed at
the end of the example above, it would only have to subdivide three meshes,
rather than each instance of a mesh. Another important example is processing with
the output of the [String to Curves Node](utilities/text/string_to_curves.xhtml),
where each unique character only has to be processed once.

This method can improve performance a lot, but it means that the result of an operation
will be the same for every instance of a certain geometry. In order to have unique results
for every instance, the [Realize Instances Node](instances/realize_instances.xhtml)
node can be used.
user: Give a detailed overview of Sections: syntax, arguments, return values, common patterns.

assistant: [[image reference removed]](interface/index.html)

[User Interface](interface/index.html)
:   An introduction to Blender’s window system, widgets and tools.

[[image reference removed]](editors/index.html)

[Editors](editors/index.html)
:   Overview of the interface and functionality of all editors.

[[image reference removed]](scene_layout/index.html)

[Scenes & Objects](scene_layout/index.html)
:   Objects and their organization into scenes, view layers and collections.

[[image reference removed]](modeling/index.html)

[Modeling](modeling/index.html)
:   Meshes, curves, metaballs, text, modeling tools, and modifiers.

[[image reference removed]](sculpt_paint/index.html)

[Sculpting & Painting](sculpt_paint/index.html)
:   Sculpting, texture painting and vertex painting.

[[image reference removed]](grease_pencil/index.html)

[Grease Pencil](grease_pencil/index.html)
:   2D drawing and animation with Grease Pencil.

[[image reference removed]](animation/index.html)

[Animation & Rigging](animation/index.html)
:   Keyframes, drivers, constraints, armatures and shape keys.

[[image reference removed]](physics/index.html)

[Physics](physics/index.html)
:   Physics simulations, particle systems and dynamic paint.

[[image reference removed]](render/index.html)

[Rendering](render/index.html)
:   Rendering and shading with EEVEE, Cycles and Freestyle.

[[image reference removed]](compositing/index.html)

[Compositing](compositing/index.html)
:   Post-processing with the compositing nodes.

[[image reference removed]](movie_clip/index.html)

[Motion Tracking & Masking](movie_clip/index.html)
:   Video motion tracking & masking.

[[image reference removed]](video_editing/index.html)

[Video Editing](video_editing/index.html)
:   Video editing with the sequencer.

[Assets, Files, & Data System](files/index.html)
:   Data-block management and the structure of blend-files.

[Add-ons](addons/index.html)
:   Additional functionality available as add-ons.

[Advanced](advanced/index.html)
:   Python scripting, how to write add-ons and a reference for command-line arguments.

[Troubleshooting](troubleshooting/index.html)
:   Solving crashes, graphics issues and Python errors, recovering data and reporting bugs.

[Glossary](glossary/index.html)
:   A list of terms and definitions used in Blender and this manual.

[Manual Index](genindex.html)
:   A list of terms linked to the Glossary.
user: Show practical ways to work with GeometryNodeDistributePointsInGrid(GeometryNode) in a Blender add-on or script – include code.

assistant: # GeometryNodeDistributePointsInGrid(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.GeometryNodeDistributePointsInGrid(*GeometryNode*)
:   Generate points inside a volume grid

    mode
    :   Method to use for scattering points

        - `DENSITY_RANDOM`
          Random – Distribute points randomly inside of the volume.
        - `DENSITY_GRID`
          Grid – Distribute the points in a grid pattern inside of the volume.

        Type:
        :   enum in [`'DENSITY_RANDOM'`, `'DENSITY_GRID'`], default `'DENSITY_RANDOM'`

    *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 Installing from Steam: syntax, arguments, return values, common patterns.

assistant: # Installing from Steam

Steam is a software distribution platform. Blender can be downloaded and updated using the Steam client by following
the steps described below on Linux, macOS, or Windows.

Download and install the [Steam client](https://store.steampowered.com/) for your operating system.

Once it is installed, open the client and login to your Steam account, or create an account if you don’t already have
one. After logging in, navigate to the *Store* tab, search for “Blender”, and press the green **Install** button.
Blender should now be available in the *Library* tab of the Steam client, where it can be launched. Optionally, a
shortcut can be added to your desktop by right-clicking on it in your library list.
user: Explain Output in complete detail according to the official Blender documentation.

assistant: Face Set
:   Integer indicating which face set a face is in, or 0 when the mesh does not have face sets.
    When evaluated in the edge or point domain, outputs an interpolated value based on the connected faces.

Exists
:   Boolean value that indicates whether the element’s mesh has face sets.
user: How do I use File Paths in Blender? Include parameters, examples, warnings and best practices.

assistant: # File Paths

The *File* section in *Preferences* allows you to configure auto-save preferences
and set default file paths for blend-files, rendered images, and more.

Locations for various external files can be set for the following options:

[image reference removed]

Preferences File Paths section.
user: Explain Int2AttributeValue(bpy_struct) in complete detail according to the official Blender documentation.

assistant: # Int2AttributeValue(bpy_struct)

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

*class* bpy.types.Int2AttributeValue(*bpy_struct*)
:   2D value in geometry attribute

    value
    :   2D vector

        Type:
        :   int array of 2 items in [-inf, inf], default (0, 0)

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Give a detailed overview of Orbit & Pan: syntax, arguments, return values, common patterns.

assistant: Orbit Method
:   Choose your preferred method of interactively rotating the 3D Viewport.

    Turntable:
    :   Rotates the view keeping the horizon horizontal.

        This behaves like a potter’s wheel or record player where you have two axes of rotation available,
        and the world seems to have a better definition of what is “Up” and “Down” in it.

        The drawback to using the *Turntable* style is that you lose some flexibility when working with your objects.
        However, you gain the sense of “Up” and “Down” which can help if you are feeling disoriented.

    Trackball:
    :   Is less restrictive, allowing any orientation.

Orbit Sensitivity
:   Adjusts the reactivity/speed of orbiting in the 3D Viewport.
    This setting works differently depending on what *Orbit Method* is used:

    - Turntable: *Orbit Sensitivity* controls the amount
      of rotation per-pixel to control how fast the 3D Viewport rotates.
    - Trackball: *Orbit Sensitivity* as a simple factor for how fast the 3D Viewport rotates.

Orbit Around Selection
:   The selection center becomes the rotation center of the viewport.
    When there is no selection the last selection will be used.

    The method used to calculate the center depends on the current mode:

    - Object mode uses the selections bounding box center.
    - Edit & pose mode use the selected elements center.
    - Paint modes use the center of the last brush stroke.

Auto – Perspective
:   When enabled, the view switches to Perspective when orbiting the view,
    and to Orthographic when aligning to an axis (Top, Side, Front, Back, etc.).

    When disabled, this switching needs to be done manually.

Auto – Depth
:   Use the depth under the mouse to improve view pan, rotate, zoom functionality.
    Useful in combination with *Zoom To Mouse Position*.

Smooth View
:   Time (in milliseconds) the animation takes when changing views
    (Top/Side/Front/Camera…). Reduce to zero to remove the animation.

Rotation Angle
:   Rotation step size in degrees, when `Numpad4`, `Numpad6`, `Numpad8`,
    or `Numpad2` are used to rotate the 3D Viewport.
user: Show practical ways to work with Surface Deform Modifier in a Blender add-on or script – include code.

assistant: # Surface Deform Modifier

The *Surface Deform* modifier allows an arbitrary mesh surface to
control the deformation of another, essentially transferring its motion/deformation.
One great use for this is to have a proxy mesh for cloth simulation,
which will in turn drive the motion of your final and more detailed mesh,
which would otherwise not be suitable for simulation.
user: How do I use Properties in Blender? Include parameters, examples, warnings and best practices.

assistant: Distribution
:   Microfacet distribution to use.

    GGX:
    :   GGX microfacet distribution.

    Multiscatter GGX:
    :   Takes multiple scattering events between microfacets into account.
        This gives more energy conserving results, which would otherwise be visible as excessive darkening.

    Beckmann:
    :   Cycles Only
        Beckmann microfacet distribution.
user: How do I use Naming in Blender? Include parameters, examples, warnings and best practices.

assistant: # Naming

You can rename your bones, either using the *Name* field in the *Bones Properties*.
It is also possible to rename by double-clicking bones in the Outliner.

Blender also provides you some tools that take advantage of bones named in a left/right
symmetry fashion, and others that automatically name the bones of an armature.
user: Explain Inherited Properties in complete detail according to the official Blender documentation.

assistant: |  |  |
| --- | --- |
| - [`bpy_struct.id_data`](bpy.types.bpy_struct.html#bpy.types.bpy_struct.id_data "bpy.types.bpy_struct.id_data") - [`Space.type`](bpy.types.Space.html#bpy.types.Space.type "bpy.types.Space.type") | - [`Space.show_locked_time`](bpy.types.Space.html#bpy.types.Space.show_locked_time "bpy.types.Space.show_locked_time") - [`Space.show_region_header`](bpy.types.Space.html#bpy.types.Space.show_region_header "bpy.types.Space.show_region_header") |
user: Give a detailed overview of Inputs: syntax, arguments, return values, common patterns.

assistant: Image
:   Standard color input image.

Contrast
:   Adjusts the difference between light and dark areas.
    Increasing contrast deepens shadows and brightens highlights,
    while decreasing it flattens the image’s tonal range.

Color Boost
:   Enhances the intensity of colors without oversaturating them.
    Useful for enriching dull or washed-out images.

Clarity
:   Emphasizes midtone contrast and local details,
    improving the sense of depth and definition.

Detail
:   Adjusts the visibility of small-scale texture information.
    Higher values bring out fine details; lower values smooth them.

Sharpen
:   Increases edge definition by enhancing high-frequency detail.
    Useful for counteracting blur from downsampling or lens effects.

Preserve Colors
:   Maintains natural color balance when applying tonal adjustments.
    When disabled, contrast and clarity may shift the color hue or saturation.
user: Explain Examples in complete detail according to the official Blender documentation.

assistant: Combined with the [Index of Nearest](../modeling/geometry_nodes/geometry/sample/index_of_nearest.html),
this can be used for a number of sphere-based simulations.

[image reference removed]

Index of Nearest sample file CC-BY Sean Christofferson.
user: What is Assign & Select and how is it used in Blender Python scripting?

assistant: Assign
:   Assigns the selected bones to the active bone collection.

Remove
:   Removes the selected bones from the active bone collection.

Select
:   Selects the bones in the active bone collection.

Deselect
:   Deselects the bones in the active bone collection.
user: Show practical ways to work with Paste UVs in a Blender add-on or script – include code.

assistant: For each selected UV island, the *Paste UVs* tool will attempt to match the topology of an island stored in the
internal clipboard. If a match is found, the UVs stored in the clipboard for the original island will be pasted
onto the currently selected island.

For example, if a triangle attached to a quad attached to a quad is in the clipboard, then a different triangle
<=> quad <=> quad is selected, then the topologies match, and the UVs will be pasted over the current selection.

For best results, you may want to use the Rip tool, or UV > Split > Selection, prior to using
*Paste UVs*.
user: Explain SurfaceDeformModifier(Modifier) in complete detail according to the official Blender documentation.

assistant: # SurfaceDeformModifier(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.SurfaceDeformModifier(*Modifier*)
:   falloff
    :   Controls how much nearby polygons influence deformation

        Type:
        :   float in [2, 16], default 4.0

    invert_vertex_group
    :   Invert vertex group influence

        Type:
        :   boolean, default False

    is_bound
    :   Whether geometry has been bound to target mesh

        Type:
        :   boolean, default False, (readonly)

    strength
    :   Strength of modifier deformations

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

    target
    :   Mesh object to deform with

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

    use_sparse_bind
    :   Only record binding data for vertices matching the vertex group at the time of bind

        Type:
        :   boolean, default False

    vertex_group
    :   Vertex group name for selecting/weighting the affected areas

        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: What is IO_FH_svg_as_curves(FileHandler) and how is it used in Blender Python scripting?

assistant: # IO_FH_svg_as_curves(FileHandler)

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

*class* bpy.types.IO_FH_svg_as_curves(*FileHandler*)
:   *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 The Weighting Color Code from the Blender manual or Python API, including usage steps and snippets.

assistant: Weights are visualized by a gradient using a cold/hot color system,
such that areas of low value (with weights close to 0.0) are displayed as blue (cold)
and areas of high value (with weights close to 1.0) are displayed as red (hot).
And all in-between values are displayed as rainbow colors (blue, green, yellow, orange, red).

[image reference removed]

The color spectrum and their respective weights.

In addition to the above described color code, Blender has a special visual notation
(as an option) for unreferenced vertices: They are displayed as black.
Thus you can see the referenced areas (displayed as cold/hot colors) and
the unreferenced areas (in black) at the same time.
This is most useful when you look for weighting errors.
See [Viewport Overlays](../../editors/3dview/display/overlays.xhtml#dview-overlay-weight-paint).

[image reference removed]

Unreferenced vertices example.
user: Provide the full official documentation entry for Keyframe Paste Offset Value Items, preserving all code examples.

assistant: # Keyframe Paste Offset Value Items

LEFT_KEY:
:   Left Key.

    Paste keys with the first key matching the key left of the cursor.

RIGHT_KEY:
:   Right Key.

    Paste keys with the last key matching the key right of the cursor.

CURRENT_FRAME:
:   Current Frame Value.

    Paste keys relative to the value of the curve under the cursor.

CURSOR_VALUE:
:   Cursor Value.

    Paste keys relative to the Y-Position of the cursor.

NONE:
:   No Offset.

    Paste keys with the same value as they were copied.
user: Show practical ways to work with Auto-Offset in a Blender add-on or script – include code.

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

[image reference removed]

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

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

The offset margin can be changed using the *Auto-offset Margin*
setting in the Editing section of the Preferences.
user: What is Common Examples and how is it used in Blender Python scripting?

assistant: Below are a few common kernels and their uses:

### Blur

A simple blur can be achieved with evenly weighted positive values.
For example, a 3x3 average blur kernel:

```
1/9  1/9  1/9
1/9  1/9  1/9
1/9  1/9  1/9
```

This softens the image by averaging neighboring pixels.

### Sharpen

A sharpening kernel enhances contrast at edges by emphasizing differences
between the center pixel and its neighbors:

```
 0  -1   0
-1   5  -1
 0  -1   0
```

### Edge Detection

Edge detection kernels highlight transitions in brightness by measuring differences between
adjacent pixels.
For example, the *Laplacian* kernel:

```
 0  -1   0
-1   4  -1
 0  -1   0
```

Or the *Sobel* kernel (horizontal edges):

```
-1  -2  -1
 0   0   0
 1   2   1
```
user: Give a detailed overview of References: syntax, arguments, return values, common patterns.

assistant: |  |  |
| --- | --- |
| - [`IDOverrideLibraryProperty.operations`](bpy.types.IDOverrideLibraryProperty.html#bpy.types.IDOverrideLibraryProperty.operations "bpy.types.IDOverrideLibraryProperty.operations") - [`IDOverrideLibraryPropertyOperations.add`](bpy.types.IDOverrideLibraryPropertyOperations.html#bpy.types.IDOverrideLibraryPropertyOperations.add "bpy.types.IDOverrideLibraryPropertyOperations.add") | - [`IDOverrideLibraryPropertyOperations.remove`](bpy.types.IDOverrideLibraryPropertyOperations.html#bpy.types.IDOverrideLibraryPropertyOperations.remove "bpy.types.IDOverrideLibraryPropertyOperations.remove") |
user: Show practical ways to work with Outputs in a Blender add-on or script – include code.

assistant: Bundle
:   The resulting bundle that contains all items from the input bundles.

    Use the [Separate Bundle Node](separate_bundle.xhtml) to access individual items from the combined bundle if needed.
user: Provide the full official documentation entry for Switch Direction, preserving all code examples.

assistant: The *Switch Direction* operator reverses the direction of the selected Grease Pencil stroke. This means the starting
point of the stroke becomes the endpoint, and vice versa. While this operation does not alter the visual appearance
of the stroke, but affects behaviors that rely on the point order, such as the
[Build Modifier](../../modifiers/generate/build.xhtml).
user: What is GeometryNodeBoundBox(GeometryNode) and how is it used in Blender Python scripting?

assistant: # GeometryNodeBoundBox(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.GeometryNodeBoundBox(*GeometryNode*)
:   Calculate the limits of a geometry’s positions and generate a box mesh with those dimensions

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: # Menus

Blender uses a variety of different menus for accessing options and [Operators](../../operators.xhtml).
Menus can be interacted with in the following ways:

Mouse selection
:   `LMB` on the desired item.

Numerical selection
:   You can use the number keys or numpad to input an item in the list to select.
    For example, `Numpad1` will select the first item and so on.

If a menu is too large to fit on the screen, a small
scrolling triangle appears on the top or bottom.
Scrolling is done by moving the mouse above or below this triangle.

Shortcuts

- Use `Wheel` while hovering with the mouse.
- Arrow keys can be used to navigate.
- Each menu item has an underlined character which can be pressed to activate it.
- Number keys or numpad can also be used to activate menu items.
  (`1` for the first menu item, `2` for the second etc.
  For larger menus, `Alt`-`1` activates the 11th and so on, up to `Alt`-`0` for the 20th.)
- Press `Return` to activate the selected menu item.
- Press `Esc` to close the menu without activating any menu item. This can also be
  done by moving the mouse cursor far away from the menu, or by `LMB` clicking anywhere
  outside of it.
user: Show practical ways to work with Gizmos in a Blender add-on or script – include code.

assistant: # Gizmos

Clicking  (Show Gizmo) toggles all gizmos in the Video Sequencer.
The drop-down button displays a popover with more detailed settings,
which are described below.

Navigate
:   Enable/disable the navigation gizmo.

Active Tools
:   Enable/disable the gizmo of the active tool.
user: Show practical ways to work with Image Color Mode Items in a Blender add-on or script – include code.

assistant: # Image Color Mode Items

BW:
:   BW.

    Images get saved in 8-bit grayscale (only PNG, JPEG, TGA, TIF).

RGB:
:   RGB.

    Images are saved with RGB (color) data.

RGBA:
:   RGBA.

    Images are saved with RGB and Alpha data (if supported).
user: Describe NodeGeometryForeachGeometryElementMainItems(bpy_struct) from the Blender manual or Python API, including usage steps and snippets.

assistant: # NodeGeometryForeachGeometryElementMainItems(bpy_struct)

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

*class* bpy.types.NodeGeometryForeachGeometryElementMainItems(*bpy_struct*)
:   Collection of main items

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

    remove(*item*)
    :   Remove an item

        Parameters:
        :   **item** ([`ForeachGeometryElementMainItem`](bpy.types.ForeachGeometryElementMainItem.html#bpy.types.ForeachGeometryElementMainItem "bpy.types.ForeachGeometryElementMainItem"), (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 Examples from the Blender manual or Python API, including usage steps and snippets.

assistant: The *Split* node is typically used for comparing two images directly in the compositor.
It can be connected to a [Viewer Node](../output/viewer.xhtml)
to preview before-and-after results, such as comparing an ungraded render against
a color-corrected version.

It can also be used to align transitions between scenes or shots by displaying
the last frame of one scene alongside the first frame of another,
helping ensure visual consistency.

[image reference removed]

Comparing two images using the Split node.
user: Describe Unified Settings from the Blender manual or Python API, including usage steps and snippets.

assistant: Some settings (e.g. size, strength, color), indicated with ,
allow for using a per-mode setting instead of the individual brush setting.
These settings are shared across all brushes of a given mode (e.g. Sculpt Mode)
but do not overwrite the individual brush value.
user: Describe Creating Custom Gizmos from the Blender manual or Python API, including usage steps and snippets.

assistant: Adding custom gizmos to a node group that generates or modifies geometry can make it more convenient to use.

To add a gizmo to a node group, one has to use one of the [gizmo nodes](input/gizmo/index.xhtml#gizmo-nodes-overview).
The main aspect that makes gizmos unintuitive at first is that there is a **bidirectional dependency**:
changing the gizmo position changes the controlled value and vice versa.

The most simple custom gizmo setup is shown below.
The Linear Gizmo node adds a gizmo that is drawn in the 3D viewport.
The gizmo controls the value that is plugged into it.
When trying this, you will notice that the gizmo always jumps back to the origin while the value is still changed.
That is because the Position of the gizmo node does not depend on the value yet.

[image reference removed]

The simplest custom gizmo setup.

When the gizmo position is made dependent on the value, the gizmo works more than one would expect.
It now also works in both directions: changing the value moves the gizmo and moving the gizmo changes the value.

[image reference removed]

Simple gizmo setup where the gizmo position depends on the controlled value.

Multiple values can be plugged into the Value input of gizmo nodes at once.
In that case, all these values are modified at the same time when moving the gizmo.
Multiply or divide nodes can be used if the values should change at different rates.

The Transform output of gizmo nodes should be joined into the geometry that the gizmo controls.
This helps Blender to understand that the gizmos should be transformed together with the geometry later on.

[image reference removed]

Example showing how to add simple gizmos to the built-in [Grid](mesh/primitives/grid.xhtml#bpy-types-geometrynodemeshgrid) node.
user: What is Inputs and how is it used in Blender Python scripting?

assistant: Resolution
:   The number of edges on the curve.

Start, End
:   Positions of the start and end control point of the curve.

Start Handle, End Handle
:   Positions of the handles used to define the shape of the curve.