PGCRYPT/OpenBlender_Train huggingface dataset:
user: Describe Named Attributes from the Blender manual or Python API, including usage steps and snippets.

assistant: Named attributes are created and used in other areas of Blender like shaders, painting, and UV mapping.
In the [modifier panel](../modifiers/geometry_nodes.xhtml), a named attribute can
be used for input by clicking the icon to the right of the value button.
The string input allows you to search and choose existing attributes from the modifier’s input geometry.

[image reference removed]

Attribute Search.

The attribute search gives a bit of context about each attribute.
To the left of the menu, the attribute domain is shown followed by the attribute name.
To the right of the menu, the attribute data type is shown.
user: What is Faces and how is it used in Blender Python scripting?

assistant: # Faces

*Instancing Faces* is the capability to replicate an object on each face of a parent object.
One of the best ways to explain this is through an example illustration.

Scale
:   Scales each instance according to the size of its corresponding face.

    Inherit Scale
    :   Scale the instance faces objects.

*Make Instance Face* tool converts linked objects (that share mesh data) into instanced faces.
This tool creates the parent object (instancer) with faces where the objects were,
then it uses *Instancing Faces* to put instances at the location of every created face.

You can go back from *Instancing Faces* to multiple linked objects using
[Make Instances Real](../../editing/apply.xhtml#bpy-ops-object-duplicates-make-real).
user: Provide the full official documentation entry for UV Maps, preserving all code examples.

assistant: UV Maps are used to map a 3D object onto a 2D plane that determines where a texture appears on the 3D object.
Different UV Maps can be used for different textures. For more information see [UV Maps](../uv/uv_texture_spaces.html#uv-maps-panel).
user: Provide the full official documentation entry for GeometryNodeStringJoin(GeometryNode), preserving all code examples.

assistant: # GeometryNodeStringJoin(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.GeometryNodeStringJoin(*GeometryNode*)
:   Combine any number of input strings

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

assistant: `--disable-depsgraph-on-file-load`
:   Background mode: Do not systematically build and evaluate ViewLayers’ dependency graphs
    when loading a blend-file in background mode (`-b` or `-c` options).

    Scripts requiring evaluated data then need to explicitly ensure that
    an evaluated depsgraph is available
    (e.g. by calling `depsgraph = context.evaluated_depsgraph_get()`).

    NOTE: this is a temporary option, in the future depsgraph will never be
    automatically generated on file load in background mode.

`--disable-liboverride-auto-resync`
:   Do not perform library override automatic resync when loading a new blend-file.

    NOTE: this is an alternative way to get the same effect as when setting the
    `No Override Auto Resync` User Preferences Debug option.

`--debug-ffmpeg`
:   Enable debug messages from FFmpeg video input and output.

`--debug-cycles`
:   Enable debug messages from Cycles.
user: Explain Loose Geometry in complete detail according to the official Blender documentation.

assistant: Depending on the [selection mode](introduction.html#bpy-types-toolsettings-mesh-select-mode),
this operator selects vertices that are not part of any edge, edges that are not
part of any face, or faces that do not share an edge with any other face.
user: Provide the full official documentation entry for Shaders, preserving all code examples.

assistant: An important concept to understand when building node setups is
that of the *shader socket*. The output of all surface and
volume shaders is a shader, describing lighting interaction at the surface or of the volume,
rather than the color of the surface.

There are a few types of shaders available as nodes:

BSDF shader
:   Describe light reflection, refraction and absorption at an object surface.

Emission shader
:   Describe light emission at an object surface or in a volume.

Volume shader
:   Describe light scattering inside a volume.

Background shader
:   Describe light emission from the environment.

Each shader node has a color input, and outputs a shader.
These can then be mixed and added together using Mix and Add Shader nodes.
No other operations are permitted.
The resulting output can then be used by the renderer to compute all light interactions,
for direct lighting or global illumination.
user: Explain Experimental in complete detail according to the official Blender documentation.

assistant: # Experimental

These preferences are reserved for features that are currently being worked on and are not yet complete.
Experimental features are only available in [Daily Builds](https://builder.blender.org/download/daily/).

[image reference removed]

Blender Preferences Experimental section.
user: Explain Vertex Paint Mode in complete detail according to the official Blender documentation.

assistant: Vertex Paint Mode is selected from the *Mode* menu in the 3D Viewport header.
Once Vertex Paint Mode is activated, the Toolbar of the 3D Viewport will change to Vertex Paint Mode specific panels.

[image reference removed]

3D Viewport Mode selector set to Vertex Paint Mode.
user: How do I use References in Blender? Include parameters, examples, warnings and best practices.

assistant: |  |  |
| --- | --- |
| - [`FunctionNodeFormatString.format_items`](bpy.types.FunctionNodeFormatString.html#bpy.types.FunctionNodeFormatString.format_items "bpy.types.FunctionNodeFormatString.format_items") - [`NodeFunctionFormatStringItems.new`](bpy.types.NodeFunctionFormatStringItems.html#bpy.types.NodeFunctionFormatStringItems.new "bpy.types.NodeFunctionFormatStringItems.new") | - [`NodeFunctionFormatStringItems.remove`](bpy.types.NodeFunctionFormatStringItems.html#bpy.types.NodeFunctionFormatStringItems.remove "bpy.types.NodeFunctionFormatStringItems.remove") |
user: Give a detailed overview of Attaching a Crash Log: syntax, arguments, return values, common patterns.

assistant: Attaching a crash log to your bug report (in the case of a hard crash) may help the development team to identify the
problem more easily. Follow the directions in [Crashes](crash.xhtml) to locate the text file and upload it to the bug
report.
user: Describe Symmetry from the Blender manual or Python API, including usage steps and snippets.

assistant: # Symmetry

Mirror
:   Mirror the brush strokes across the selected local axes.
    Note that if you want to alter the directions the axes point in,
    you must rotate the model in Edit Mode and not in Object Mode.
user: Show practical ways to work with Filters in a Blender add-on or script – include code.

assistant: # Filters

Filters are tools which provide an alternative way of sculpting, because they do not rely on a brush radius.
Instead they will affect any vertices that are visible and not masked.

[image reference removed]

The strength is controlled by click & dragging from left to right.
The position of the cursor can be used to only affect specific areas, if auto-masking is used.

Many of the same brush types are also available as a filter type.
This way much of the mesh can simultaneously be smoothed, colored or have some cloth simulation applied.
user: Give a detailed overview of References: syntax, arguments, return values, common patterns.

assistant: |  |  |
| --- | --- |
| - [`Object.field`](bpy.types.Object.html#bpy.types.Object.field "bpy.types.Object.field") - [`ParticleSettings.force_field_1`](bpy.types.ParticleSettings.html#bpy.types.ParticleSettings.force_field_1 "bpy.types.ParticleSettings.force_field_1") | - [`ParticleSettings.force_field_2`](bpy.types.ParticleSettings.html#bpy.types.ParticleSettings.force_field_2 "bpy.types.ParticleSettings.force_field_2") |
user: Explain Proxy in complete detail according to the official Blender documentation.

assistant: # Proxy

As projects involve increasingly high-resolution footage,
the performance of the video preview can decrease drastically.
To combat this, Blender can generate proxies – copies of the original footage stored at a
lower quality and/or resolution – to maintain a smooth editing experience without
compromising visual fidelity in the end result.

The quickest way to set up proxies for videos is to simply select a
[Proxy Render Size](../../preview/sidebar.xhtml#bpy-types-spacesequenceeditor-proxy-render-size)
in the *View* tab (visible when the editor is in *Preview* or
*Sequencer & Preview* mode). This will automatically enable the selected
proxy resolution in all the strips and start generating the downscaled video files.

You can use the *Proxy* tab if you want to configure proxies in more detail
(or create proxies for image sequences).
user: Show practical ways to work with References in a Blender add-on or script – include code.

assistant: |  |  |
| --- | --- |
| - [`bpy.context.edit_mask`](bpy.context.html#bpy.context.edit_mask "bpy.context.edit_mask") - [`BlendData.masks`](bpy.types.BlendData.html#bpy.types.BlendData.masks "bpy.types.BlendData.masks") - [`BlendDataMasks.new`](bpy.types.BlendDataMasks.html#bpy.types.BlendDataMasks.new "bpy.types.BlendDataMasks.new") - [`BlendDataMasks.remove`](bpy.types.BlendDataMasks.html#bpy.types.BlendDataMasks.remove "bpy.types.BlendDataMasks.remove") - [`CompositorNodeMask.mask`](bpy.types.CompositorNodeMask.html#bpy.types.CompositorNodeMask.mask "bpy.types.CompositorNodeMask.mask") - [`MaskStrip.mask`](bpy.types.MaskStrip.html#bpy.types.MaskStrip.mask "bpy.types.MaskStrip.mask") | - [`SpaceClipEditor.mask`](bpy.types.SpaceClipEditor.html#bpy.types.SpaceClipEditor.mask "bpy.types.SpaceClipEditor.mask") - [`SpaceImageEditor.mask`](bpy.types.SpaceImageEditor.html#bpy.types.SpaceImageEditor.mask "bpy.types.SpaceImageEditor.mask") - [`StripModifier.input_mask_id`](bpy.types.StripModifier.html#bpy.types.StripModifier.input_mask_id "bpy.types.StripModifier.input_mask_id") - [`StripsMeta.new_mask`](bpy.types.StripsMeta.html#bpy.types.StripsMeta.new_mask "bpy.types.StripsMeta.new_mask") - [`StripsTopLevel.new_mask`](bpy.types.StripsTopLevel.html#bpy.types.StripsTopLevel.new_mask "bpy.types.StripsTopLevel.new_mask") |
user: What is Single Click Tools and how is it used in Blender Python scripting?

assistant: [image reference removed]

Simpler tools that apply an operation on surfaces that are clicked on.

[Edit Face Set](tools/edit_face_set.xhtml)
:   Modifies the face set under the cursor.

[Mask by Color](tools/mask_by_color.xhtml)
:   Create a mask from any color from the color attribute by clicking on it.
user: Show practical ways to work with Propagate in a Blender add-on or script – include code.

assistant: # Propagate

The Propagate tool copies the pose of the selected bones on the current frame over
to the keyframes delimited by the *Termination Mode*.
It automates the process of copying and pasting.

Termination Mode
:   Modes which determine how it decides when to stop overwriting keyframes.

    To Next Keyframe
    :   Simply copies the pose to the first keyframe after (but not including any keyframe on) the current frame.

    To Last Keyframe
    :   Will simply replace the last keyframe (i.e. making action cyclic).

    Before Frame
    :   To all keyframes between current frame and the *End frame* option.
        This option is best suited for use from scripts due to the difficulties in setting this frame value,
        though it is possible to set this manually
        via the [Adjust Last Operation](../../../../interface/undo_redo.xhtml#bpy-ops-screen-redo-last) panel if necessary.

    Before Last Keyframe
    :   To all keyframes from current frame until no more are found.

    On Selected Keyframes
    :   Will apply the pose of the selected bones to all selected keyframes.

    On Selected Markers
    :   To all keyframes occurring on frames with Scene Markers after the current frame.

End Frame
:   Defines the upper-bound for the frame range within which keyframes
    will be affected (with the lower bound being the current frame).
user: Describe GeometryNodeSetGeometryName(GeometryNode) from the Blender manual or Python API, including usage steps and snippets.

assistant: # GeometryNodeSetGeometryName(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.GeometryNodeSetGeometryName(*GeometryNode*)
:   Set the name of a geometry for easier debugging

    *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 Saving Defaults, preserving all code examples.

assistant: The preferences are automatically saved when changed. This behavior can be changed by following the instructions under
[Auto-Save Preferences](introduction.html#autosave-preferences)

Changing the default startup file can be done via File ‣ Defaults ‣ Save Startup File. See
[Startup File](../../interface/window_system/topbar.html#startup-file).

There are two areas where Blender’s defaults are stored:

Preferences
:   The [Preferences](../../editors/preferences/introduction.html#prefs-menu) file stores keymap, add-ons theme and other options.

Startup File
:   The [Startup File](../../interface/window_system/topbar.html#startup-file) stores the scene and UI setup which are displayed at startup and when
    creating a new file (File ‣ New).
user: What is Inputs and how is it used in Blender Python scripting?

assistant: Image
:   Noisy image input.

Albedo
:   Optional albedo render pass to better preserve detail.
    For Cycles, it is recommended to use the Denoising Albedo render pass,
    which is available when enabling the Denoising Data passes.

Normal
:   Optional normal render pass to better preserve detail.
    For Cycles, it is recommended to use the Denoising Normal render pass,
    which is available when enabling the Denoising Data passes.

HDR
:   Preserve colors outside the 0 to 1 range.

Prefilter
:   None:
    :   Does not apply any prefiltering to the input passes. This option retains the most detail and
        is the fastest, but assumes the input passes are noise free which may require a high sample
        count. If the input passes are not noise free, then noise will remain in the image after denoising.

    Fast:
    :   Assumes the input passes are not noise free, yet does not apply prefiltering to the input passes.
        This option is faster than *Accurate* but produces a blurrier result.

    Accurate:
    :   Prefilters the input passes before denoising to reduce noise. This option usually produces
        more detailed results than *Fast* with increased processing time.

Quality
:   Follow Scene:
    :   Use the [scene’s quality setting](../../../render/eevee/render_settings/performance.html#bpy-types-rendersettings-compositor-denoise-preview-quality).

    High:
    :   Produces the highest quality output at the cost of long processing times.

    Balanced:
    :   Balanced between performance and quality, typically processing in half the time as *High*,
        while retaining most of the quality.

    Fast:
    :   Produces an output quickly at a noticeable cost of quality.
user: Give a detailed overview of Nudge: syntax, arguments, return values, common patterns.

assistant: # Nudge

Moves vertices in the direction of the brush stroke.

Similar to the [Snake Hook](snake_hook.xhtml) brush,
but instead only moves the geometry along the surface (using the area plane).
This is useful for grabbing geometry along curved surfaces,
without making too impactful changes to the overall object shape.
user: Provide the full official documentation entry for Inputs, preserving all code examples.

assistant: Geometry
:   The geometry to sample.

Sample Position
:   The position to start from when finding the closest location on the target geometry.
    By default, this is the same as if the [Position Node](../read/position.html) was connected.
user: How do I use IndexSwitchItem(bpy_struct) in Blender? Include parameters, examples, warnings and best practices.

assistant: # IndexSwitchItem(bpy_struct)

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

*class* bpy.types.IndexSwitchItem(*bpy_struct*)
:   identifier
    :   Consistent identifier used for the item

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

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: # Lightgroups(bpy_struct)

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

*class* bpy.types.Lightgroups(*bpy_struct*)
:   Collection of Lightgroups

    add(*\**, *name=''*)
    :   add

        Parameters:
        :   **name** (*string**,* *(**optional**,* *never None**)*) – Name, Name of newly created lightgroup

        Returns:
        :   Newly created Lightgroup

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

    remove(*lightgroup*)
    :   Remove given light group

        Parameters:
        :   **lightgroup** ([`Lightgroup`](bpy.types.Lightgroup.html#bpy.types.Lightgroup "bpy.types.Lightgroup"), (never None)) – Lightgroup to remove

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

assistant: # BlendDataMasks(bpy_struct)

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

*class* bpy.types.BlendDataMasks(*bpy_struct*)
:   Collection of masks

    tag(*value*)
    :   tag

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

    new(*name*)
    :   Add a new mask with a given name to the main database

        Parameters:
        :   **name** (*string**,* *(**never None**)*) – Mask, Name of new mask data-block

        Returns:
        :   New mask data-block

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

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

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

    *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 NodeInstanceHash(bpy_struct) in Blender? Include parameters, examples, warnings and best practices.

assistant: # NodeInstanceHash(bpy_struct)

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

*class* bpy.types.NodeInstanceHash(*bpy_struct*)
:   Hash table containing node instance data

    *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 GPENCIL_UL_matslots(UIList) in complete detail according to the official Blender documentation.

assistant: # GPENCIL_UL_matslots(UIList)

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

*class* bpy.types.GPENCIL_UL_matslots(*UIList*)
:   draw_item(*_context*, *layout*, *_data*, *item*, *icon*, *_active_data*, *_active_propname*, *_index*)

    *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 GeometryNodeInputNormal(GeometryNode) in a Blender add-on or script – include code.

assistant: # GeometryNodeInputNormal(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.GeometryNodeInputNormal(*GeometryNode*)
:   Retrieve a unit length vector indicating the direction pointing away from the geometry at each element

    legacy_corner_normals
    :   Always use face normals for the face corner domain, matching old behavior of the node

        Type:
        :   boolean, default False

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: What is Tool Context and how is it used in Blender Python scripting?

assistant: Because tool node groups have different settings than modifier node groups, you need to change
the [Node Tree Sub-Type](../../editors/geometry_node.xhtml#bpy-types-spacenodeeditor-node-tree-sub-type) in the Geometry Node Editor’s header
to *Tool* in order to edit them.

When this type is selected, the [data-block menu](../../interface/controls/templates/data_block.xhtml#ui-data-block) in the editor’s
header will only show the node groups that have the
[Tool Usage](../../interface/controls/nodes/groups.xhtml#bpy-types-geometrynodetree-is-tool) enabled.

- If you create a new node group while in the *Tool* editor type, the *Tool* Usage will be
  enabled automatically.
- If you want to convert an existing modifier node group, you need to manually enable the
  *Tool* Usage in the Sidebar (and optionally disable the *Modifier* Usage) before switching
  to the *Tool* editor type. Also make sure to set up the [Supported Modes & Object Types](#modeling-geometry-nodes-tools-contexts).
user: What is Inherited Properties and how is it used in Blender Python scripting?

assistant: |  |  |
| --- | --- |
| - [`bpy_struct.id_data`](bpy.types.bpy_struct.html#bpy.types.bpy_struct.id_data "bpy.types.bpy_struct.id_data") - [`Space.type`](bpy.types.Space.html#bpy.types.Space.type "bpy.types.Space.type") | - [`Space.show_locked_time`](bpy.types.Space.html#bpy.types.Space.show_locked_time "bpy.types.Space.show_locked_time") - [`Space.show_region_header`](bpy.types.Space.html#bpy.types.Space.show_region_header "bpy.types.Space.show_region_header") |
user: Describe Introduction from the Blender manual or Python API, including usage steps and snippets.

assistant: # Introduction

As with any other object, you edit your armature in *Edit Mode* `Tab`.

The set of bone editing tools is quite similar to the one for
[mesh](../../../../modeling/meshes/editing/introduction.html) editing.

The different [poses](../../posing/index.html)
you might create afterwards are based on this rest position.
So if you modify it in *Edit Mode*, all the poses already existing will also be modified.
Thus you should in general be sure that your armature is definitive before starting to
[skin](../../skinning/index.html) and [pose](../../posing/index.html) it!
user: Explain Tools in complete detail according to the official Blender documentation.

assistant: ### Comb

Moves the keypoints (similar to the Proportional Editing tool).

Deflect Emitter
:   Hair particles only – Do not move keypoints through the emitting mesh.

    Distance
    :   The distance to keep from the Emitter.

### Smooth

Parallels visually adjacent segments.

### Add

Adds new particles.

Count
:   The number of new particles per step.

Interpolate
:   Interpolate the shape of new hairs from existing ones.

Steps
:   Amount of brush steps.

Keys
:   How many keys to make new particles with.

### Length

Scales the segments, so it makes the hair longer with *Grow* or shorter with *Shrink*.

Grow/Shrink
:   Sets the brush to add the effect or reverse it.

### Puff

Rotates the hair around its first keypoint (root).
So it makes the hair stand up with *Add* or lay down with *Sub*.

Puff Volume
:   Apply puff to unselected end points, (Helps to maintain the hair volume when puffing the root.)

### Cut

Scales the segments until the last keypoint reaches the brush.

### Weight

This is especially useful for soft body animations, because the weight defines the soft body *Goal*.
A keypoint with a weight of 1 will not move at all,
a keypoint with a weight of 0 subjects fully to soft body animation.
This value is scaled by the Strength *Min* to *Max* range of soft body goals…

### Common Options

Below the brush types, their settings appear:

Radius `F`
:   Set the radius of the brush.

Strength `Shift`-`F`
:   Set the strength of the brush effect (not for Add brush).
user: Explain NodeSocketCollection(NodeSocketStandard) in complete detail according to the official Blender documentation.

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

    default_value
    :   Input value used for unconnected socket

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

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

assistant: |  |  |
| --- | --- |
| - [`Image.colorspace_settings`](bpy.types.Image.html#bpy.types.Image.colorspace_settings "bpy.types.Image.colorspace_settings") - [`ImageStrip.colorspace_settings`](bpy.types.ImageStrip.html#bpy.types.ImageStrip.colorspace_settings "bpy.types.ImageStrip.colorspace_settings") - [`MovieClip.colorspace_settings`](bpy.types.MovieClip.html#bpy.types.MovieClip.colorspace_settings "bpy.types.MovieClip.colorspace_settings") | - [`MovieStrip.colorspace_settings`](bpy.types.MovieStrip.html#bpy.types.MovieStrip.colorspace_settings "bpy.types.MovieStrip.colorspace_settings") - [`ImageFormatSettings.linear_colorspace_settings`](bpy.types.ImageFormatSettings.html#bpy.types.ImageFormatSettings.linear_colorspace_settings "bpy.types.ImageFormatSettings.linear_colorspace_settings") |
user: How do I use StripTransform(bpy_struct) in Blender? Include parameters, examples, warnings and best practices.

assistant: # StripTransform(bpy_struct)

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

*class* bpy.types.StripTransform(*bpy_struct*)
:   Transform parameters for a sequence strip

    filter
    :   Type of filter to use for image transformation

        - `AUTO`
          Auto – Automatically choose filter based on scaling factor.
        - `NEAREST`
          Nearest – Use nearest sample.
        - `BILINEAR`
          Bilinear – Interpolate between 2×2 samples.
        - `CUBIC_MITCHELL`
          Cubic Mitchell – Cubic Mitchell filter on 4×4 samples.
        - `CUBIC_BSPLINE`
          Cubic B-Spline – Cubic B-Spline filter (blurry but no ringing) on 4×4 samples.
        - `BOX`
          Box – Averages source image samples that fall under destination pixel.

        Type:
        :   enum in [`'AUTO'`, `'NEAREST'`, `'BILINEAR'`, `'CUBIC_MITCHELL'`, `'CUBIC_BSPLINE'`, `'BOX'`], default `'AUTO'`

    offset_x
    :   Move along X axis

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

    offset_y
    :   Move along Y axis

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

    origin
    :   Origin of image for transformation

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

    rotation
    :   Rotate around image center

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

    scale_x
    :   Scale along X axis

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

    scale_y
    :   Scale along Y axis

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

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: # Cache

After you have set up the deflection mesh for the frame range you intend to run the simulation
(including animating that mesh *via* armatures),
you can now tell the cloth simulation to compute (and avoid) collisions.
Select the cloth object and in the *Object* tab,
*Physics* tab, set the *Start* and *End* settings for
the simulation frames you wish to compute, and click the *Bake* button.

Cache settings for cloth are the same as with other dynamic systems.
See [Particle Cache](../../particles/emitter/cache.xhtml) for details.
user: Give a detailed overview of ColorMapping(bpy_struct): syntax, arguments, return values, common patterns.

assistant: # ColorMapping(bpy_struct)

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

*class* bpy.types.ColorMapping(*bpy_struct*)
:   Color mapping settings

    blend_color
    :   Blend color to mix with texture output color

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

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

    blend_type
    :   Mode used to mix with texture output color

        Type:
        :   enum in [`'MIX'`, `'DARKEN'`, `'MULTIPLY'`, `'LIGHTEN'`, `'SCREEN'`, `'ADD'`, `'OVERLAY'`, `'SOFT_LIGHT'`, `'LINEAR_LIGHT'`, `'DIFFERENCE'`, `'SUBTRACT'`, `'DIVIDE'`, `'HUE'`, `'SATURATION'`, `'COLOR'`, `'VALUE'`], default `'MIX'`

    brightness
    :   Adjust the brightness of the texture

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

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

    contrast
    :   Adjust the contrast of the texture

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

    saturation
    :   Adjust the saturation of colors in the texture

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

    use_color_ramp
    :   Toggle color ramp operations

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

assistant: # UV Map Node

[image reference removed]

The *UV Map* node outputs texture coordinates from a specific [UV map](../../../modeling/meshes/uv/uv_texture_spaces.html#uv-maps-panel).
It is especially useful when working with multiple UV layouts in the same material.
The node is most commonly connected to the *Vector* input of texture nodes,
allowing textures to be placed or manipulated.
user: How do I use Usage in Blender? Include parameters, examples, warnings and best practices.

assistant: ### General

*UV Project* is great for making spotlights more diverse, and also for creating decals to break up repetition.

Usually, an [Image Texture node](../../../render/shader_nodes/textures/image.xhtml) mapped to the UV map
that the modifier targets is added to the object’s material.
user: Show practical ways to work with Mesh to Curve Node in a Blender add-on or script – include code.

assistant: # Mesh to Curve Node

[image reference removed]

The *Mesh to Curve* node converts a mesh into one or more curve splines.

Two different conversion modes are supported, depending on the desired output:

- **Edges**: Turns each string of connected mesh edges into a poly spline.
  Whenever two or more edge strings intersect, they will be split into separate splines.
- **Faces**: Creates a cyclic spline from each mesh face. This mode is generally much faster than *Edges*,
  as it parallelizes easily and can share face and corner attributes without needing to copy them.

Loose vertices are ignored – they will not be turned into single-point splines.

Attributes, both named and unnamed ones, are transferred to the resulting splines.
If there is a `radius` attribute, it will be applied as such,
although you may find it more convenient to use the
[Set Curve Radius Node](../../curve/write/set_curve_radius.html) for this.
user: Explain General in complete detail according to the official Blender documentation.

assistant: |  |  |
| --- | --- |
| `1` - `3` | Switch [Selection mode](../../modeling/meshes/selecting/introduction.html) |
| `4` | Object Mode |
| `5` | [Modes](../../editors/3dview/modes.html) Pie Menu |
| `RMB` | Context menu |
| `Tab` | [Menu Search](../operators.html#bpy-ops-wm-search-menu) |
| `Shift`-`Tab` | Quick access (favorites) |
| `Return` | Rename |
| `Ctrl`-`Return` | Render |
| `Ctrl`-`[` | Toggle Toolbar |
| `Ctrl`-`]` | Toggle Sidebar |
user: What is Guides and how is it used in Blender Python scripting?

assistant: Grid
:   Show the grid.

Over Image
:   Show the grid on top of the image rather than behind it.

Grid Shape Source
:   How the row and column counts are determined.

    Dynamic:
    :   The grid starts at 8×8 cells that are automatically subdivided further as you zoom in.

    Fixed:
    :   The row and column counts are fixed and can be configured manually.

    Pixel:
    :   Each grid cell matches one image pixel.

Fixed Subdivisions X, Y
:   Number of columns/rows in the grid.

Tiles X, Y
:   The number of [UDIM](../../modeling/meshes/uv/workflows/udims.xhtml)
    tile grids to display in each cardinal direction.
user: What is Viewport Display and how is it used in Blender Python scripting?

assistant: # Viewport Display

This panel lets you customize the look of your bones.

[image reference removed]

Viewport Display panel in Object/Pose mode.

[image reference removed]

Viewport Display panel in Edit mode.
user: Describe Clamp Fireflies from the Blender manual or Python API, including usage steps and snippets.

assistant: Ideally with all the previous tricks, [Fireflies](../../../glossary/index.xhtml#term-Fireflies) would be eliminated, but they could still happen.
For that, the *intensity* that any individual light ray sample will contribute to a pixel can be *clamped*
to a maximum value with the integrator [Clamp setting](../render_settings/light_paths.xhtml#render-cycles-integrator-clamp-samples).

If set too low this can cause missing highlights in the image,
which might be useful to preserve for camera effects such as bloom or glare.
To mitigate this conundrum it’s often useful to clamp only indirect bounces,
leaving highlights directly visible to the camera untouched.

|  |  |
| --- | --- |
| ../../../_images/render_cycles_optimizations_reducing-noise_no-clamp.jpg   No Clamp (0). | ../../../_images/render_cycles_optimizations_reducing-noise_clamp4.jpg   With Clamp set to 4. |
user: How do I use PARTICLE_UL_particle_systems(UIList) in Blender? Include parameters, examples, warnings and best practices.

assistant: # PARTICLE_UL_particle_systems(UIList)

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

*class* bpy.types.PARTICLE_UL_particle_systems(*UIList*)
:   draw_item(*_context*, *layout*, *data*, *item*, *icon*, *_active_data*, *_active_propname*, *_index*, *_flt_flag*)

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

assistant: Color
:   Color of the emitted light.

Strength
:   Strength of the emitted light. For point and area lights, the unit is Watts.
    For materials, a value of 1.0 will ensure that the object in the image has
    the exact same color as the Color input, i.e. make it ‘shadeless’.
user: Show practical ways to work with Basic Usage in a Blender add-on or script – include code.

assistant: In this example we will use a UV sphere with an extruded “north pole” as our base object and
a cube as our parent mesh. To parent the sphere to the cube, in *Object Mode*,
first `LMB` select the sphere, then `Shift`-`LMB` select the cube
(order is very important here), and finally `Ctrl`-`P` to parent.

|  |  |
| --- | --- |
| ../../../../_images/scene-layout_object_properties_instancing_faces_cube-before.png   A cube and a sphere. | ../../../../_images/scene-layout_object_properties_instancing_faces_cube-after.png   Instancing Faces applied to the cube. |

Next, in the Properties ‣ Object Properties ‣ Instancing,
select *Faces*. The sphere is instanced, one for each face of the cube.

Both the parent object and original are displayed as editable “templates” in 3D Viewport,
but neither is rendered.
user: Give a detailed overview of References: syntax, arguments, return values, common patterns.

assistant: |  |  |
| --- | --- |
| - [`WorkSpace.tools`](bpy.types.WorkSpace.html#bpy.types.WorkSpace.tools "bpy.types.WorkSpace.tools") - [`wmTools.from_space_image_mode`](bpy.types.wmTools.html#bpy.types.wmTools.from_space_image_mode "bpy.types.wmTools.from_space_image_mode") - [`wmTools.from_space_node`](bpy.types.wmTools.html#bpy.types.wmTools.from_space_node "bpy.types.wmTools.from_space_node") | - [`wmTools.from_space_sequencer`](bpy.types.wmTools.html#bpy.types.wmTools.from_space_sequencer "bpy.types.wmTools.from_space_sequencer") - [`wmTools.from_space_view3d_mode`](bpy.types.wmTools.html#bpy.types.wmTools.from_space_view3d_mode "bpy.types.wmTools.from_space_view3d_mode") |
user: Give a detailed overview of Smoothing of Cloth: syntax, arguments, return values, common patterns.

assistant: Now, if you followed this from the previous section, your cloth is probably looking a little blocky.
In order to make it look nice and smooth like the picture you need to apply
a Smooth and/or Subdivision Surface Modifier in the *Modifiers* tab.
Then, in the Toolbar, find the *Edit* panel and Press *Smooth*.