PGCRYPT/OpenBlender_Train huggingface dataset:
user: How do I use View Layer Attribute Lookup in Blender? Include parameters, examples, warnings and best practices.

assistant: The material [Attribute Node](../../render/shader_nodes/input/attribute.html) in the View Layer mode
automatically searches for the attribute property in multiple locations. This, for example, can allow
setting a certain value of the custom attribute at the [Scene](../../scene_layout/scene/introduction.html)
or [World](../../render/lights/world.html) level, and then overriding it
differently for one [View Layer](../../render/layers/introduction.html).

[[image reference removed]](../../_images/animation_drivers_workflow-examples_attribute-lookup.png)

Context Properties of drivers don’t implement this behavior, so if necessary it has to be manually
emulated via fallback values and a conditional expression (conditions are
[Simple Expressions](drivers_panel.html#drivers-simple-expressions)).

For an attribute named `attr`, the node tries the following six RNA path lookups in order:

- `["attr"]` in the active View Layer (custom property).
- `attr` in the active View Layer (built-in property).
- `["attr"]` in the active Scene.
- `attr` in the active Scene.
- `world["attr"]` in the active Scene.
- `world.attr` in the active Scene.

Depending on the specific property it may be sufficient to check only a subset of these locations.
For example, the image on the right shows how to access an attribute that is known to definitely be
a custom property with a color value.

Driver variables accessing locations that are not final in the lookup chain should use fallback values that are
invalid for the attribute (e.g. negative color values), which can then be checked by the conditional expression.
The final variable should fallback to a valid default value to be used when the property is not set at all.
user: Show practical ways to work with Viewport Display in a Blender add-on or script – include code.

assistant: # Viewport Display

This panel lets you configure display options for the 3D Viewport.

[image reference removed]

Viewport Display panel.

Show
:   Name
    :   Displays the object’s name in the 3D Viewport.

    Axes
    :   Displays an object similar to an empty that shows the object’s orientation.

    Wireframe
    :   Displays the object’s wireframe on top of the solid display.

    All Edges
    :   Displays all wireframe edges. This overrides the
        [wireframe threshold](../../../editors/3dview/display/overlays.html#bpy-types-view3doverlay-wireframe-threshold)
        that you can set in the 3D Viewport’s overlay settings.

    Texture Space
    :   Displays the object’s [Texture Space](../../../glossary/index.html#term-Texture-Space) in the 3D Viewport..
        The texture space overlay can be disabled for all objects using the
        [Extras Overlay](../../../editors/3dview/display/overlays.html#bpy-types-view3doverlay-show-extras).

    Shadow
    :   Allows the object to cast shadows in the viewport.

    In Front
    :   Makes the object display in front of others. Unsupported for instanced objects.
        Limited support in the *Material Preview* and *Rendered* shading modes
        (works for e.g. armatures, but not for meshes).

Display As
:   Lets you display the object with less detail, going from removing the textures to
    only showing a bounding box. This can be useful if you have a high-poly object
    that is slowing down the viewport.

Color
:   The object’s color in the *Wireframe* and *Solid* viewport shading modes.
    Used when the viewport’s [(Wire) Color](../../../editors/3dview/display/shading.html#viewport-shading-solid-color)
    shading option is set to *Object*.

Bounds
:   Displays a bounding shape around an object. You can choose between different
    primitive shapes that might be closer to what the original object looks like.
user: Give a detailed overview of Inputs: syntax, arguments, return values, common patterns.

assistant: Image/Color
:   Standard color input.

Factor
:   Controls the amount of influence the node exerts on the image.

Black Level Compositor Only
:   Defines the input color that should be mapped to black.

White Level Compositor Only
:   Defines the input color that should be mapped to white.
user: Show practical ways to work with Clean Up in a Blender add-on or script – include code.

assistant: ### Clean Tracks

Identifies all tracks which matches settings from above and performs desired action on them.

Tracked Frames
:   Tracks or tracked segments shorter than this number of frames will be removed.

Reprojection Error
:   Tracks which has reprojection error higher than this value will be removed.

Action
:   Several actions can be performed for bad tracks.

    Select
    :   They can simply be selected.

    Delete Track
    :   The whole track can be deleted.

    Delete Segments
    :   Bad segments of tracked sequence can be removed.

### Filter Tracks

This operator deletes obviously bad tracks (for example, the ones which are too short).
Additionally, it identifies tracks which has suspicious spikes in their motion and selects them.
user: What is File Paths and how is it used in Blender Python scripting?

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

assistant: Geometry
:   Standard geometry input.

Selection
:   A boolean field input for each element indicating whether to include its value in the statistics result
    If the boolean is false, the corresponding value from the *Attribute* input will be ignored.

Attribute
:   The attribute field to query a statistic from.
user: Describe Use External Tools from the Blender manual or Python API, including usage steps and snippets.

assistant: When there are no readily available Python modules to perform specific tasks it’s
worth keeping in mind you may be able to have Python execute an external command
on your data and read the result back in.

Using external programs adds an extra dependency and may limit who can use the script
but to quickly setup your own custom pipeline or writing one-off scripts this can be handy.

Examples include:

- Run Gimp in batch mode to execute custom scripts for advanced image processing.
- Write out 3D models to use external mesh manipulation tools and read back in the results.
- Convert files into recognizable formats before reading.
user: Show practical ways to work with Usage in a Blender add-on or script – include code.

assistant: ### Setup for Hair Particles

1. Create a *Hair* particle system.
2. Give it an initial velocity in the *Normal* direction.
3. Create a simulation.
4. Check the *Hair Dynamics* box.

[image reference removed]

Editing hair strands in Particle Edit Mode.

### Setup for Particle, Cloth, and Soft Body Simulations

1. Use *Emitter* particles, or a cloth/soft body simulation.
2. Create a simulation by setting up objects and/or emitters,
   set your time range (use a small range if you are just starting out and experimenting),
   set up the simulation how you want it, play the animation to preview it.

### Bake the Simulation

Once you are happy with the general simulation, [bake](emitter/cache.xhtml)
the simulation from Object Mode. The simulation must be baked to enable editing.

### Edit the Simulation

Switch to *Particle Edit* from the *Mode* select menu in the header of the 3D Viewport
to edit the particle’s paths/Keyframes. You may need to press `T` from within the 3D Viewport
to see the *Particle Edit* toolbox. Move to the frame you want to edit and use the various
tools to edit your simulation.
user: Provide the full official documentation entry for Mix Rotation, preserving all code examples.

assistant: # Mix Rotation

The *Mix Node* mixes values, colors and vectors inputs
using a factor to control the amount of interpolation.
The *Color* mode has additional blending modes.

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

assistant: [[image reference removed]](../../../_images/modeling_modifiers_generate_mesh-to-volume_panel.png)

The Mesh to Volume modifier.

Object
:   The mesh object that determines where the volume data will be generated.

Density
:   Makes the generated volume appear denser or less dense when rendering.

Interior Band Width
:   The maximum distance of the included voxels to the surface on the inside of the mesh.

Resolution Mode
:   Mode for how the voxel size is specified.

    Voxel Amount:
    :   This allows setting an approximate number of voxels that will be used to represent mesh along its diagonal.
        When the dimensions of the mesh changes, the voxel size will change as well.
        For final rendering of animations, it’s better to specify the voxel size explicitly to avoid artifacts.

    Voxel Size:
    :   This allows setting the exact voxel size that will be used.
        This is idea for rendering when the voxel size should not change between frames.
user: Give a detailed overview of Delete: syntax, arguments, return values, common patterns.

assistant: Removes the selected *Vertices* (control points) or *Segments* (lines) from the surface. In both cases,
the selection must consist of one or more complete rows or columns of the surface grid.

Vertices
:   Deletes the selected control points. The resulting gap is bridged with new grid lines so that the surface
    stays contiguous.

Segments
:   Deletes the lines and control points that lie between the outermost selected control points.
    The resulting gap is not bridged.

Dissolve Vertices
:   This feature only works for [Curves](../../curves/index.xhtml).

[image reference removed]

Before and after deleting a row of control points.
user: Provide the full official documentation entry for Inverse Kinematics, preserving all code examples.

assistant: # Inverse Kinematics

[image reference removed]

The Inverse Kinematics panel.

This panel controls the way a bone or set of bones behave when linked in
an [inverse kinematic](../../posing/bone_constraints/inverse_kinematics/introduction.xhtml) chain.
user: What is References and how is it used in Blender Python scripting?

assistant: |  |  |
| --- | --- |
| - [`Action.slots`](bpy.types.Action.html#bpy.types.Action.slots "bpy.types.Action.slots") - [`ActionChannelbag.slot`](bpy.types.ActionChannelbag.html#bpy.types.ActionChannelbag.slot "bpy.types.ActionChannelbag.slot") - [`ActionChannelbags.new`](bpy.types.ActionChannelbags.html#bpy.types.ActionChannelbags.new "bpy.types.ActionChannelbags.new") - [`ActionConstraint.action_slot`](bpy.types.ActionConstraint.html#bpy.types.ActionConstraint.action_slot "bpy.types.ActionConstraint.action_slot") - [`ActionConstraint.action_suitable_slots`](bpy.types.ActionConstraint.html#bpy.types.ActionConstraint.action_suitable_slots "bpy.types.ActionConstraint.action_suitable_slots") - [`ActionKeyframeStrip.channelbag`](bpy.types.ActionKeyframeStrip.html#bpy.types.ActionKeyframeStrip.channelbag "bpy.types.ActionKeyframeStrip.channelbag") - [`ActionKeyframeStrip.key_insert`](bpy.types.ActionKeyframeStrip.html#bpy.types.ActionKeyframeStrip.key_insert "bpy.types.ActionKeyframeStrip.key_insert") - [`ActionSlot.duplicate`](#bpy.types.ActionSlot.duplicate "bpy.types.ActionSlot.duplicate") | - [`ActionSlots.active`](bpy.types.ActionSlots.html#bpy.types.ActionSlots.active "bpy.types.ActionSlots.active") - [`ActionSlots.new`](bpy.types.ActionSlots.html#bpy.types.ActionSlots.new "bpy.types.ActionSlots.new") - [`ActionSlots.remove`](bpy.types.ActionSlots.html#bpy.types.ActionSlots.remove "bpy.types.ActionSlots.remove") - [`AnimData.action_slot`](bpy.types.AnimData.html#bpy.types.AnimData.action_slot "bpy.types.AnimData.action_slot") - [`AnimData.action_suitable_slots`](bpy.types.AnimData.html#bpy.types.AnimData.action_suitable_slots "bpy.types.AnimData.action_suitable_slots") - [`NlaStrip.action_slot`](bpy.types.NlaStrip.html#bpy.types.NlaStrip.action_slot "bpy.types.NlaStrip.action_slot") - [`NlaStrip.action_suitable_slots`](bpy.types.NlaStrip.html#bpy.types.NlaStrip.action_suitable_slots "bpy.types.NlaStrip.action_suitable_slots") |
user: How do I use PropertyGroupItem(bpy_struct) in Blender? Include parameters, examples, warnings and best practices.

assistant: # PropertyGroupItem(bpy_struct)

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

*class* bpy.types.PropertyGroupItem(*bpy_struct*)
:   Property that stores arbitrary, user defined properties

    bool
    :   Type:
        :   boolean, default False

    bool_array
    :   Type:
        :   boolean array of 1 items, default (False,)

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

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

    double_array
    :   Type:
        :   float array of 1 items in [-inf, inf], default (0.0)

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

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

    float_array
    :   Type:
        :   float array of 1 items in [-inf, inf], default (0.0)

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

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

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

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

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

    string
    :   Type:
        :   [string](#bpy.types.PropertyGroupItem.string "bpy.types.PropertyGroupItem.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: Describe Inputs from the Blender manual or Python API, including usage steps and snippets.

assistant: Density
:   The value for the new grid at each voxel.

Background
:   The value of the grid outside the *Min*..\*Max\* grid bounds.
    Voxels with a density equal to the background are pruned, which can lead to more memory-efficient volumes.

Min
:   Location of the left-most grid point and lower bound of the voxel volume.

Max
:   Location of the right-most grid point and upper bound of the voxel volume.

Resolution X,Y,Z
:   The number of grid points on each axis.
    The grid contains one less full voxel on each axis than there are grid points.
    For example a *Volume Cube* with resolution 10 has 9 voxels between the left and right grid points.
user: Provide the full official documentation entry for Inputs, preserving all code examples.

assistant: Surface
:   Shading for the [surface](../../materials/components/surface.xhtml) of the object.

Volume
:   Shading for the [volume](../../materials/components/volume.xhtml) inside the object.

Displacement
:   Used to create bump mapping or actual subdivided [displacement](../../materials/components/displacement.xhtml).

Thickness EEVEE
:   Used to approximate the inner geometry structure of the object without heavy computation.
    This is currently used for [Subsurface Scattering](../shader/sss.xhtml),
    [Translucent BSDF](../shader/translucent.xhtml),
    [Refraction BSDF](../shader/refraction.xhtml), and the nodes containing these effects.

    If no value is plugged into the output node,
    a default thickness based on the smallest dimension of the object is used.
    If a value is connected it will be used as object space thickness (i.e. scaled by object transform).
    A value of zero will disable the thickness approximation and treat the object as having only one interface.

    This output is only used by the EEVEE render engine.
user: How do I use ShaderNodeBsdfDiffuse(ShaderNode) in Blender? Include parameters, examples, warnings and best practices.

assistant: # ShaderNodeBsdfDiffuse(ShaderNode)

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

*class* bpy.types.ShaderNodeBsdfDiffuse(*ShaderNode*)
:   Lambertian and Oren-Nayar diffuse reflection

    *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 GeometryNodeInputCollection(GeometryNode): syntax, arguments, return values, common patterns.

assistant: # GeometryNodeInputCollection(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.GeometryNodeInputCollection(*GeometryNode*)
:   Output a single collection

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

    *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 GeometryNodeSimulationOutput(GeometryNode): syntax, arguments, return values, common patterns.

assistant: # GeometryNodeSimulationOutput(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.GeometryNodeSimulationOutput(*GeometryNode*)
:   Output data from the simulation zone

    active_index
    :   Index of the active item

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

    active_item
    :   Index of the active item

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

    state_items
    :   Type:
        :   [`NodeGeometrySimulationOutputItems`](bpy.types.NodeGeometrySimulationOutputItems.html#bpy.types.NodeGeometrySimulationOutputItems "bpy.types.NodeGeometrySimulationOutputItems") [`bpy_prop_collection`](bpy.types.bpy_prop_collection.html#bpy.types.bpy_prop_collection "bpy.types.bpy_prop_collection") of [`SimulationStateItem`](bpy.types.SimulationStateItem.html#bpy.types.SimulationStateItem "bpy.types.SimulationStateItem"), (readonly)

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Provide the full official documentation entry for Outputs, preserving all code examples.

assistant: Corner Angle
:   The internal angle at each face corner, measured in radians.
    For example, a right angle returns approximately `1.571`.

Bisector
:   A normalized vector pointing along the bisector of the corner angle,
    halfway between the directions of the two connected edges.
user: Provide the full official documentation entry for Trace Image to Grease Pencil, preserving all code examples.

assistant: # Trace Image to Grease Pencil

The *Trace Image to Grease Pencil* tool traces a black and white image and generates Grease Pencil strokes.
If the image is not black and white, it will be internally converted.
For better results, convert the images manually to black and white.
Also try to keep the resolution of the image small; high resolutions can produce very dense strokes.
user: What is Usage and how is it used in Blender Python scripting?

assistant: Start by loading a video file into the [Movie Clip Editor](../../../editors/clip/introduction.xhtml)
and using [motion tracking](../../../movie_clip/tracking/introduction.xhtml) to track at least
eight [markers](../../../movie_clip/tracking/clip/marker.xhtml) in the real-world scene.
Then use [Solve Camera/Object Motion](../../../movie_clip/tracking/clip/editing/track.xhtml#bpy-ops-clip-solve-camera) to reconstruct the motion of the physical camera,
and finally add this constraint to a Blender camera.
user: Describe Finding the Page to Edit from the Blender manual or Python API, including usage steps and snippets.

assistant: Navigate to the Blender Manual ([docs.blender.org/manual](https://docs.blender.org/manual/en/dev/))
and browse to the page you want to improve (make sure you are browsing under the development version (`/dev`)).

At the top-right of every page, you’ll find an “Edit Page” link.
Clicking it will take you to the online editor at projects.blender.org.
user: What is ShaderNodeBsdfGlass(ShaderNode) and how is it used in Blender Python scripting?

assistant: # ShaderNodeBsdfGlass(ShaderNode)

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

*class* bpy.types.ShaderNodeBsdfGlass(*ShaderNode*)
:   Glass-like shader mixing refraction and reflection at grazing angles

    distribution
    :   Light scattering distribution on rough surface

        - `BECKMANN`
          Beckmann.
        - `GGX`
          GGX.
        - `MULTI_GGX`
          Multiscatter GGX – GGX with additional correction to account for multiple scattering, preserve energy and prevent unexpected darkening at high roughness.

        Type:
        :   enum in [`'BECKMANN'`, `'GGX'`, `'MULTI_GGX'`], default `'BECKMANN'`

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: # Troubleshooting Windows – NVIDIA

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: Provide the full official documentation entry for Vertex Paint Tools, preserving all code examples.

assistant: # Vertex Paint Tools

[image reference removed]

Brush
:   Tool to use for any of the vertex paint [brushes](brushes.html).

[Annotate](../../../interface/annotate_tool.html#tool-annotate-freehand)
:   Draw free-hand annotation.

    [Annotate Line](../../../interface/annotate_tool.html#tool-annotate-line)
    :   Draw straight line annotation.

    [Annotate Polygon](../../../interface/annotate_tool.html#tool-annotate-polygon)
    :   Draw a polygon annotation.

    [Annotate Eraser](../../../interface/annotate_tool.html#tool-annotate-eraser)
    :   Erase previous drawn annotations.
user: Describe GeometryNodeSetGridTransform(GeometryNode) from the Blender manual or Python API, including usage steps and snippets.

assistant: # GeometryNodeSetGridTransform(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.GeometryNodeSetGridTransform(*GeometryNode*)
:   Set the transform for the grid from index space into object space.

    data_type
    :   Node socket data type

        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), default `'FLOAT'`

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: Replaces each Weight of the selected weight group by × -1.0 weight.

Examples:

- Original 1.0 converts to 0.0
- Original 0.5 remains 0.5
- Original 0.0 converts to 1.0

[image reference removed]

Invert.

Subset
:   Restrict the tool to a subset.
    See above [The Subset Option](#sculpt-paint-weight-paint-editing-subset) about how subsets are defined.

Add Weights
:   Add vertices that have no weight before inverting (these weights will all be set to 1.0).

Remove Weights
:   Remove vertices from the vertex group if they are 0.0 after inverting.
user: Give a detailed overview of X/Y/Z Local: syntax, arguments, return values, common patterns.

assistant: These operations perform a non-interactive mirror along the object’s local axes.

X Local
:   Mirrors the selection along the object’s local X axis.

Y Local
:   Mirrors the selection along the object’s local Y axis.

Z Local
:   Mirrors the selection along the object’s local Z axis.
user: Explain Controlling Script Execution in complete detail according to the official Blender documentation.

assistant: Blender provides a number of ways to control whether scripts
from a blend-file are allowed to automatically execute.

First, the File Browser has the option **Trusted Source** which you can use on
a case-by-case basis to control auto execution.
Since you may forget to set this,
or may open a file without going through the File Browser,
you can change the default (described next).

### Setting Defaults

In the Preferences, there is the toggle to
[Auto Run Python Scripts](../../editors/preferences/save_load.xhtml#bpy-types-preferencesfilepaths-use-scripts-auto-execute).
This means the **Trusted Source** option in the File Browser will be enabled by default,
and scripts can run when blend-files are loaded without using the File Browser.
Once enabled you have the option to exclude certain directories;
a typical configuration would be to trust all paths except for the download directory.

[image reference removed]

The Auto Run Python Scripts checkbox.

### Command Line

You may want to perform batch rendering or some other task from the command line,
running Blender without an interface.
In this case, the Preferences are still used but you may want to override them:

- Enable with `-y` or `--enable-autoexec`
- Disable with `-Y` or `--disable-autoexec`

#### Example

To render an animation in background mode, allowing drivers and other scripts to run:

```
blender --background --enable-autoexec my_movie.blend --render-anim
```
user: Give a detailed overview of SDF Grid Median Node: syntax, arguments, return values, common patterns.

assistant: # SDF Grid Median Node

[image reference removed]

The *SDF Grid Median* node applies a median filter to a Signed Distance Field (SDF) grid.
This operation smooths the field by replacing each voxel value with the
median of its neighboring values, effectively removing noise and small
artifacts while preserving sharp features and edges.

Unlike [mean](sdf_grid_mean.xhtml)
or [Laplacian](sdf_grid_laplacian.xhtml)
smoothing, the median filter is non-linear and
better suited for cleaning up impulsive noise (isolated spikes or dips) in
the grid. It maintains the overall structure and boundaries of the surface,
making it useful for refining SDFs generated from noisy or voxelized meshes.
user: What is Playback Time and how is it used in Blender Python scripting?

assistant: Unlike other objects, speaker playback timing is not set directly in the properties.
Instead, the [NLA editor](../../../editors/nla/index.xhtml) is used to manage when a speaker plays
using [Sound Strips](../../../editors/nla/strips.xhtml#bpy-ops-nla-soundclip-add):

- Sound strips in the NLA editor define when playback starts.
- Newly added speaker objects automatically receive a sound strip at the current frame.
- Multiple sound strips can be used to replay the same speaker at different times.
- Playback continues the length of audio file and does not take into account the length of the sound strip.
user: Give a detailed overview of References: syntax, arguments, return values, common patterns.

assistant: |  |  |
| --- | --- |
| - [`FileAssetSelectParams.filter_asset_id`](bpy.types.FileAssetSelectParams.html#bpy.types.FileAssetSelectParams.filter_asset_id "bpy.types.FileAssetSelectParams.filter_asset_id") |  |
user: What is Transform Mode Type Items and how is it used in Blender Python scripting?

assistant: # Transform Mode Type Items

INIT:
:   Init.

DUMMY:
:   Dummy.

TRANSLATION:
:   Translation.

ROTATION:
:   Rotation.

RESIZE:
:   Resize.

SKIN_RESIZE:
:   Skin Resize.

TOSPHERE:
:   To Sphere.

SHEAR:
:   Shear.

BEND:
:   Bend.

SHRINKFATTEN:
:   Shrink/Fatten.

TILT:
:   Tilt.

TRACKBALL:
:   Trackball.

PUSHPULL:
:   Push/Pull.

CREASE:
:   Crease.

VERTEX_CREASE:
:   Vertex Crease.

MIRROR:
:   Mirror.

BONE_SIZE:
:   Bone Size.

BONE_ENVELOPE:
:   Bone Envelope.

BONE_ENVELOPE_DIST:
:   Bone Envelope Distance.

CURVE_SHRINKFATTEN:
:   Curve Shrink/Fatten.

MASK_SHRINKFATTEN:
:   Mask Shrink/Fatten.

BONE_ROLL:
:   Bone Roll.

TIME_TRANSLATE:
:   Time Translate.

TIME_SLIDE:
:   Time Slide.

TIME_SCALE:
:   Time Scale.

TIME_EXTEND:
:   Time Extend.

BAKE_TIME:
:   Bake Time.

BWEIGHT:
:   Bevel Weight.

ALIGN:
:   Align.

EDGESLIDE:
:   Edge Slide.

SEQSLIDE:
:   Sequence Slide.

GPENCIL_OPACITY:
:   Grease Pencil Opacity.
user: Show practical ways to work with Troubleshooting macOS – AMD in a Blender add-on or script – include code.

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

assistant: # Shader Nodes

Cycles applies a number of shader node optimizations both at compile time and run-time.
By exploiting them it is possible to design complicated “Uber Shader”
style node groups that incur minimal render time overhead for unused features.
user: Show practical ways to work with NodeTreeInterfaceSocketFloatWavelength(NodeTreeInterfaceSocket) in a Blender add-on or script – include code.

assistant: # NodeTreeInterfaceSocketFloatWavelength(NodeTreeInterfaceSocket)

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

*class* bpy.types.NodeTreeInterfaceSocketFloatWavelength(*NodeTreeInterfaceSocket*)
:   Floating-point number socket of a node

    default_value
    :   Input value used for unconnected socket

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

    max_value
    :   Maximum value

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

    min_value
    :   Minimum value

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

    subtype
    :   Subtype of the default value

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

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

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

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

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

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

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

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Provide the full official documentation entry for Delete Tracks, preserving all code examples.

assistant: Deletes the selected tracks and the strips they contain.

When using the keyboard shortcuts, make sure the mouse cursor is hovering over the track region,
as otherwise, Blender will only delete the selected strips.
user: Describe Properties from the Blender manual or Python API, including usage steps and snippets.

assistant: Type
:   The type of angle input.

    X/Y/Z Axis:
    :   Rotates the vector around the defined axis and
        the amount of rotation is defined by the *Angle* input.

    Axis Angle:
    :   Rotates the vector around an arbitrary axis defined by the *Axis* input vector.
        The amount of rotation is defined by the *Angle* input.

    Euler:
    :   Rotates the vector about a center point defined by the *Center* input vector.
        The amount of rotation on each axis is defined by the *Rotation* input vector.

Invert
:   Inverts the rotation angle.
user: Provide the full official documentation entry for NodeSocketVectorDirection2D(NodeSocketStandard), preserving all code examples.

assistant: # NodeSocketVectorDirection2D(NodeSocketStandard)

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

*class* bpy.types.NodeSocketVectorDirection2D(*NodeSocketStandard*)
:   3D vector socket of a node

    default_value
    :   Input value used for unconnected socket

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

    links
    :   List of node links from or to this socket.

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

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

assistant: # Depth Combine Node

[image reference removed]

The Depth Combine node combines two images based on their depth maps.
It overlays the images using the provided depth values to
detect which parts of one image are in front of the other.
user: Explain Curl Hair Curves in complete detail according to the official Blender documentation.

assistant: # Curl Hair Curves

The *Curl Hair Curves* node deforms existing hair curves into curls by wrapping them
around nearby guide curves.
It is useful for creating coiled, spiral, or wavy hair patterns and for adding stylized
variation or realism to a groom.
The curls can vary in radius, frequency, and start position, with optional random offsets
for natural variation.
user: How do I use Properties in Blender? Include parameters, examples, warnings and best practices.

assistant: Normalize
:   If enabled, the X-coordinates of the *Segment Coordinates* output are remapped into a 0.0 to 1.0 range
    and a constant value of 1.0 is added to the Y-coordinates which makes the output range non-negative.

    |  |  |
    | --- | --- |
    | ../../../../_images/render_shader-nodes_radial_tiling_normalize-disabled.png   Normalize: Disabled. | ../../../../_images/render_shader-nodes_radial_tiling_normalize-enabled.png   Normalize: Enabled. |
user: Give a detailed overview of Introduction: syntax, arguments, return values, common patterns.

assistant: # Introduction

The first step in the rendering process is to determine and set the output settings.
This includes render size, frame rate, pixel aspect ratio, output location, and file type.

When rendering a single frame, the output should be a single image format and not a video.
Several [image formats](../../files/media/image_formats.xhtml) are available.

Images can also be used for rendering animations which has a couple advantages.
For example, when rendering animations to image file formats the render job can be canceled
and resumed at the last rendered frame by changing the frame range.
This is useful if the animation takes a long time to render
and the computers resources are needed for something else.

Images can then be encoded to a video by adding the rendered image sequence into
the [Video Sequencer](../../editors/video_sequencer/sequencer/index.xhtml) and choosing an appropriate
[Video Output](../../files/media/video_formats.xhtml).
user: Explain Object Info Node in complete detail according to the official Blender documentation.

assistant: # Object Info Node

[image reference removed]

The *Object Info* node gets information from objects.
This can be useful to control parameters in the geometry node tree with an external object,
either directly by using its geometry, or via its transformation properties.

An *Object Info* node can be added quickly by dragging an object into the node editor.
user: Explain Inputs in complete detail according to the official Blender documentation.

assistant: Resolution
:   Number of points in one rotation of the spiral.

Rotations
:   Number of times the spiral makes a full rotation.

Start Radius, End Radius
:   Radius of the start point and end point of the spiral.
    The radius of the spiral changes linearly between the two values over the whole spiral.

Height
:   Height of the spiral.

Reverse
:   Boolean value that changes the direction from clockwise to counterclockwise when it is enabled.
user: How do I use References in Blender? Include parameters, examples, warnings and best practices.

assistant: |  |  |
| --- | --- |
| - [`ParticleHairKey.co_object`](bpy.types.ParticleHairKey.html#bpy.types.ParticleHairKey.co_object "bpy.types.ParticleHairKey.co_object") - [`ParticleHairKey.co_object_set`](bpy.types.ParticleHairKey.html#bpy.types.ParticleHairKey.co_object_set "bpy.types.ParticleHairKey.co_object_set") - [`ParticleSystem.mcol_on_emitter`](bpy.types.ParticleSystem.html#bpy.types.ParticleSystem.mcol_on_emitter "bpy.types.ParticleSystem.mcol_on_emitter") | - [`ParticleSystem.particles`](bpy.types.ParticleSystem.html#bpy.types.ParticleSystem.particles "bpy.types.ParticleSystem.particles") - [`ParticleSystem.uv_on_emitter`](bpy.types.ParticleSystem.html#bpy.types.ParticleSystem.uv_on_emitter "bpy.types.ParticleSystem.uv_on_emitter") |
user: What is Properties and how is it used in Blender Python scripting?

assistant: Data Type
:   The type of data stored in the grid (e.g. *Float*, *Integer*, *Boolean*, or *Vector*).
    Determines both the expected data type of the *Grid* input and the type of
    the *Background Value* output.