PGCRYPT/OpenBlender_Train huggingface dataset:
user: What is NodesModifierDataBlock(bpy_struct) and how is it used in Blender Python scripting?

assistant: # NodesModifierDataBlock(bpy_struct)

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

*class* bpy.types.NodesModifierDataBlock(*bpy_struct*)
:   id
    :   Type:
        :   [`ID`](bpy.types.ID.html#bpy.types.ID "bpy.types.ID")

    id_name
    :   Name that is mapped to the referenced data-block

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

    id_type
    :   Type:
        :   enum in [Id Type Items](bpy_types_enum_items/id_type_items.html#rna-enum-id-type-items), default `'ACTION'`, (readonly)

    lib_name
    :   Used when the data block is not local to the current .blend file but is linked from some library

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

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: The Weight Table shows all the weights associated with the *active vertex*, which is the
vertex that was selected last (and is highlighted in white). If there is no active vertex,
or it isn’t part of any vertex group, the panel is not displayed.

### Set the Active Group

You can click the name of a vertex group to make it the active one.

[image reference removed]

Changing the active vertex group.

### Display Weights in Edit Mode

[image reference removed]

Enable display of weights in Edit Mode.

When you are in Edit Mode, you can make the weights of the active group visible on the mesh:
open the *Mesh Edit Mode Overlays* popover and enable the *Vertex Group Weights* option.

[image reference removed]

Weights in Edit Mode.

### Change a Weight

You can change the weight for a vertex group by either clicking the number and typing a new
one or by dragging left and right with `LMB`. You can also click the arrows
(only shown when hovering) to change the weight in steps of 0.01.

[image reference removed]

Changing a weight value.

### Copy a Weight

The *Paste Weight to Selected* button copies the weight from the active vertex to the other selected
vertices. Note that, even though it uses the word “paste,” it doesn’t interact with the *Copy* button
and in fact doesn’t use the clipboard at all.

[image reference removed]

Copying a weight.

### Delete a Weight

The *Delete Weight* button removes the active vertex from the vertex group,
making the row disappear from the list.

[image reference removed]

Deleting a weight.
user: Explain Common Problems in complete detail according to the official Blender documentation.

assistant: ### Unsupported Graphics Driver Error

This means your graphics card and driver do not have the minimum required OpenGL 3.3 version needed by Blender.

Installing the latest version of the correct driver can help upgrade the OpenGL version, though some graphics cards
are simply too old to run the latest Blender. In such cases, using Blender 2.79 or earlier is the only option.
Starting with Blender 2.8 (which added EEVEE), there is less support for older graphics hardware.

### Crash on Startup

Try running Blender from the [command line](../../../advanced/command_line/index.xhtml), to see if any helpful error messages
are printed.

On Windows, graphics drivers can sometimes get corrupted or incorrectly replaced by Windows Update. In this case, it
can help to uninstall all graphics drivers (there may be multiple sets installed from Intel, AMD and NVIDIA) and
perform a clean installation with drivers from the manufacturer’s website.

### Poor Performance

- Update your graphics drivers (see above).
- On laptops, make sure you are using a dedicated GPU (see above).
- Try lowering quality settings in Preferences ‣ System ‣ Memory & Limits.
- Try undoing settings in your graphics drivers, if you made any changes there.

### Render Errors

See [EEVEE](../../../render/eevee/limitations/index.xhtml) and [Cycles](../../../render/cycles/gpu_rendering.xhtml) documentation
respectively.

### Wrong Selection in 3D Viewport

See [Invalid Selection, Disable Anti-Aliasing](../../3d_view.xhtml#troubleshooting-3dview-invalid-selection).

### Virtual Machines

Running Blender inside a virtual machine is known to have problems when OpenGL drawing calls are forwarded to the host
operating system.

To resolve this, configure the system to use PCI passthrough.

Some VM hosts may require turning on GPU paravirtualization. Some GPU vendors restrict this function to higher-priced
cards or models.
user: Provide the full official documentation entry for Creating Meta-rigs, preserving all code examples.

assistant: # Creating Meta-rigs

1. Add a single bone from the Add ‣ Armature menu.
2. Go in armature Edit Mode and build the meta rig by samples or Rigify types.
3. Define the [Rigify bone collection UI](#bpy-types-bonecollection-rigify-ui-row),
   [color sets](#bpy-types-armature-rigify-colors), and selection sets.
4. In the armature properties click on the *Generate* button to generate the rig.
user: Describe Template Scripts from the Blender manual or Python API, including usage steps and snippets.

assistant: While app templates can use Python scripts,
they simply have access to the same APIs available for add-ons and any other scripts.

As noted above, you may optionally have an `__init__.py` in your app template.
This has the following advantages:

- Changes can be made to the startup or preferences, without having to distribute a blend-file.
- Changes can be made dynamically.

  You could for example – configure the template to check the number of processors,
  operating system and memory, then set values based on this.
- You may enable add-ons associated with your template.

On activation a `register` function is called, `unregister` is called when another template is selected.

As these only run once, any changes to defaults must be made via handler.
Two handlers you are likely to use are:

- `bpy.app.handlers.load_factory_preferences_post`
- `bpy.app.handlers.load_factory_startup_post`

These allow you to define your own “factory settings”, which the user may change,
just as Blender has it’s own defaults when first launched.

This is an example `__init__.py` file which defines defaults for an app template to use.

```
import bpy
from bpy.app.handlers import persistent

@persistent
def load_handler_for_preferences(_):
    print("Changing Preference Defaults!")
    from bpy import context

    prefs = context.preferences
    prefs.use_preferences_save = False

    kc = context.window_manager.keyconfigs["blender"]
    kc_prefs = kc.preferences
    if kc_prefs is not None:
        kc_prefs.select_mouse = 'RIGHT'
        kc_prefs.spacebar_action = 'SEARCH'
        kc_prefs.use_pie_click_drag = True

    view = prefs.view
    view.header_align = 'BOTTOM'

@persistent
def load_handler_for_startup(_):
    print("Changing Startup Defaults!")

    # Use smooth faces.
    for mesh in bpy.data.meshes:
        for poly in mesh.polygons:
            poly.use_smooth = True

    # Use material preview shading.
    for screen in bpy.data.screens:
        for area in screen.areas:
            for space in area.spaces:
                if space.type == 'VIEW_3D':
                    space.shading.type = 'MATERIAL'
                    space.shading.use_scene_lights = True

def register():
    print("Registering to Change Defaults")
    bpy.app.handlers.load_factory_preferences_post.append(load_handler_for_preferences)
    bpy.app.handlers.load_factory_startup_post.append(load_handler_for_startup)

def unregister():
    print("Unregistering to Change Defaults")
    bpy.app.handlers.load_factory_preferences_post.remove(load_handler_for_preferences)
    bpy.app.handlers.load_factory_startup_post.remove(load_handler_for_startup)
```
user: Describe GeometryNodeInputCurveHandlePositions(GeometryNode) from the Blender manual or Python API, including usage steps and snippets.

assistant: # GeometryNodeInputCurveHandlePositions(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.GeometryNodeInputCurveHandlePositions(*GeometryNode*)
:   Retrieve the position of each Bézier control point’s handles

    *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 GeometryNodeSDFGridMean(GeometryNode), preserving all code examples.

assistant: # GeometryNodeSDFGridMean(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.GeometryNodeSDFGridMean(*GeometryNode*)
:   Apply mean (box) filter smoothing to a signed distance field. Fast separable averaging filter for general smoothing of the distance field

    *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 Points to Volume Node and how is it used in Blender Python scripting?

assistant: # Points to Volume Node

[image reference removed]

The *Points to Volume* node generates a fog volume sphere around every point in the input geometry.
The new volume grid is named “density”.

It usually makes sense to combine this node with the
[Volume to Mesh Node](../volume/operations/volume_to_mesh.xhtml).
user: Describe NlaTrack(bpy_struct) from the Blender manual or Python API, including usage steps and snippets.

assistant: # NlaTrack(bpy_struct)

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

*class* bpy.types.NlaTrack(*bpy_struct*)
:   An animation layer containing Actions referenced as NLA strips

    active
    :   NLA Track is active

        Type:
        :   boolean, default False, (readonly)

    is_override_data
    :   In a local override data, whether this NLA track comes from the linked reference data, or is local to the override

        Type:
        :   boolean, default False, (readonly)

    is_solo
    :   NLA Track is evaluated itself (i.e. active Action and all other NLA Tracks in the same AnimData block are disabled)

        Type:
        :   boolean, default False

    lock
    :   NLA Track is locked

        Type:
        :   boolean, default False

    mute
    :   Disable NLA Track evaluation

        Type:
        :   boolean, default False

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

    select
    :   NLA Track is selected

        Type:
        :   boolean, default False

    strips
    :   NLA Strips on this NLA-track

        Type:
        :   [`NlaStrips`](bpy.types.NlaStrips.html#bpy.types.NlaStrips "bpy.types.NlaStrips") [`bpy_prop_collection`](bpy.types.bpy_prop_collection.html#bpy.types.bpy_prop_collection "bpy.types.bpy_prop_collection") of [`NlaStrip`](bpy.types.NlaStrip.html#bpy.types.NlaStrip "bpy.types.NlaStrip"), (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: |  |  |
| --- | --- |
| - [`bpy.context.world`](bpy.context.html#bpy.context.world "bpy.context.world") - [`BlendData.worlds`](bpy.types.BlendData.html#bpy.types.BlendData.worlds "bpy.types.BlendData.worlds") - [`BlendDataWorlds.new`](bpy.types.BlendDataWorlds.html#bpy.types.BlendDataWorlds.new "bpy.types.BlendDataWorlds.new") | - [`BlendDataWorlds.remove`](bpy.types.BlendDataWorlds.html#bpy.types.BlendDataWorlds.remove "bpy.types.BlendDataWorlds.remove") - [`Scene.world`](bpy.types.Scene.html#bpy.types.Scene.world "bpy.types.Scene.world") - [`ViewLayer.world_override`](bpy.types.ViewLayer.html#bpy.types.ViewLayer.world_override "bpy.types.ViewLayer.world_override") |
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") - [`FModifier.name`](bpy.types.FModifier.html#bpy.types.FModifier.name "bpy.types.FModifier.name") - [`FModifier.type`](bpy.types.FModifier.html#bpy.types.FModifier.type "bpy.types.FModifier.type") - [`FModifier.show_expanded`](bpy.types.FModifier.html#bpy.types.FModifier.show_expanded "bpy.types.FModifier.show_expanded") - [`FModifier.mute`](bpy.types.FModifier.html#bpy.types.FModifier.mute "bpy.types.FModifier.mute") - [`FModifier.is_valid`](bpy.types.FModifier.html#bpy.types.FModifier.is_valid "bpy.types.FModifier.is_valid") - [`FModifier.active`](bpy.types.FModifier.html#bpy.types.FModifier.active "bpy.types.FModifier.active") | - [`FModifier.use_restricted_range`](bpy.types.FModifier.html#bpy.types.FModifier.use_restricted_range "bpy.types.FModifier.use_restricted_range") - [`FModifier.frame_start`](bpy.types.FModifier.html#bpy.types.FModifier.frame_start "bpy.types.FModifier.frame_start") - [`FModifier.frame_end`](bpy.types.FModifier.html#bpy.types.FModifier.frame_end "bpy.types.FModifier.frame_end") - [`FModifier.blend_in`](bpy.types.FModifier.html#bpy.types.FModifier.blend_in "bpy.types.FModifier.blend_in") - [`FModifier.blend_out`](bpy.types.FModifier.html#bpy.types.FModifier.blend_out "bpy.types.FModifier.blend_out") - [`FModifier.use_influence`](bpy.types.FModifier.html#bpy.types.FModifier.use_influence "bpy.types.FModifier.use_influence") - [`FModifier.influence`](bpy.types.FModifier.html#bpy.types.FModifier.influence "bpy.types.FModifier.influence") |
user: Show practical ways to work with Smooth in a Blender add-on or script – include code.

assistant: Softens strokes by reducing the differences in the locations of the points along the line,
while trying to maintain similar values that make the line fluid and smoother.

Iterations
:   The number of times to repeat the procedure.

Factor
:   The amount of the smoothness to apply.

Smooth Endpoints
:   Smooths the stroke’s endpoints.

Keep Shape
:   Preserves the strokes shape.

Position
:   When enabled, the operator affect the points location.

Radius
:   When enabled, the operator affect the points thickness.

Opacity
:   When enabled, the operator affect the points strength (alpha).
user: Give a detailed overview of FunctionNodeFormatString(FunctionNode): syntax, arguments, return values, common patterns.

assistant: # FunctionNodeFormatString(FunctionNode)

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

*class* bpy.types.FunctionNodeFormatString(*FunctionNode*)
:   Insert values into a string using a Python and path template compatible formatting syntax

    active_index
    :   Index of the active item

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

    format_items
    :   Type:
        :   [`NodeFunctionFormatStringItems`](bpy.types.NodeFunctionFormatStringItems.html#bpy.types.NodeFunctionFormatStringItems "bpy.types.NodeFunctionFormatStringItems") [`bpy_prop_collection`](bpy.types.bpy_prop_collection.html#bpy.types.bpy_prop_collection "bpy.types.bpy_prop_collection") of [`NodeFunctionFormatStringItem`](bpy.types.NodeFunctionFormatStringItem.html#bpy.types.NodeFunctionFormatStringItem "bpy.types.NodeFunctionFormatStringItem"), (readonly)

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Provide the full official documentation entry for Brush Curves Sculpt Brush Type Items, preserving all code examples.

assistant: # Brush Curves Sculpt Brush Type Items

SELECTION_PAINT:
:   Paint Selection.

---

ADD:
:   Add.

DELETE:
:   Delete.

DENSITY:
:   Density.

---

COMB:
:   Comb.

SNAKE_HOOK:
:   Snake Hook.

GROW_SHRINK:
:   Grow / Shrink.

PINCH:
:   Pinch.

PUFF:
:   Puff.

SMOOTH:
:   Smooth.

SLIDE:
:   Slide.
user: Describe Relative or Absolute Shape Keys from the Blender manual or Python API, including usage steps and snippets.

assistant: Every object with shape keys maintains a stack of keys.
This stack may be of *Relative* or *Absolute* type.

### Relative

Relative shape keys are mainly used for muscles, limb joints, and facial animation.
Each shape is defined relative to the *Basis* or to another specified shape key.

The final result visible in the 3D Viewport, also called the *Mix*,
is the cumulative effect of each shape key with its current value.
Starting from the *Basis* shape, Blender applies each shape’s weighted offset
relative to its reference key.

Value
:   Controls the blend between a shape key and its reference key.

    - `0.0` = 100% influence of the reference key
    - `1.0` = 100% influence of the shape key

    Blender can extrapolate blends above 1.0 and below 0.0,
    which may amplify or invert the deformation.

Basis
:   The *Basis* is the first (top-most) key in the stack.

    - Represents the object’s vertices in their original positions.
    - Has no weight value and cannot be keyed.
    - Serves as the default *Reference Key* when creating new shape keys.

### Absolute

Absolute shape keys are mainly used to deform an object into different shapes *over time*.
Instead of being blended together, each key corresponds to a specific *Evaluation Time*.

The resulting shape, or *Mix*, is computed by interpolating between the previous and next keys
according to the current *Evaluation Time*.

Value
:   Represents the *Evaluation Time* (in frames) at which the shape key will be active.

Basis
:   The *Basis* is the first (top-most) key in the stack.

    - Represents the object’s vertices in their original positions.
    - Defines the starting shape for the absolute sequence.
user: Provide the full official documentation entry for Instance Scale Node, preserving all code examples.

assistant: # Instance Scale Node

[image reference removed]

The *Instance Scale* outputs the size of top-level instances on each axis in the
local space of the modifier object.

The [Instances](../instances.html) page contains more information about geometry instances.
user: What is limbs.rear_paw and how is it used in Blender Python scripting?

assistant: Derivative of [limbs.paw](#limbs-paw) with extended IK suitable for use in rear paws.
The additional IK tries to maintain thigh and paw bones (1st and 3rd) in a nearly parallel orientation
as the main IK control moves and rotates.

For best results, thigh and paw bones should start nearly parallel in the rest pose.
user: Describe Options from the Blender manual or Python API, including usage steps and snippets.

assistant: As the modifier is only a container its actual options are configured in the *Physics Properties* tab.
See the [Soft Body Physics Properties](../../../physics/soft_body/settings/index.html) for more information.
user: Explain Placement in complete detail according to the official Blender documentation.

assistant: There are a few methods to position the 3D Cursor.

### Direct Placement with the Mouse

[image reference removed]

Positioning the 3D Cursor with two orthogonal views.

The Cursor tool offers the most flexibility. Simply select it in the Toolbar
and click a point in the scene with `LMB` to place the 3D Cursor there.
In the tool settings, you can choose how it should be oriented:
by default, it matches the view orientation, but you can also make it
match the surface normal of a piece of geometry,
or the [transform orientation](controls/orientation.xhtml).

Alternatively, you can press `Shift`-`RMB` with any tool selected.
In this case, the 3D Cursor will always be aligned to the view orientation.

For accuracy you should use two perpendicular orthogonal 3D Viewports,
i.e. any combination of top `Numpad7`, front `Numpad1` and side `Numpad3`.
That way you can control the positioning along two axes in one view and
determine the depth in the other.

By default, the depth of the geometry under the cursor is used.
This can be disabled using the *Cursor Surface Project* toggle
in the [Preferences](../preferences/editing.xhtml).

### Sidebar

[image reference removed]

The 3D Cursor panel of the Sidebar region.

The 3D Cursor can also be positioned and oriented by editing the
respective values in the Sidebar.

### Snapping

One more way of positioning the 3D Cursor is through the Snap menu,
which allows you to move the Cursor to the origin of the selected object
for example.
user: Describe ViewLayers(bpy_struct) from the Blender manual or Python API, including usage steps and snippets.

assistant: # ViewLayers(bpy_struct)

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

*class* bpy.types.ViewLayers(*bpy_struct*)
:   Collection of render layers

    new(*name*)
    :   Add a view layer to scene

        Parameters:
        :   **name** (*string**,* *(**never None**)*) – New name for the view layer (not unique)

        Returns:
        :   Newly created view layer

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

    remove(*layer*)
    :   Remove a view layer

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

    move(*from_index*, *to_index*)
    :   Move a view layer

        Parameters:
        :   - **from_index** (*int in* *[**-inf**,* *inf**]*) – From Index, Index to move
            - **to_index** (*int in* *[**-inf**,* *inf**]*) – To Index, Target 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: Describe Grab from the Blender manual or Python API, including usage steps and snippets.

assistant: # Grab

Drag geometry across the screen, following the cursor.
*Grab* only moves the vertices that are under the brush radius at the start of the stroke.
This is an essential sculpting brush to be used frequently to build shapes and adjust proportions.

[image reference removed]
user: Explain Outputs in complete detail according to the official Blender documentation.

assistant: Width
:   The number of pixels along the X axis. Specific to each frame.

Height
:   The number of pixels along the Y axis. Specific to each frame.

Has Alpha
:   Whether the transparency channel be different from 1 for the pixels of this image frame. Specific to each frame.

Frame Count
:   The number of frames in an image or video frame sequence. For a static image, always 1.

FPS
:   The number of frames per second. For static image is always 0.
user: Provide the full official documentation entry for Node Optimizations, preserving all code examples.

assistant: As the first step in preparing a node shader for execution,
Cycles expands all node groups, as if using the Ungroup tool,
and discards UI only features like frames and reroute nodes.

After that, it applies some obvious transformations,
for example, it can (the list is not exhaustive):

- Replace the following nodes with the constant result of their evaluation,
  if all their inputs are determined to be constant:

  RGB, Value, Mix RGB, Math, Vector Math, RGB to BW, Gamma, Bright Contrast,
  Invert, Separate/Combine RGB/XYZ/HSV, Blackbody, RGB Curves, Vector Curves, Color Ramps.
- Detect Mix RGB, Math and Vector Math nodes that become no-op (without Clamp)
  or evaluate to 0 as a result of addition, subtraction, multiplication,
  division or dot/cross product with a known constant 0 or 1 input,
  and replace with the appropriate input link or constant result.
- Eliminate Mix RGB Mix (without Clamp) and Mix Shader nodes when
  Factor is known to be 0 or 1 by replacing with the appropriate input value or link.
- Eliminate no-op Mix RGB (except Color Burn, Color Dodge, Lighten, or enabled Clamp),
  Invert, RGB Curves and Vector Curves nodes with known zero Factor.
- Eliminate Emission and Background shader nodes that do not emit any light,
  and Add Shader nodes with one or both input arguments missing.
- Eliminate [Bump](../../shader_nodes/displacement/bump.xhtml) with constant Height input, using its Normal input or
  Geometry Normal instead. This is useful for implementing node group inputs that default to normal via routing
  through a no-op Bump before doing math.
- Replace [Attribute](../../shader_nodes/input/attribute.xhtml) nodes of the View Layer type with the
  evaluated attribute value (it is constant within the whole Render Layer).
- Combine multiple copies of the same node with the same inputs into only one instance.

Finally, any nodes that end up not connected either directly or indirectly to the Output node are removed.
user: Show practical ways to work with Library Overrides in a Blender add-on or script – include code.

assistant: Bone collections can be added using library overrides. For this to work, both
the armature Object and the Armature itself need to be overridden.

### Limitations

There are a few limitations when it comes to bone collections & overrides:

- Only bone collections that are local to the current blend file can be edited.
- Bone collections that already existed on the linked-in Armature are read-only,
  and only their visibility can be toggled. Those visibility changes won’t be
  saved, though.
- Custom properties of overridden bone collections cannot be edited in the
  properties panel. Python access is fine; this is just a current limitation of
  Blender’s UI code.

### How It Works

Bone collections added via overrides are ‘anchored’ to the preceding
collection, by name. Here is an example. The *italic* collections are defined on
the linked Armature in `armature.blend`. The **bold** ones are added by
overrides in `armature_shot_47.blend`.

- *FK Controls*
- *IK Controls*
- **Left Pinky** (anchored to “IK Controls”)
- **Right Pinky** (anchored to “Left Pinky”)

Now if the Armature in `armature.blend` gets updated with two more collections
it might look like this:

- *FK Controls*
- *IK Controls*
- *Face Controls*
- *Face Detail Controls*

After reloading `armature_shot_47.blend`, it will look like this:

- *FK Controls*
- *IK Controls*
- **Left Pinky** (still anchored to “IK Controls”)
- **Right Pinky** (still anchored to “Left Pinky”)
- *Face Controls*
- *Face Detail Controls*
user: Show practical ways to work with Assignment in a Blender add-on or script – include code.

assistant: # Assignment

Materials are data-blocks that can be created and then assigned to one or more objects.
An object can also have multiple materials assigned in different material slots,
which correspond to different parts of an object. If a smooth transition between
materials is desired, then mixing shader nodes with a [Mix shader](../shader_nodes/shader/mix.xhtml)
is a better solution.
user: How do I use spines.basic_tail in Blender? Include parameters, examples, warnings and best practices.

assistant: Defines a bendy and stretchy b-bones tail.

X, Y, Z (Boolean)
:   Specifies which local axis rotations should be replicated along the chain from each control
    bone to the following one.

Assign Tweak Layers
:   If enabled, allows placing the Tweak controls in different bone collections from the IK bones.
user: Show practical ways to work with Interactive Mirror in a Blender add-on or script – include code.

assistant: The *Mirror* operator flips the selected elements across a chosen axis.
Mirroring is equivalent to scaling the selection by -1 along the selected axis,
but it offers a faster and more direct workflow.

The mirror is relative to the [Transformation Orientation](../../../editors/3dview/controls/orientation.html)
and [Pivot Point](../../../editors/3dview/controls/pivot_point/index.html)
This gives full control over how and where the mirroring occurs, for example:

- Position the pivot point wherever you want the center of symmetry.
- Choose a transformation orientation (e.g. *Global*, *Local*, *Normal*).
- Select an axis (X, Y, or Z) along which to mirror.

### Usage

To mirror along a specific axis:

- Press `Ctrl`-`M`, then `X`, `Y`, or `Z` to select an axis.
- Pressing the same key again toggles the orientation between the active
  [Transform Orientation](../../../editors/3dview/controls/orientation.html) and the global orientation.
- Hold `MMB` and drag to mirror interactively in the desired direction.

### Properties

Orientation
:   The [Transform Orientation](../../../editors/3dview/controls/orientation.html) used to align the X, Y, and Z axes.

Constraint Axis
:   The axis (or axes) to mirror across.
    For example, mirroring across the X axis flips the selection horizontally.
user: Give a detailed overview of ParticleTarget(bpy_struct): syntax, arguments, return values, common patterns.

assistant: # ParticleTarget(bpy_struct)

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

*class* bpy.types.ParticleTarget(*bpy_struct*)
:   Target particle system

    alliance
    :   Type:
        :   enum in [`'FRIEND'`, `'NEUTRAL'`, `'ENEMY'`], default `'NEUTRAL'`

    duration
    :   Type:
        :   float in [0, 1.04857e+06], default 0.0

    is_valid
    :   Keyed particles target is valid

        Type:
        :   boolean, default False

    name
    :   Particle target name

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

    object
    :   The object that has the target particle system (empty if same object)

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

    system
    :   The index of particle system on the target object

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

    time
    :   Type:
        :   float in [0, 1.04857e+06], default 0.0

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   type
user: Give a detailed overview of CompositorNodeFlip(CompositorNode): syntax, arguments, return values, common patterns.

assistant: # CompositorNodeFlip(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.CompositorNodeFlip(*CompositorNode*)
:   Flip an image along a defined axis

    *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: Explain Insert Unicode in complete detail according to the official Blender documentation.

assistant: Opens a dialog box to input the entry of any Unicode character by entering its hexadecimal code point value.

See Wikipedia for a [List of Unicode characters](https://en.wikipedia.org/wiki/List_of_Unicode_characters)
which list there respective hexadecimal code point values.
user: Provide the full official documentation entry for CurvePoint(bpy_struct), preserving all code examples.

assistant: # CurvePoint(bpy_struct)

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

*class* bpy.types.CurvePoint(*bpy_struct*)
:   Curve control point

    index
    :   Index of this point

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

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

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

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: # Introduction

Drivers are a way to control values of properties by means of a function,
or a mathematical expression.

Effectively, drivers consist of:

- A **driver configuration** that specifies zero, one, or more input values using
  other properties or object transformation channels, and combines them using
  a predefined mathematical function or a custom Python expression.
- An **animation** [F-Curve](../../editors/graph_editor/fcurves/introduction.xhtml)
  that maps the output of the driver configuration to the final value to apply
  to the driven property.

As an example, the rotation of Object 1 can be controlled by the scale of Object 2.
It is then said that the scale of Object 2 *drives* the rotation of Object 1.

Not only can drivers directly set the value of a property to the value of a different one,
they can also combine multiple values using a fixed function or a Python expression
and further modulate it with a manually defined curve and/or a modifier stack.

Drivers are an extremely powerful tool for building rigs and are typically used
to drive bone transforms and the influence of shape keys, action constraints and
modifiers, often using custom properties as inputs.
user: Show practical ways to work with F in a Blender add-on or script – include code.

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

assistant: # PointCacheItem(bpy_struct)

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

*class* bpy.types.PointCacheItem(*bpy_struct*)
:   Point cache for physics simulations

    filepath
    :   Cache file path

        Type:
        :   string, default “”, (never None, blend relative `//` prefix supported)

    frame_end
    :   Frame on which the simulation stops

        Type:
        :   int in [1, 1048574], default 0

    frame_start
    :   Frame on which the simulation starts

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

    frame_step
    :   Number of frames between cached frames

        Type:
        :   int in [1, 20], default 0

    index
    :   Index number of cache files

        Type:
        :   int in [-1, 100], default 0

    info
    :   Info on current cache status

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

    is_baked
    :   The cache is baked

        Type:
        :   boolean, default False, (readonly)

    is_baking
    :   The cache is being baked

        Type:
        :   boolean, default False, (readonly)

    is_frame_skip
    :   Some frames were skipped while baking/saving that cache

        Type:
        :   boolean, default False, (readonly)

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

    name
    :   Cache name

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

    use_disk_cache
    :   Save cache files to disk (.blend file must be saved first)

        Type:
        :   boolean, default False

    use_external
    :   Read cache from an external location

        Type:
        :   boolean, default False

    use_library_path
    :   Use this file’s path for the disk cache when library linked into another file (for local bakes per scene file, disable this option)

        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 Translate the User Manual in a Blender add-on or script – include code.

assistant: # Translate the User Manual

Help bring Blender to the world! 🌍 Join the translation effort to make the Blender Manual accessible in more
languages. Whether you’re fluent in another language or just starting, every contribution makes a difference. Let’s
build a global community!