PGCRYPT/OpenBlender_Train huggingface dataset:
user: Explain ChildOfConstraint(Constraint) in complete detail according to the official Blender documentation.

assistant: # ChildOfConstraint(Constraint)

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

*class* bpy.types.ChildOfConstraint(*Constraint*)
:   Create constraint-based parent-child relationship

    inverse_matrix
    :   Transformation matrix to apply before

        Type:
        :   [`mathutils.Matrix`](mathutils.html#mathutils.Matrix "mathutils.Matrix") of 4 \* 4 items in [-inf, inf], default ((0.0, 0.0, 0.0, 0.0), (0.0, 0.0, 0.0, 0.0), (0.0, 0.0, 0.0, 0.0), (0.0, 0.0, 0.0, 0.0))

    set_inverse_pending
    :   Set to true to request recalculation of the inverse matrix

        Type:
        :   boolean, default False

    subtarget
    :   Armature bone, mesh or lattice vertex group, …

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

    target
    :   Target object

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

    use_location_x
    :   Use X Location of Parent

        Type:
        :   boolean, default False

    use_location_y
    :   Use Y Location of Parent

        Type:
        :   boolean, default False

    use_location_z
    :   Use Z Location of Parent

        Type:
        :   boolean, default False

    use_rotation_x
    :   Use X Rotation of Parent

        Type:
        :   boolean, default False

    use_rotation_y
    :   Use Y Rotation of Parent

        Type:
        :   boolean, default False

    use_rotation_z
    :   Use Z Rotation of Parent

        Type:
        :   boolean, default False

    use_scale_x
    :   Use X Scale of Parent

        Type:
        :   boolean, default False

    use_scale_y
    :   Use Y Scale of Parent

        Type:
        :   boolean, default False

    use_scale_z
    :   Use Z Scale of Parent

        Type:
        :   boolean, default False

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: # Armature Constraint

The *Armature* constraint transforms an “owner” object or bone based on the
weighted pose transformations of one or more “target” bones. It’s similar to the
[Armature Modifier](../../../modeling/modifiers/deform/armature.xhtml), which performs this operation for
every vertex in a mesh.

Unlike the modifier, the constraint also uses bones whose
[Deform](../../armatures/bones/properties/deform.xhtml) option is disabled.
user: Show practical ways to work with Dashed Line in a Blender add-on or script – include code.

assistant: By enabling the *Dashed Line* checkbox,
you can specify three pairs of dash and gap lengths.
Dash values define the lengths of dash strokes,
while gap values specify intervals between two dashes.

If a zero gap is specified,
then the corresponding dash is ignored even if it has a nonzero value.

Dashes are treated as separate strokes, meaning that you can apply line caps,
as well as color, alpha and thickness modifiers.

Dash 1, 2, 3
:   Length of the specified dash for dashed lines.

Gap 1, 2, 3
:   Length of the specified gap for dashed lines.
user: Explain Argument Order in complete detail according to the official Blender documentation.

assistant: Arguments are executed in the order they are given. eg:

```
blender --background test.blend --render-frame 1 --render-output "/tmp"
```

…will not render to `/tmp` because `--render-frame 1` renders before the output path is set.

```
blender --background --render-output /tmp test.blend --render-frame 1
```

…will not render to `/tmp` because loading the blend-file overwrites the render output that was set.

```
blender --background test.blend --render-output /tmp --render-frame 1
```

…works as expected.
user: Give a detailed overview of Bpy.Types.Sunlight: syntax, arguments, return values, common patterns.

assistant: Light.shadow_jitter_overblur SunLight.shadow_maximum_resolution SunLight.shadow_soft_size SunLight.use_shadow_jitter SunLight.inline_shader_nodes() SunLight.bl_rna_get_subclass() SunLight.bl_rna_get_subclass_py() Inherited Properties Inherited Functions
user: Give a detailed overview of Bump Only: syntax, arguments, return values, common patterns.

assistant: The least accurate but most memory efficient method is bump mapping.
This method does not actually alter the mesh surface, but merely changes the shading to make it seem so.

Bump maps are often used to add smaller details on a model, for example pores or wrinkles on skin.

For baked bump maps, 8-bit images are commonly used. However, 16 or 32-bit float maps can provide
better looking results. When using image textures use Cubic interpolation to avoid stepping artifacts,
these are more visible for bump maps than other types of textures.
user: Show practical ways to work with Enable Output Node in a Blender add-on or script – include code.

assistant: # Enable Output Node

[image reference removed]

The *Enable Output* node toggles the visibility and value
of a socket for a [Node Group](../../groups.xhtml) outputs.
It can be used to conditionally show or hide outputs from a node group depending on an input value or condition.
user: Give a detailed overview of NodeSocketMatrix(NodeSocketStandard): syntax, arguments, return values, common patterns.

assistant: # NodeSocketMatrix(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.NodeSocketMatrix(*NodeSocketStandard*)
:   Matrix value socket of a node

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

assistant: # Group

A [Group Node](../../../interface/controls/nodes/groups.html) combines a set of nodes into a single one,
and selectively exposes inputs and outputs of those nodes.

Group nodes can simplify a node tree by hiding away complexity and reusing functionality.
user: Provide the full official documentation entry for GeometryNodeInputShortestEdgePaths(GeometryNode), preserving all code examples.

assistant: # GeometryNodeInputShortestEdgePaths(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.GeometryNodeInputShortestEdgePaths(*GeometryNode*)
:   Find the shortest paths along mesh edges to selected end vertices, with customizable cost per edge

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

assistant: # Gabor Texture Node

[image reference removed]

The *Gabor Texture* node evaluates a Gabor noise at the input texture coordinates. Gabor noise is
visually characterized by random interleaved bands whose direction and width can be controlled.
Additionally, it can be used to create omnidirectional noise like the standard Noise Texture node,
but since it is more expensive to compute, using the Noise Texture node is probably the better
option in those cases. See the examples for more information.
user: Give a detailed overview of File Format Variations: syntax, arguments, return values, common patterns.

assistant: The glTF specification identifies different ways the data can be stored.
The importer handles all of these ways. The exporter will ask the user to
select one of the following forms:

### glTF Binary (`.glb`)

This produces a single `.glb` file with all mesh data, image textures, and
related information packed into a single binary file.

### glTF Separate (`.gltf` + `.bin` + textures)

This produces a JSON text-based `.gltf` file describing the overall structure,
along with a `.bin` file containing mesh and vector data, and
optionally a number of `.png` or `.jpg` files containing image textures
referenced by the `.gltf` file.

### glTF Embedded (`.gltf`)

This produces a JSON text-based `.gltf` file, with all mesh data and
image data encoded (using Base64) within the file. This form is useful if
the asset must be shared over a plain-text-only connection.
user: Show practical ways to work with Basic in a Blender add-on or script – include code.

assistant: # Basic

These rig types are used to generate simple single-bone features,
and for custom rigging done directly in the meta-rig.

The single-bone rig types must be applied separately to every bone even within a connected chain,
and can have connected children controlled by a different rig type.
This is unlike chain-based rig types that usually consume the whole connected chain.
user: Explain NodeSocketShader(NodeSocketStandard) in complete detail according to the official Blender documentation.

assistant: # NodeSocketShader(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.NodeSocketShader(*NodeSocketStandard*)
:   Shader socket of a node

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

assistant: String
:   Standard string input.

Size
:   The size of each character. The values of the other inputs are scaled by this value.

Character Spacing
:   A factor by which the space between each character (kerning) is scaled on the X axis.

Word Spacing
:   A factor by which whitespace between words is scaled on the X axis.

Line Spacing
:   The distance between separate lines in the output. Scaled by the *Size* input.

Text Box Width
:   The maximum width of each line, though individual words will not be wrapped.

Text Box Height
:   The maximum height for all the lines of the text.
user: What is LineStyleGeometryModifier_BackboneStretcher(LineStyleGeometryModifier) and how is it used in Blender Python scripting?

assistant: # LineStyleGeometryModifier_BackboneStretcher(LineStyleGeometryModifier)

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

*class* bpy.types.LineStyleGeometryModifier_BackboneStretcher(*LineStyleGeometryModifier*)
:   Stretch the beginning and the end of stroke backbone

    backbone_length
    :   Amount of backbone stretching

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

    expanded
    :   True if the modifier tab is expanded

        Type:
        :   boolean, default False

    type
    :   Type of the modifier

        Type:
        :   enum in [Linestyle Geometry Modifier Type Items](bpy_types_enum_items/linestyle_geometry_modifier_type_items.html#rna-enum-linestyle-geometry-modifier-type-items), default `'2D_OFFSET'`, (readonly)

    use
    :   Enable or disable this modifier during stroke rendering

        Type:
        :   boolean, default False

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   [type](#bpy.types.LineStyleGeometryModifier_BackboneStretcher.type "bpy.types.LineStyleGeometryModifier_BackboneStretcher.type")
user: How do I use Properties in Blender? Include parameters, examples, warnings and best practices.

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.
user: Show practical ways to work with Usage in a Blender add-on or script – include code.

assistant: ### Edge Loop Input

When using edge loops as input, the most predictable results occur when two opposite loops
have an equal number of vertices. For a single, closed loop, Blender tries to detect two
opposite edges and build a grid accordingly.

### Face Input

If a region of faces is selected, Grid Fill replaces the selected faces with a new quad grid.
This works if the selected faces form a continuous region with a clear boundary (i.e., a single exterior loop).

This method preserves UVs and custom data (e.g., face sets, edge creases, and vertex groups) across the new geometry.
UV islands and seams are respected where possible, and data from selected elements will be transferred to the result.
user: How do I use GeometryNodeSetGridTransform(GeometryNode) in Blender? Include parameters, examples, warnings and best practices.

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

assistant: # CompositorNodeDilateErode(CompositorNode)

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

*class* bpy.types.CompositorNodeDilateErode(*CompositorNode*)
:   Expand and shrink masks

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

    update()

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: Available when a [Face](../../../../glossary/index.xhtml#term-Face) is selected.

See [Extrude Faces Along Normals](../face/extrude_faces_normal.xhtml#bpy-ops-view3d-edit-mesh-extrude-move-shrink-fatten).
user: Show practical ways to work with Collection Example in a Blender add-on or script – include code.

assistant: Custom properties can be added to any subclass of an `ID`,
`Bone` and `PoseBone`.

```
import bpy

# Assign a collection.
class SceneSettingItem(bpy.types.PropertyGroup):
    name: bpy.props.StringProperty(name="Test Property", default="Unknown")
    value: bpy.props.IntProperty(name="Test Property", default=22)

bpy.utils.register_class(SceneSettingItem)

bpy.types.Scene.my_settings = bpy.props.CollectionProperty(type=SceneSettingItem)

# Assume an armature object selected.
print("Adding 2 values!")

my_item = bpy.context.scene.my_settings.add()
my_item.name = "Spam"
my_item.value = 1000

my_item = bpy.context.scene.my_settings.add()
my_item.name = "Eggs"
my_item.value = 30

for my_item in bpy.context.scene.my_settings:
    print(my_item.name, my_item.value)
```
user: How do I use Performance in Blender? Include parameters, examples, warnings and best practices.

assistant: Sampling for light linking is most efficient with the [light tree](../cycles/render_settings/sampling.xhtml#bpy-types-cyclesrendersettings-use-light-tree) enabled, where a specialized acceleration structure is built for
light linking.

When using shadow linking, renders can be slower and trace additional rays,
as direct and indirect lighting take different paths.
user: Give a detailed overview of GeometryNodeUVPackIslands(GeometryNode): syntax, arguments, return values, common patterns.

assistant: # GeometryNodeUVPackIslands(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.GeometryNodeUVPackIslands(*GeometryNode*)
:   Scale islands of a UV map and move them so they fill the UV space as much as possible

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Describe Inherited Properties from the Blender manual or Python API, including usage steps and snippets.

assistant: |  |  |
| --- | --- |
| - [`bpy_struct.id_data`](bpy.types.bpy_struct.html#bpy.types.bpy_struct.id_data "bpy.types.bpy_struct.id_data") - [`Paint.brush`](bpy.types.Paint.html#bpy.types.Paint.brush "bpy.types.Paint.brush") - [`Paint.brush_asset_reference`](bpy.types.Paint.html#bpy.types.Paint.brush_asset_reference "bpy.types.Paint.brush_asset_reference") - [`Paint.eraser_brush`](bpy.types.Paint.html#bpy.types.Paint.eraser_brush "bpy.types.Paint.eraser_brush") - [`Paint.eraser_brush_asset_reference`](bpy.types.Paint.html#bpy.types.Paint.eraser_brush_asset_reference "bpy.types.Paint.eraser_brush_asset_reference") - [`Paint.palette`](bpy.types.Paint.html#bpy.types.Paint.palette "bpy.types.Paint.palette") - [`Paint.show_brush`](bpy.types.Paint.html#bpy.types.Paint.show_brush "bpy.types.Paint.show_brush") - [`Paint.show_brush_on_surface`](bpy.types.Paint.html#bpy.types.Paint.show_brush_on_surface "bpy.types.Paint.show_brush_on_surface") - [`Paint.show_low_resolution`](bpy.types.Paint.html#bpy.types.Paint.show_low_resolution "bpy.types.Paint.show_low_resolution") - [`Paint.use_sculpt_delay_updates`](bpy.types.Paint.html#bpy.types.Paint.use_sculpt_delay_updates "bpy.types.Paint.use_sculpt_delay_updates") - [`Paint.use_symmetry_x`](bpy.types.Paint.html#bpy.types.Paint.use_symmetry_x "bpy.types.Paint.use_symmetry_x") - [`Paint.use_symmetry_y`](bpy.types.Paint.html#bpy.types.Paint.use_symmetry_y "bpy.types.Paint.use_symmetry_y") | - [`Paint.use_symmetry_z`](bpy.types.Paint.html#bpy.types.Paint.use_symmetry_z "bpy.types.Paint.use_symmetry_z") - [`Paint.use_symmetry_feather`](bpy.types.Paint.html#bpy.types.Paint.use_symmetry_feather "bpy.types.Paint.use_symmetry_feather") - [`Paint.cavity_curve`](bpy.types.Paint.html#bpy.types.Paint.cavity_curve "bpy.types.Paint.cavity_curve") - [`Paint.use_cavity`](bpy.types.Paint.html#bpy.types.Paint.use_cavity "bpy.types.Paint.use_cavity") - [`Paint.tile_offset`](bpy.types.Paint.html#bpy.types.Paint.tile_offset "bpy.types.Paint.tile_offset") - [`Paint.tile_x`](bpy.types.Paint.html#bpy.types.Paint.tile_x "bpy.types.Paint.tile_x") - [`Paint.tile_y`](bpy.types.Paint.html#bpy.types.Paint.tile_y "bpy.types.Paint.tile_y") - [`Paint.tile_z`](bpy.types.Paint.html#bpy.types.Paint.tile_z "bpy.types.Paint.tile_z") - [`Paint.show_strength_curve`](bpy.types.Paint.html#bpy.types.Paint.show_strength_curve "bpy.types.Paint.show_strength_curve") - [`Paint.show_size_curve`](bpy.types.Paint.html#bpy.types.Paint.show_size_curve "bpy.types.Paint.show_size_curve") - [`Paint.show_jitter_curve`](bpy.types.Paint.html#bpy.types.Paint.show_jitter_curve "bpy.types.Paint.show_jitter_curve") - [`Paint.unified_paint_settings`](bpy.types.Paint.html#bpy.types.Paint.unified_paint_settings "bpy.types.Paint.unified_paint_settings") |
user: Describe F from the Blender manual or Python API, including usage steps and snippets.

assistant: |  |  |
| --- | --- |
| - [**F-Curve**](glossary/index.html#term-F-Curve) - [F-Curve Modifiers](editors/graph_editor/fcurves/modifiers.html#index-1)   - [Built-in Function Modifier](editors/graph_editor/fcurves/modifiers.html#index-3)   - [Cycles Modifier](editors/graph_editor/fcurves/modifiers.html#index-5)   - [Envelope Modifier](editors/graph_editor/fcurves/modifiers.html#index-4)   - [Generator Modifier](editors/graph_editor/fcurves/modifiers.html#index-2)   - [Limits Modifier](editors/graph_editor/fcurves/modifiers.html#index-7)   - [Noise Modifier](editors/graph_editor/fcurves/modifiers.html#index-6)   - [Stepped Interpolation Modifier](editors/graph_editor/fcurves/modifiers.html#index-8) - [**Face**](glossary/index.html#term-Face) - [**Face Loop**](glossary/index.html#term-Face-Loop) - [**Face Normal**](glossary/index.html#term-Face-Normal) - [**Fake User**](glossary/index.html#term-Fake-User) - [**Field of View**](glossary/index.html#term-Field-of-View) - [**Fireflies**](glossary/index.html#term-Fireflies) - [**FK**](glossary/index.html#term-FK) | - [**Focal Length**](glossary/index.html#term-Focal-Length) - [Force Fields](physics/forces/force_fields/introduction.html#index-0)   - [Boid](physics/forces/force_fields/types/boid.html#index-0)   - [Charge](physics/forces/force_fields/types/charge.html#index-0)   - [Curve Guide](physics/forces/force_fields/types/curve_guide.html#index-0)   - [Drag](physics/forces/force_fields/types/drag.html#index-0)   - [Fluid Force](physics/forces/force_fields/types/fluid_flow.html#index-0)   - [Force](physics/forces/force_fields/types/force.html#index-0)   - [Harmonic](physics/forces/force_fields/types/harmonic.html#index-0)   - [Lennard-Jones](physics/forces/force_fields/types/lennard_jones.html#index-0)   - [Magnetic](physics/forces/force_fields/types/magnetic.html#index-0)   - [Texture](physics/forces/force_fields/types/texture.html#index-0)   - [Turbulence](physics/forces/force_fields/types/turbulence.html#index-0)   - [Vortex](physics/forces/force_fields/types/vortex.html#index-0)   - [Wind](physics/forces/force_fields/types/wind.html#index-0) - [**Forward Kinematics**](glossary/index.html#term-Forward-Kinematics) - [**Frame Types**](glossary/index.html#term-Frame-Types) |
user: Give a detailed overview of Views Format Items: syntax, arguments, return values, common patterns.

assistant: # Views Format Items

INDIVIDUAL:
:   Individual.

    Individual files for each view with the prefix as defined by the scene views.

STEREO_3D:
:   Stereo 3D.

    Single file with an encoded stereo pair.
user: Explain Inputs in complete detail according to the official Blender documentation.

assistant: Mesh
:   Standard geometry input.

Level
:   The number of subdivisions to apply to the input geometry.

Edge Crease
:   Controls how smooth edges should be with [Weighted Edge Creases](../../../modifiers/generate/subdivision_surface.xhtml#modifiers-generate-subsurf-creases).

Vertex Crease
:   Controls how much the subdivision surface should be pulled towards the vertex.
    Similar to edge creases, but allows individual vertices to be creased.

Limit Surface
:   Places vertices at the surface that would be produced with infinite
    levels of subdivision (smoothest possible shape).

UV Smooth
:   Controls how subdivision smoothing is applied to UVs.

    None:
    :   UVs remain unchanged.

    Keep Corners:
    :   UV islands are smoothed, but their boundary remain unchanged.

    Keep Corners, Junctions:
    :   UVs are smoothed, corners on discontinuous boundary and junctions of three or more regions are kept sharp.

    Keep Corners, Junctions, Concave:
    :   UVs are smoothed, corners on discontinuous boundary,
        junctions of three or more regions and darts and concave corners are kept sharp.

    Keep Boundaries:
    :   UVs are smoothed, boundaries are kept sharp.

    All:
    :   UVs and their boundaries are smoothed.

Boundary Smooth
:   Controls how open boundaries (and corners) are smoothed.

    All:
    :   Smooth boundaries, including corners.

    Keep Corners:
    :   Smooth boundaries, but corners are kept sharp.
user: What is Create New Preferences and how is it used in Blender Python scripting?

assistant: Language
:   The language used in the user interface. The list is broken up into categories determining how complete the
    translations are. More language preferences can be set in the
    [Translation Preferences](../../editors/preferences/interface.xhtml#prefs-interface-translation).

Theme
:   Choose between a light or dark theme for Blender. Themes can be customized more in the
    [Preferences](../../editors/preferences/themes.xhtml). Additional themes can be installed by visiting the
    [Blender Extensions Platform](https://extensions.blender.org/). This is optional, and will require internet
    access.

Keymap
:   Presets for the default [keymap](../../editors/preferences/keymap.xhtml) for Blender. Note that this manual assumes that
    you use the default “Blender” keymap.

    Blender:
    :   This is the default keymap. Read more about this keymap [here](../../interface/keymap/blender_default.xhtml).

    Blender 2.7x:
    :   This keymap is intended to match an older series of Blender versions and is designed for people upgrading who do
        not want to learn the updated keymap.

    Industry Compatible:
    :   This keymap is intended to match common commercial creation software and is intended for people who use many
        different such applications. Read more about this keymap [here](../../interface/keymap/industry_compatible.xhtml).

Mouse Select
:   Controls which mouse button, either right or left, is used to select items in Blender. The default is for selection
    to use the left button.

Spacebar Action
:   Controls the action of `Spacebar`.
    These and other shortcuts can be modified in the [keymap preferences](../../editors/preferences/keymap.xhtml).

    Play:
    :   Starts/stops [animation playback](../../animation/index.xhtml).
        This option is good for animation or video editing work.

    Tools:
    :   Opens the Toolbar underneath the cursor to quickly change the active tool. This option is good if doing a lot of
        modeling or rigging.

    Search:
    :   Opens up the [Menu Search](../../interface/operators.xhtml#bpy-ops-wm-search-menu). This option is good for someone who is new to Blender
        and is unfamiliar with its menus and shortcuts.

Save New Preferences
:   Saves the preferences set above and opens the regular [Splash Screen](../../interface/window_system/splash.xhtml#splash).
user: What is skin.transform.basic and how is it used in Blender Python scripting?

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

Generate Control
:   Specifies whether to generate a visible control, or use the transformation of the ORG bone
    as a part of more complex and specific rig setup.
user: Explain BlendDataLattices(bpy_struct) in complete detail according to the official Blender documentation.

assistant: # BlendDataLattices(bpy_struct)

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

*class* bpy.types.BlendDataLattices(*bpy_struct*)
:   Collection of lattices

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

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

        Returns:
        :   New lattice data-block

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

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

        Parameters:
        :   - **lattice** ([`Lattice`](bpy.types.Lattice.html#bpy.types.Lattice "bpy.types.Lattice"), (never None)) – Lattice to remove
            - **do_unlink** (*boolean**,* *(**optional**)*) – Unlink all usages of this lattice before deleting it (WARNING: will also delete objects instancing that lattice data)
            - **do_id_user** (*boolean**,* *(**optional**)*) – Decrement user counter of all data-blocks used by this lattice data
            - **do_ui_user** (*boolean**,* *(**optional**)*) – Make sure interface does not reference this lattice data

    tag(*value*)
    :   tag

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

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: Closure
:   The closure to evaluate.
    This input expects a connection from a [Closure Zone](closure.xhtml).
    If no closure is connected, the node operates in *pass-through mode* (see below).

### Interface

The node can define additional inputs manually, which are matched by name to the corresponding inputs of the connected
closure. When the closure is connected, these sockets automatically sync to reflect the closure’s defined interface.
user: Give a detailed overview of Common Startup Messages: syntax, arguments, return values, common patterns.

assistant: The *Blender Console Window* can display many different types of status and error messages. Some messages simply
inform the user what Blender is doing, but have no real impact on Blender’s ability to function. Other messages can
indicate serious errors that will most likely prevent Blender carrying out a particular task and may even make Blender
non-responsive or shut down completely. The *Blender Console Window* messages can also originate internally from
within the Blender code or from external sources such as [Python scripts](../editors/preferences/extensions.xhtml).

`found bundled python: {DIR}`
:   This message indicates that Blender was able to find the [Python](../advanced/scripting/index.xhtml#scripting-index) library for the Python
    interpreter embedded within Blender. If this folder is missing or unable to be found, it is likely that an error
    will occur, and this message will not appear.

`Read prefs: {DIR}/userpref.blend`
:   The preferences use this path.
user: Describe Properties from the Blender manual or Python API, including usage steps and snippets.

assistant: Data Type
:   The [data type](../attributes_reference.xhtml#attribute-data-types) used for the evaluated data.

Domain
:   Which [attribute domain](../attributes_reference.xhtml#attribute-domains) to store the evaluated data on.
user: Explain Setting Up Materials in complete detail according to the official Blender documentation.

assistant: Grease Pencil materials can be created in the [Material properties](../../editors/properties_editor.xhtml)
as any other materials in Blender.
See [Material assignment](../../render/materials/assignment.xhtml) for more information.

The 3D Viewport can be set to Material Preview or Rendered shading,
to interactively preview how the material looks in the scene.

Grease Pencil materials are data-blocks that can be [assigned](../../render/materials/assignment.xhtml)
to one or more objects, and different materials can be assigned to different strokes.

In Grease Pencil the [brush](../modes/draw/brushes/index.xhtml)
settings together with the material used will define the look and feel of the final strokes.

[Materials slots](properties.xhtml#gp-material-slots) also have some extra controls
that help to work with materials while drawing or editing lines.
user: What is Outputs and how is it used in Blender Python scripting?

assistant: Vertex Index 1/2
:   The [index](../../geometry/read/input_index.xhtml) of the two vertices of the edge.

Position 1/2
:   The [position](../../geometry/read/position.xhtml) of each of the edge’s vertices.
    This output is for convenience, it is the same as using index output to retrieve the position from the
    [Evaluate at Index Node](../../utilities/field/evaluate_at_index.xhtml).
user: What is Collections Panel and how is it used in Blender Python scripting?

assistant: [image reference removed]

Collections panel.

All collections that an object has been assigned to are listed in the Properties
Object tab ‣ Collections panel.

Add to Collection
:   Adds the selected object to a collection.
    A pop-up lets you specify the collection to add to.

(Add to Collection)
:   Creates a new collection and adds the selected object to it.

Name
:   To rename a collection, simply click in the collections name field.

(Remove Collection)
:   Removes the object from the specified collection.

(Collection Specials)
:   Unlink Collection, Select Objects in Collection, Set Offset from Cursor

X, Y, Z
:   Applies a spatial offset of the instanced collections from the original object’s origin.
user: Explain Example in complete detail according to the official Blender documentation.

assistant: Swirl Effect samples (with a Radius of 100 px).

|  |  |  |  |
| --- | --- | --- | --- |
| <../../_images/grease-pencil_visual-effects_swirl_angle-00.png>   Angle: 0°. | <../../_images/grease-pencil_visual-effects_swirl_angle-15.png>   Angle: 15°. | <../../_images/grease-pencil_visual-effects_swirl_angle-45.png>   Angle: 45°. | <../../_images/grease-pencil_visual-effects_swirl_angle-90.png>   Angle: 90°. |
user: Give a detailed overview of With Empty Groups: syntax, arguments, return values, common patterns.

assistant: When parenting it will create empty [vertex groups](../../../modeling/meshes/properties/vertex_groups/index.xhtml)
on the child objects (if they do not already exist) for and named after each deforming bone in the armature.
The newly created vertex groups will be empty. This means they will not have any weights assigned.
Vertex groups will only be created for bones which are setup as deforming
(Properties ‣ Bone ‣ Deform Panel).

You can then manually select the vertices and assign them to a particular vertex group of your
choosing to have bones in the armature influence them.

Choose this option if you have already created (and weighted) all the vertex groups the mesh requires.

### Example

For example, if you have an armature which consists of three bones named “BoneA”,
“BoneB” and “BoneC” and cube mesh called “Cube”. If you parent the cube to
the armature, the cube will get three new vertex groups created on it called “BoneA”,
“BoneB” and “BoneC”. Notice that each vertex group is empty.

[image reference removed]

Cube in Edit Mode using Armature Deform with empty groups.
user: Give a detailed overview of Exporting: syntax, arguments, return values, common patterns.

assistant: ### General

Format: ASCII
:   Exports the stl-file in ASCII format rather than as a binary format

Batch
:   Export each object as a separate STL file.

Include: Selection Only
:   When checked, only selected objects are exported.
    Instanced objects, for example collections that are instanced in the scene,
    are considered ‘selected’ when their instancer is selected.

Scale
:   Value by which to scale the exported objects in relation to the world’s origin.

Scene Unit
:   Apply current scene’s unit (as defined by unit scale) to exported data.

Forward, Up
:   Since many applications use a different axis for ‘Up’, these are axis conversion for these settings,
    Forward and Up axes – By mapping these to different axes you can convert rotations
    between applications default up and forward axes.

    Blender uses Y Forward, Z Up (since the front view looks along the +Y direction).
    For example, it’s common for applications to use Y as the up axis, in that case -Z Forward, Y Up is needed.

### Geometry

Apply Modifiers
:   Export objects using the evaluated mesh, meaning the resulting mesh after all
    [Modifiers](../../modeling/modifiers/index.html) have been calculated.
user: Show practical ways to work with Sound Crossfade in a Blender add-on or script – include code.

assistant: # Sound Crossfade

The *Sound Crossfade* transition works by animating the *Volume*
of two overlapping Sound strips to evenly fade between them.
Because this simply animates a value it does not create a strip like other effects or transitions.
user: What is Brush Gpencil Types Items and how is it used in Blender Python scripting?

assistant: # Brush Gpencil Types Items

DRAW:
:   Draw.

    The brush is of type used for drawing strokes.

FILL:
:   Fill.

    The brush is of type used for filling areas.

ERASE:
:   Erase.

    The brush is used for erasing strokes.

TINT:
:   Tint.

    The brush is of type used for tinting strokes.
user: Show practical ways to work with Combine Bundle Node in a Blender add-on or script – include code.

assistant: # Combine Bundle Node

[image reference removed]

The *Combine Bundle* node creates a new [Bundle](../../../../interface/controls/nodes/types/utilities/bundles/index.xhtml)
from multiple input values.
Each input becomes an element of the bundle, identified by its socket name.
Values can be accessed in other parts of the node tree using the
[Separate Bundle](../../../../interface/controls/nodes/types/utilities/bundles/separate_bundle.xhtml)
user: Provide the full official documentation entry for Inherited Properties, preserving all code examples.

assistant: |  |  |
| --- | --- |
| - [`bpy_struct.id_data`](bpy.types.bpy_struct.html#bpy.types.bpy_struct.id_data "bpy.types.bpy_struct.id_data") - [`UIList.bl_idname`](bpy.types.UIList.html#bpy.types.UIList.bl_idname "bpy.types.UIList.bl_idname") - [`UIList.list_id`](bpy.types.UIList.html#bpy.types.UIList.list_id "bpy.types.UIList.list_id") - [`UIList.layout_type`](bpy.types.UIList.html#bpy.types.UIList.layout_type "bpy.types.UIList.layout_type") - [`UIList.use_filter_show`](bpy.types.UIList.html#bpy.types.UIList.use_filter_show "bpy.types.UIList.use_filter_show") - [`UIList.filter_name`](bpy.types.UIList.html#bpy.types.UIList.filter_name "bpy.types.UIList.filter_name") | - [`UIList.use_filter_invert`](bpy.types.UIList.html#bpy.types.UIList.use_filter_invert "bpy.types.UIList.use_filter_invert") - [`UIList.use_filter_sort_alpha`](bpy.types.UIList.html#bpy.types.UIList.use_filter_sort_alpha "bpy.types.UIList.use_filter_sort_alpha") - [`UIList.use_filter_sort_reverse`](bpy.types.UIList.html#bpy.types.UIList.use_filter_sort_reverse "bpy.types.UIList.use_filter_sort_reverse") - [`UIList.use_filter_sort_lock`](bpy.types.UIList.html#bpy.types.UIList.use_filter_sort_lock "bpy.types.UIList.use_filter_sort_lock") - [`UIList.bitflag_filter_item`](bpy.types.UIList.html#bpy.types.UIList.bitflag_filter_item "bpy.types.UIList.bitflag_filter_item") - [`UIList.bitflag_item_never_show`](bpy.types.UIList.html#bpy.types.UIList.bitflag_item_never_show "bpy.types.UIList.bitflag_item_never_show") |