PGCRYPT/OpenBlender_Train huggingface dataset:
user: Give a detailed overview of Point Info: syntax, arguments, return values, common patterns.

assistant: # Point Info

Cycles Only

[image reference removed]

The *Point Info* node can be used in the material node tree for point cloud objects
and gives access to the data of individual points.
It can be useful to give some variation to a single material assigned a point cloud object.
user: Explain ThemeCommonCurves(bpy_struct) in complete detail according to the official Blender documentation.

assistant: # ThemeCommonCurves(bpy_struct)

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

*class* bpy.types.ThemeCommonCurves(*bpy_struct*)
:   Shared curve theme properties

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

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

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

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

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

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

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

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

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

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

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

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

    handle_vertex_size
    :   Type:
        :   int in [1, 100], default 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: Provide the full official documentation entry for NormalEditModifier(Modifier), preserving all code examples.

assistant: # NormalEditModifier(Modifier)

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

*class* bpy.types.NormalEditModifier(*Modifier*)
:   Modifier affecting/generating custom normals

    invert_vertex_group
    :   Invert vertex group influence

        Type:
        :   boolean, default False

    mix_factor
    :   How much of generated normals to mix with existing ones

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

    mix_limit
    :   Maximum angle between old and new normals

        Type:
        :   float in [0, 3.14159], default 3.14159

    mix_mode
    :   How to mix generated normals with existing ones

        - `COPY`
          Copy – Copy new normals (overwrite existing).
        - `ADD`
          Add – Copy sum of new and old normals.
        - `SUB`
          Subtract – Copy new normals minus old normals.
        - `MUL`
          Multiply – Copy product of old and new normals (not cross product).

        Type:
        :   enum in [`'COPY'`, `'ADD'`, `'SUB'`, `'MUL'`], default `'COPY'`

    mode
    :   How to affect (generate) normals

        - `RADIAL`
          Radial – From an ellipsoid (shape defined by the boundbox’s dimensions, target is optional).
        - `DIRECTIONAL`
          Directional – Normals ‘track’ (point to) the target object.

        Type:
        :   enum in [`'RADIAL'`, `'DIRECTIONAL'`], default `'RADIAL'`

    no_polynors_fix
    :   Do not flip polygons when their normals are not consistent with their newly computed custom vertex normals

        Type:
        :   boolean, default False

    offset
    :   Offset from object’s center

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

    target
    :   Target object used to affect normals

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

    use_direction_parallel
    :   Use same direction for all normals, from origin to target’s center (Directional mode only)

        Type:
        :   boolean, default True

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

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

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: |  |  |
| --- | --- |
| - [`MovieTracking.objects`](bpy.types.MovieTracking.html#bpy.types.MovieTracking.objects "bpy.types.MovieTracking.objects") - [`MovieTrackingObjects.active`](bpy.types.MovieTrackingObjects.html#bpy.types.MovieTrackingObjects.active "bpy.types.MovieTrackingObjects.active") | - [`MovieTrackingObjects.new`](bpy.types.MovieTrackingObjects.html#bpy.types.MovieTrackingObjects.new "bpy.types.MovieTrackingObjects.new") - [`MovieTrackingObjects.remove`](bpy.types.MovieTrackingObjects.html#bpy.types.MovieTrackingObjects.remove "bpy.types.MovieTrackingObjects.remove") |
user: Show practical ways to work with Sidebar in a Blender add-on or script – include code.

assistant: ### Options

The Options panel in the Sidebar region contains the same [settings](../render/materials/settings.xhtml)
that are also available in the Material tab in the Properties.
They differ depending on the selected render engine.
The settings are duplicated to make it possible to edit the entire material from the Shader editor.
user: Show practical ways to work with Status Bar in a Blender add-on or script – include code.

assistant: # Status Bar

The Status Bar is located at the bottom of the Blender window and displays contextual information such as
keyboard shortcuts, messages, and statistical information.
The Status Bar can be hidden by disabling *Show Status Bar* in Window menu or by dragging from the top edge down.

[image reference removed]

Status Bar.
user: Show practical ways to work with Clear in a Blender add-on or script – include code.

assistant: # Clear

Clearing transforms resets the transform values.
The objects location and rotation values are set to 0, and the scale to 1.

Clear Location `Alt`-`G`
:   Clear (reset) the location of the selection.
    This will move the selection back to the coordinates (0, 0, 0).

Clear Scale `Alt`-`S`
:   Clear (reset) the scale of the selection.
    This will change the scale to (1, 1, 1).

Clear Rotation `Alt`-`R`
:   Clear (reset) the rotation of the selection.
    This will set the rotation of the selection to 0 degrees in each plane.

Clear Origin
:   Clears (resets) the offset of the child objects origin from
    the [Parent](parent.html).
    This will cause child objects to move to the origin of the parent.
    The relationship between the parent and child is not affected,
    you can confirm the relationship is still intact by using the *Outliner* to
    verify that the child object is still parented.
user: Show practical ways to work with Volume to Mesh Modifier in a Blender add-on or script – include code.

assistant: # Volume to Mesh Modifier

This modifier is the inverse of the *Mesh to Volume* modifier.
It takes an existing volume object and converts one of its grids to a mesh.
Only scalar grids (such as the density grid) can be converted.
user: Provide the full official documentation entry for Point Constraint, preserving all code examples.

assistant: # Point Constraint

The objects are linked by a point bearing allowing any kind of rotation around the location of the constraint object,
but no relative translation is permitted. The physics engine will do its best to make sure that the two points
designated by the constraint object on the two constrained objects are coincident.

[image reference removed]

*Point* constraint options.
user: Show practical ways to work with Outputs in a Blender add-on or script – include code.

assistant: Value
:   The resulting numerical value after conversion.

Length
:   The number of characters successfully parsed as part of the number.
    This indicates where the numeric portion of the string ends, allowing further substring operations.
user: Explain Outputs in complete detail according to the official Blender documentation.

assistant: Fresnel
:   Dielectric Fresnel weight, useful for example for layering diffuse and
    glossy shaders to create a plastic material. This is like the Fresnel node,
    except that the input of this node is in the often more convenient 0.0 to 1.0 range.

Facing
:   Weight that blends from the first to the second shader
    as the surface goes from facing the viewer to viewing it at a grazing angle.
user: Explain Dt Method Loop Items in complete detail according to the official Blender documentation.

assistant: # Dt Method Loop Items

TOPOLOGY:
:   Topology.

    Copy from identical topology meshes.

NEAREST_NORMAL:
:   Nearest Corner and Best Matching Normal.

    Copy from nearest corner which has the best matching normal.

NEAREST_POLYNOR:
:   Nearest Corner and Best Matching Face Normal.

    Copy from nearest corner which has the face with the best matching normal to destination corner’s face one.

NEAREST_POLY:
:   Nearest Corner of Nearest Face.

    Copy from nearest corner of nearest face.

POLYINTERP_NEAREST:
:   Nearest Face Interpolated.

    Copy from interpolated corners of the nearest source face.

POLYINTERP_LNORPROJ:
:   Projected Face Interpolated.

    Copy from interpolated corners of the source face hit by corner normal projection.
user: Explain Inputs in complete detail according to the official Blender documentation.

assistant: Geometry
:   The input geometry containing the hair curves to deform into curls.

Factor
:   Controls the overall strength of the curling effect.
    A value of 0.0 disables the effect, while 1.0 applies the full curl deformation.

Subdivision
:   The number of subdivisions applied to curves before deformation.
    Higher values produce smoother curls but increase processing time.

Curl Start
:   Defines the percentage along each curve (from root to tip) at which the curl effect begins.
    This allows keeping part of the strand straight before the curl starts.

Radius
:   The overall radius of the curls.
    Larger values produce looser curls, while smaller values create tighter spirals.

Factor Start
:   Multiplies the curl radius near the start of the curl region, allowing tapering or
    gradual buildup of curl tightness.

Factor End
:   Multiplies the curl radius near the end of the curve, controlling how curls taper off
    or unwind toward the tip.

Frequency
:   Controls how many full rotations occur along the length of the curve.
    Higher values produce more frequent curls.
    This input can vary per point along the curve, allowing complex wave patterns.

Random Offset
:   Adds random variation to the curl phase or starting angle per curve, creating a
    more natural, less uniform look.

Seed
:   Sets the random seed used for generating the random offsets.
    Changing this value produces different curl variations while maintaining the same parameters.

### Guide Map

Guide Index
:   A map that specifies which curve should act as the guide or central reference
    for each group of curled curves.
    If provided, this overrides any existing `guide_curve_index` attribute,
    and the *Guide Distance* and *Guide Mask* inputs are ignored.

Guide Distance
:   The minimum spacing between selected guides when generating a new guide map.
    Larger values result in fewer guide curves and broader curl groups.

Guide Mask
:   A mask that determines which curves are eligible to be used as guides.

Existing Guide Map
:   When enabled, uses the existing guide map attribute if one is already present.
    If disabled and *Guide Index* is not provided, a new
    [guide map](create_guide_index_map.xhtml)
    is created using *Guide Distance* and *Guide Mask*.
    Creating the guide map separately allows for more control and consistency
    across multiple grooming operations.
user: Show practical ways to work with FloorConstraint(Constraint) in a Blender add-on or script – include code.

assistant: # FloorConstraint(Constraint)

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

*class* bpy.types.FloorConstraint(*Constraint*)
:   Use the target object for location limitation

    floor_location
    :   Location of target that object will not pass through

        Type:
        :   enum in [`'FLOOR_X'`, `'FLOOR_Y'`, `'FLOOR_Z'`, `'FLOOR_NEGATIVE_X'`, `'FLOOR_NEGATIVE_Y'`, `'FLOOR_NEGATIVE_Z'`], default `'FLOOR_X'`

    offset
    :   Offset of floor from object origin

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

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

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

    target
    :   Target object

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

    use_rotation
    :   Use the target’s rotation to determine floor

        Type:
        :   boolean, default False

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: |  |  |
| --- | --- |
| - [`SpaceDopeSheetEditor.dopesheet`](bpy.types.SpaceDopeSheetEditor.html#bpy.types.SpaceDopeSheetEditor.dopesheet "bpy.types.SpaceDopeSheetEditor.dopesheet") - [`SpaceGraphEditor.dopesheet`](bpy.types.SpaceGraphEditor.html#bpy.types.SpaceGraphEditor.dopesheet "bpy.types.SpaceGraphEditor.dopesheet") | - [`SpaceNLA.dopesheet`](bpy.types.SpaceNLA.html#bpy.types.SpaceNLA.dopesheet "bpy.types.SpaceNLA.dopesheet") |
user: Provide the full official documentation entry for Inherited Properties, preserving all code examples.

assistant: |  |  |
| --- | --- |
| - [`bpy_struct.id_data`](bpy.types.bpy_struct.html#bpy.types.bpy_struct.id_data "bpy.types.bpy_struct.id_data") - [`Strip.name`](bpy.types.Strip.html#bpy.types.Strip.name "bpy.types.Strip.name") - [`Strip.type`](bpy.types.Strip.html#bpy.types.Strip.type "bpy.types.Strip.type") - [`Strip.select`](bpy.types.Strip.html#bpy.types.Strip.select "bpy.types.Strip.select") - [`Strip.select_left_handle`](bpy.types.Strip.html#bpy.types.Strip.select_left_handle "bpy.types.Strip.select_left_handle") - [`Strip.select_right_handle`](bpy.types.Strip.html#bpy.types.Strip.select_right_handle "bpy.types.Strip.select_right_handle") - [`Strip.mute`](bpy.types.Strip.html#bpy.types.Strip.mute "bpy.types.Strip.mute") - [`Strip.lock`](bpy.types.Strip.html#bpy.types.Strip.lock "bpy.types.Strip.lock") - [`Strip.frame_final_duration`](bpy.types.Strip.html#bpy.types.Strip.frame_final_duration "bpy.types.Strip.frame_final_duration") - [`Strip.frame_duration`](bpy.types.Strip.html#bpy.types.Strip.frame_duration "bpy.types.Strip.frame_duration") - [`Strip.frame_start`](bpy.types.Strip.html#bpy.types.Strip.frame_start "bpy.types.Strip.frame_start") - [`Strip.frame_final_start`](bpy.types.Strip.html#bpy.types.Strip.frame_final_start "bpy.types.Strip.frame_final_start") | - [`Strip.frame_final_end`](bpy.types.Strip.html#bpy.types.Strip.frame_final_end "bpy.types.Strip.frame_final_end") - [`Strip.frame_offset_start`](bpy.types.Strip.html#bpy.types.Strip.frame_offset_start "bpy.types.Strip.frame_offset_start") - [`Strip.frame_offset_end`](bpy.types.Strip.html#bpy.types.Strip.frame_offset_end "bpy.types.Strip.frame_offset_end") - [`Strip.channel`](bpy.types.Strip.html#bpy.types.Strip.channel "bpy.types.Strip.channel") - [`Strip.use_linear_modifiers`](bpy.types.Strip.html#bpy.types.Strip.use_linear_modifiers "bpy.types.Strip.use_linear_modifiers") - [`Strip.blend_type`](bpy.types.Strip.html#bpy.types.Strip.blend_type "bpy.types.Strip.blend_type") - [`Strip.blend_alpha`](bpy.types.Strip.html#bpy.types.Strip.blend_alpha "bpy.types.Strip.blend_alpha") - [`Strip.effect_fader`](bpy.types.Strip.html#bpy.types.Strip.effect_fader "bpy.types.Strip.effect_fader") - [`Strip.use_default_fade`](bpy.types.Strip.html#bpy.types.Strip.use_default_fade "bpy.types.Strip.use_default_fade") - [`Strip.color_tag`](bpy.types.Strip.html#bpy.types.Strip.color_tag "bpy.types.Strip.color_tag") - [`Strip.modifiers`](bpy.types.Strip.html#bpy.types.Strip.modifiers "bpy.types.Strip.modifiers") - [`Strip.show_retiming_keys`](bpy.types.Strip.html#bpy.types.Strip.show_retiming_keys "bpy.types.Strip.show_retiming_keys") |
user: Give a detailed overview of POINTCLOUD_UL_attributes(UIList): syntax, arguments, return values, common patterns.

assistant: # POINTCLOUD_UL_attributes(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.POINTCLOUD_UL_attributes(*UIList*)
:   draw_item(*_context*, *layout*, *_data*, *attribute*, *_icon*, *_active_data*, *_active_propname*, *_index*)

    filter_items(*_context*, *data*, *property*)

    *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 Script Operators and how is it used in Blender Python scripting?

assistant: # Script Operators

bpy.ops.script.execute_preset(*\**, *filepath=''*, *menu_idname=''*)
:   Load a preset

    Parameters:
    :   - **filepath** (*string**,* *(**optional**,* *never None**)*) – filepath
        - **menu_idname** (*string**,* *(**optional**,* *never None**)*) – Menu ID Name, ID name of the menu this was called from

    File:
    :   [startup/bl_operators/presets.py:285](https://projects.blender.org/blender/blender/src/branch/main/scripts/startup/bl_operators/presets.py#L285)

bpy.ops.script.python_file_run(*\**, *filepath=''*)
:   Run Python file

    Parameters:
    :   **filepath** (*string**,* *(**optional**,* *never None**)*) – Path

bpy.ops.script.reload()
:   Reload scripts
user: Describe Walk Navigation from the Blender manual or Python API, including usage steps and snippets.

assistant: This navigation method behaves like a typical first person game.
It works with a combination of keyboard keys and mouse movement.

### Usage

Move the mouse in the direction you want to look and use the keys
listed below to walk around the scene.

When you are happy with the new view, press `LMB` to confirm.
In case you want to go back to where you started, press `Esc` or `RMB`.

All these keys are also listed in the Status Bar while navigating.
Settings like mouse sensitivity and default speed can be adjusted in the
[Preferences](../../preferences/navigation.xhtml).

|  |  |
| --- | --- |
| `W`/`Up` | Move forward. |
| `S`/`Down` | Move backward. |
| `A`/`Left` | Strafe left. |
| `D`/`Right` | Strafe right. |
| `E` | Move up (global) – only available if *Gravity* is off. |
| `Q` | Move down (global) – only available if *Gravity* is off. |
| `R` | Move up (local) – only available if *Gravity* is off. |
| `F` | Move down (local) – only available if *Gravity* is off. |
| `Spacebar` | Teleport to the location at the crosshair (offset by the *Camera Height* value set in the Preferences). |
| `WheelUp`/`NumpadPlus` | Increase the movement speed. |
| `WheelDown`/`NumpadMinus` | Decrease the movement speed. |
| `Shift` | Speed up the movement temporarily. |
| `Alt` | Slow down the movement temporarily. |
| `V` | Jump – only available if *Gravity* is on. |
| `Tab` | Toggle *Gravity*. |
| `Z` | Correct the Z axis of the view (smoothly roll it to ensure it’s upright, not tilted to a side). |
| `Period` | Increases the jump height. |
| `Comma` | Decreases the jump height. |
user: Show practical ways to work with Snap in a Blender add-on or script – include code.

assistant: Snapping in the UV Editor is similar to
[Snapping in 3D](../../../editors/3dview/controls/snapping.html).
For the snap to pixel options to work an image has to be loaded.

Selected to Pixels
:   Moves selection to nearest pixel. See also *Round to Pixels* below.

Selected to Cursor
:   Moves selection to 2D cursor location.

Selected to Cursor (Offset)
:   Moves selection center to 2D cursor location, while preserving the offset of the vertices from the center.

Selected to Adjacent Unselected
:   Moves selection to adjacent unselected element.

Cursor to Pixels
:   Snaps the cursor to the nearest pixels.

Cursor to Selected
:   Moves the Cursor to the center of the selection.

Cursor to Origin
:   Places the cursor to the location (0, 0, 0).
user: How do I use Render in Blender? Include parameters, examples, warnings and best practices.

assistant: SMAA Threshold
:   Threshold for the edge detection algorithm used to correct aliasing for the final render,
    Higher values may result in loss of detail due to excessive blurring.

SSAA Samples
:   Number of samples used for super-sampling anti-aliasing in the final render.
    Higher values produce smoother lines but increase render time.

Motion Blur Steps
:   Controls accuracy of [motion blur](../../glossary/index.html#term-Motion-Blur), more steps result in longer render time.
    Only used when [Motion Blur](../cycles/render_settings/motion_blur.html#bpy-types-rendersettings-use-motion-blur) is enabled.
    Set to 0 to disable motion blur for Grease Pencil objects.
user: How do I use Introduction in Blender? Include parameters, examples, warnings and best practices.

assistant: # Introduction

The Sequencer view is where most of the video editing happens.
It shows a stack of [channels](channels.html),
in which you can create [strips](../../../video_editing/edit/montage/strips/introduction.html).
user: Provide the full official documentation entry for References, preserving all code examples.

assistant: |  |  |
| --- | --- |
| - [`bpy.context.light`](bpy.context.html#bpy.context.light "bpy.context.light") - [`BlendData.lights`](bpy.types.BlendData.html#bpy.types.BlendData.lights "bpy.types.BlendData.lights") | - [`BlendDataLights.new`](bpy.types.BlendDataLights.html#bpy.types.BlendDataLights.new "bpy.types.BlendDataLights.new") - [`BlendDataLights.remove`](bpy.types.BlendDataLights.html#bpy.types.BlendDataLights.remove "bpy.types.BlendDataLights.remove") |
user: Explain LineStyleGeometryModifier_SpatialNoise(LineStyleGeometryModifier) in complete detail according to the official Blender documentation.

assistant: # LineStyleGeometryModifier_SpatialNoise(LineStyleGeometryModifier)

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

*class* bpy.types.LineStyleGeometryModifier_SpatialNoise(*LineStyleGeometryModifier*)
:   Add spatial noise to stroke backbone geometry

    amplitude
    :   Amplitude of the spatial noise

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

    expanded
    :   True if the modifier tab is expanded

        Type:
        :   boolean, default False

    octaves
    :   Number of octaves (i.e., the amount of detail of the spatial noise)

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

    scale
    :   Scale of the spatial noise

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

    smooth
    :   If true, the spatial noise is smooth

        Type:
        :   boolean, default False

    type
    :   Type of the modifier

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

    use
    :   Enable or disable this modifier during stroke rendering

        Type:
        :   boolean, default False

    use_pure_random
    :   If true, the spatial noise does not show any coherence

        Type:
        :   boolean, default False

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

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

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

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

        Returns:
        :   The class or default when not found.

        Return type:
        :   [type](#bpy.types.LineStyleGeometryModifier_SpatialNoise.type "bpy.types.LineStyleGeometryModifier_SpatialNoise.type")
user: What is Simple Mode and how is it used in Blender Python scripting?

assistant: Blender has two “modes” a simple and an advanced one. Simple mode only accepts simple numbers.

Decimals `Period`
:   Decimals can be entered by pressing `Period`.

Negate `Minus`
:   Negate the whole value by pressing `Minus`.

Inverse `Slash`
:   Hitting `Slash` during number entry switches the number being entered to
    its reciprocal, e.g. `2 /` results in 0.5 (1/2); `20 /` results in 0.05 (1/20).

Reset `Backspace`
:   Hitting `Backspace` after having deleted all leading chars
    will first reset the edited value to initial state, and on second press,
    the whole number editing will be canceled, going back to usual transform with mouse.

Next/Previous Component `Tab`, `Ctrl`-`Tab`
:   To enter numeric values for multiple axes, use `Tab` or `Ctrl`-`Tab`.
    E.g. To move an object, one unit on all three axes press: `G` `1`
    and `Tab` `1` and `Tab` `1`.

Non-number Inputs
:   You can also combine numeric input with
    [Axis Locking](axis_locking.xhtml)
    to limit movement to a particular axis or tool specific shortcuts.
user: What is Options and how is it used in Blender Python scripting?

assistant: After the tool is run, these options are available in the [Adjust Last Operation](../../../interface/undo_redo.html#bpy-ops-screen-redo-last) panel.

Error
:   Error distance in object units. This can be seen similar to a subdivision rate for the curve.
    Lower values give a result that is closer to the drawing stroke while higher values give more smoothed results.

Fit Method
:   Refit:
    :   Incrementally refits the curve (gives best results).

    Split:
    :   Splits the curve until the tolerance is met (gives a better drawing performance).

Corner Angle
:   Any angles above this are considered corners.

Cyclic
:   Toggles whether or not the curve is [Cyclic](../../../glossary/index.html#term-Cyclic).
user: Describe Intended Audience from the Blender manual or Python API, including usage steps and snippets.

assistant: This tutorial is designed to help technical artists or developers learn to extend Blender.
An understanding of the basics of Python is expected for those working through this tutorial.

### Prerequisites

Before going through the tutorial you should…

- Be familiar with the basics of working in Blender.
- Know how to run a script in Blender’s Text editor.
- Have an understanding of Python primitive types (integer, Boolean, string, list, tuple, dictionary, and set).
- Be familiar with the concept of Python modules.
- Have a basic understanding of classes (object orientation) in Python.

Suggested reading before starting this tutorial.

- [Dive Into Python](https://finderiko.com/python-book) sections (1, 2, 3, 4, and 7).
- [Blender API Quickstart](https://docs.blender.org/api/current/info_quickstart.html)
  to help become familiar with Blender/Python basics.

To best troubleshoot any error message Python prints while writing scripts, you run Blender from a terminal.
See [Use The Terminal](https://docs.blender.org/api/current/info_tips_and_tricks.html#use-the-terminal).
user: Show practical ways to work with Inputs in a Blender add-on or script – include code.

assistant: Vector
:   The coordinates at which Gabor noise will be evaluated. The Z component is ignored in the 2D
    case. Defaults to *Generated* texture coordinates if the socket is left unconnected.

Scale
:   Scale of the Gabor noise.

Frequency
:   The rate at which the Gabor noise changes across space. This is different from the Scale input
    in that it only scales perpendicular to the Gabor noise direction.

Anisotropy
:   The directionality of Gabor noise. 1 means the noise is completely directional, while 0 means
    the noise is omnidirectional.

Orientation
:   The direction of anisotropic Gabor noise. This is an angle for the 2D case, while it is a unit
    direction vector for the 3D case.
user: What is Extending Blender and how is it used in Blender Python scripting?

assistant: ### Add-ons

Add-ons are scripts that enable Blender to gain extra functionality;
they can be enabled from the [Preferences](../../editors/preferences/extensions.html).

Outside of the Blender executable, there are hundreds of add-ons written by many people:

- Officially supported add-ons are bundled with Blender.
- Other add-ons are provided by [Blender Extensions](https://extensions.blender.org/)
  which aren’t part of official releases.
  Many of them work reliably and are very useful but are not yet ensured to be stable for release.

### Scripts

Apart from add-ons, there are several other types of scripts that extend Blender’s functionality:

Modules:
:   Utility libraries for import into other scripts.

Presets:
:   Settings for Blender’s tools and key configurations.

Startup:
:   These files are imported when starting Blender.
    They define most of Blender’s UI, as well as some additional core operators.

Custom Scripts:
:   In contrast to add-ons, they are typically intended for one-time execution via
    the [Text Editor](../../editors/text_editor.html).

### Saving your own Scripts

#### File Location

All scripts are loaded from the `scripts` folder of
the [local, system and user paths](../blender_directory_layout.html#blender-directory-layout).

You can setup an additional search path for scripts in
[File Paths](../../editors/preferences/file_paths.html#prefs-file-paths) Preferences ‣ File Paths.

#### Installation

Add-ons are conveniently installed through Blender in the [Preferences](../../editors/preferences/extensions.html).
Click the Install… button and select the `.zip` file.
user: Explain In Object Mode in complete detail according to the official Blender documentation.

assistant: In Object Mode, the Median Point is the averaged-out position of the
[origins](../../../../scene_layout/object/origin.xhtml) of the selected objects.
The shape and size of the objects is not taken into account.

Origins can be chosen freely and can even lie outside their object’s
geometry, so that the Median Point is not always what you might expect.

[image reference removed]

Median points in Object Mode.
user: Provide the full official documentation entry for Viewport Display, preserving all code examples.

assistant: These settings control the 3D Viewport display in solid shading.
They provide a faster alternative to full shader nodes,
which may be too heavy or distracting for tasks like modeling, layout or sculpting.

Color
:   Diffuse or metal surface color.

Metallic
:   Blends between a non-metallic and metallic material model.
    A value of 1.0 gives a fully specular reflection tinted with the base color,
    without diffuse reflection or transmission.
    At 0.0 the material consists of a diffuse or transmissive base layer, with a specular reflection layer on top.

Roughness
:   Specifies microfacet roughness of the surface for metal and specular reflection.
user: Describe GizmoProperties(bpy_struct) from the Blender manual or Python API, including usage steps and snippets.

assistant: # GizmoProperties(bpy_struct)

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

*class* bpy.types.GizmoProperties(*bpy_struct*)
:   Input properties of a Gizmo

    bl_system_properties_get(*\**, *do_create=False*)
    :   DEBUG ONLY. Internal access to runtime-defined RNA data storage, intended solely for testing and debugging purposes. Do not access it in regular scripting work, and in particular, do not assume that it contains writable data

        Parameters:
        :   **do_create** (*boolean**,* *(**optional**)*) – Ensure that system properties are created if they do not exist yet

        Returns:
        :   The system properties root container, or None if there are no system properties stored in this data yet, and its creation was not requested

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

    *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 WorldMistSettings(bpy_struct) and how is it used in Blender Python scripting?

assistant: # WorldMistSettings(bpy_struct)

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

*class* bpy.types.WorldMistSettings(*bpy_struct*)
:   Mist settings for a World data-block

    depth
    :   Distance over which the mist effect fades in

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

    falloff
    :   Type of transition used to fade mist

        - `QUADRATIC`
          Quadratic – Use quadratic progression.
        - `LINEAR`
          Linear – Use linear progression.
        - `INVERSE_QUADRATIC`
          Inverse Quadratic – Use inverse quadratic progression.

        Type:
        :   enum in [`'QUADRATIC'`, `'LINEAR'`, `'INVERSE_QUADRATIC'`], default `'QUADRATIC'`

    height
    :   Control how much mist density decreases with height

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

    intensity
    :   Overall minimum intensity of the mist effect

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

    start
    :   Starting distance of the mist, measured from the camera

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

    use_mist
    :   Occlude objects with the environment color as they are further away

        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 Working with Audio Tracks in a Blender add-on or script – include code.

assistant: A Sound strip is just like any other strip in the Video Sequencer. You can select and move it,
adjust its starting offset using `LMB` over the strip handles,
and `K` cut it into pieces.
A useful example is cutting out the “um’s” and dead voice time.

You can have as many Sound strips as you wish and the result will be the mixing of all of them.
You can give each strip its own name and volume via the Sidebar region.

Overlapping strips are automatically mixed down during the rendering process.
For example, you can have the announcer on channel 5, background music on channel 6,
and Foley sound effects on channel 7.
user: What is Editing Masks and how is it used in Blender Python scripting?

assistant: # Editing Masks

The tools and panels available to edit masks are the same in both editors.
Editing of mask splines happens in a way similar to editing Bézier curves or paths in GIMP or other curve editors.
user: What is Brush Types and how is it used in Blender Python scripting?

assistant: See [Brush Type](../brush/brush_settings.html#sculpt-tool-settings-brush-type).

Available brush types are listed here, together with brushes from the
*Essentials* asset library using them.

Draw
:   Brushes: Paint

    Paints a specified weight over the object.

    Blend
    :   The brush [Blend Modes](../../glossary/index.html#term-Blend-Modes) defines in which way the weight value is
        applied to the vertex group while painting.

        Mix
        :   In this Blending mode the Weight value defines the *target weight*
            that will eventually be reached when you paint long enough on the same
            location of the mesh. And the strength determines how many strokes
            you need to place at the target weight. Note that for strength = 1.0
            the target weight is painted immediately and for Weight = 0.0 the brush just does nothing.

        Add
        :   In this Blending mode the specified weight value is *added* to the vertex weights.
            The strength determines which fraction of the weight gets added per stroke.
            However, the brush will not paint weight values above 1.0.

        Subtract
        :   In this Blending mode the specified weight value is *subtracted* from the vertex weights.
            The strength determines which fraction of the weight gets removed per stroke.
            However, the brush will not paint weight values below 0.0.

        Lighten
        :   In this Blending mode the specified weight value is interpreted as the target weight.
            Very similar to the Mix Blending mode, but only weights below the target weight are affected.
            Weights above the target weight remain unchanged.

        Darken
        :   This Blending mode is very similar to the Lighten Blending mode.
            But only weights above the target weight are affected.
            Weights below the target weight remain unchanged.

        Multiply
        :   Multiplies the vertex weights with the specified weight value.
            This is somewhat like subtract, but the amount of removed weight is now
            dependent on the Weight value itself.

        Blur
        :   Smooths out the weighting of adjacent vertices. In this mode the Weight
            Value is ignored. The strength defines how much the smoothing is applied.

Blur
:   Brushes: Blur

    Smooths out the weighting of adjacent vertices. In this mode the Weight
    Value is ignored. The strength defines how much the smoothing is applied.

Average
:   Brushes: Average

    Smooths weights by painting the average resulting weight from all weights under the brush.

Smear
:   Brushes: Smear

    Smudges weights by grabbing the weights under the brush and “dragging” them.
    This can be imagined as a finger painting tool.
user: What is Selecting and how is it used in Blender Python scripting?

assistant: - Select single: `LMB`.
- Add to/remove from selection: `Shift`-`LMB`.
- All: `A`.
- None: `Alt`-`A`.
- Invert: `Ctrl`-`I`.
- Box select: `B`.
- Circle Select: `C`.
- Lasso Select: `Ctrl`-`Alt`-`LMB`.
- Select Linked: Move the mouse over a path and press `L` to add all its points to the selection.
- Unselect Linked: Move the mouse over a path and press `Shift`-`L` to remove all its points
  from the selection.
- Root/Tips: Select ‣ Roots / Tips.

### Select Random

Randomly selects particles.

Percent
:   Percent of particles to randomly select.

Random Seed
:   Seed value to use for the selection.

Action
:   Select random can be either used to select or deselect particles.

Type
:   Selects either hair or points. Here these terms can be confusing because
    hair/point does not refer to the particle type but the path/points of the hair/particle.

### Select Modes

[image reference removed]

Select Modes.

Path:
:   No keypoints are visible, you can select/deselect only all particles.

Point:
:   You see all of the keypoints.

Tip:
:   You can see and edit (including the brushes) only the tip of the particles, i.e. the last keypoint.
user: Show practical ways to work with GeometryNodeToolSetFaceSet(GeometryNode) in a Blender add-on or script – include code.

assistant: # GeometryNodeToolSetFaceSet(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.GeometryNodeToolSetFaceSet(*GeometryNode*)
:   Set sculpt face set values for faces

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

        Returns:
        :   Result

        Return type:
        :   boolean

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

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

        Returns:
        :   result

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

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

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

        Returns:
        :   result

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

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

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

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

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

        Returns:
        :   The class or default when not found.

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

assistant: The material system is built with physically-based rendering in mind,
separating how a material looks and which rendering algorithm is used to render it.
This makes it easier to achieve realistic results and balanced lighting,
though there are a few things to keep in mind.

In order for materials to work well with global illumination, they should be energy conserving.
That means they cannot reflect more light than comes in.
This property is not strictly enforced, but if colors are in the range 0.0 to 1.0, and
BSDFs are only mixed together with
the Mix Shader node, this will automatically be true.

It is however, possible to break this,
with color values higher than 1.0 or using the Add Shader node, but one must be careful when
doing this to keep materials behaving predictably under various lighting conditions.
user: Show practical ways to work with Inputs in a Blender add-on or script – include code.

assistant: Curve
:   Standard geometry input.

Selection
:   Whether to change the cyclic setting for each spline. *True* means the
    setting will be changed, *false* means it will stay the same.

Cyclic
:   Whether to connect the first and last control points of each spline.
user: Give a detailed overview of Flip Quad Tessellation: syntax, arguments, return values, common patterns.

assistant: Internally, all [quads](../../../../glossary/index.html#term-Quad) are [Tessellated](../../../../glossary/index.html#term-Tessellation) into 2 triangles,
this operator swaps which way the quad is split into triangles.

|  |  |
| --- | --- |
| ../../../../_images/modeling_meshes_editing_face_flip-tesselation_before.png | ../../../../_images/modeling_meshes_editing_face_flip-tesselation_after.png |
user: How do I use Inputs in Blender? Include parameters, examples, warnings and best practices.

assistant: Vector
:   Texture coordinate to sample texture at;
    defaults to Generated texture coordinates if the socket is left unconnected.

Color1, Color 2
:   Color of the checkers.

Scale
:   Overall texture scale. The scale is a factor of the bounding box of the face divided by the scale.
    For example, a scale of 15 will result in 15 alternate patterns over the overall UV bounding box.
    Different patterns could be achieved using other nodes to give different input patterns to this socket.
    For example, using the Math Node.