fake-bge-module 20250312__py3-none-any.whl → 20260203__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {animsys_refactor → _animsys_refactor}/__init__.pyi +7 -6
- {bl_console_utils → _bl_console_utils}/__init__.pyi +1 -0
- {bl_console_utils → _bl_console_utils}/autocomplete/__init__.pyi +1 -0
- {bl_console_utils → _bl_console_utils}/autocomplete/complete_calltip/__init__.pyi +1 -13
- {bl_console_utils → _bl_console_utils}/autocomplete/complete_import/__init__.pyi +1 -5
- {bl_console_utils → _bl_console_utils}/autocomplete/complete_namespace/__init__.pyi +3 -13
- {bl_console_utils → _bl_console_utils}/autocomplete/intellisense/__init__.pyi +1 -10
- {bl_i18n_utils → _bl_i18n_utils}/__init__.pyi +2 -0
- _bl_i18n_utils/bl_extract_messages/__init__.pyi +28 -0
- {bl_i18n_utils → _bl_i18n_utils}/merge_po/__init__.pyi +2 -1
- {bl_i18n_utils → _bl_i18n_utils}/settings/__init__.pyi +10 -7
- {bl_i18n_utils → _bl_i18n_utils}/utils/__init__.pyi +53 -50
- _bl_i18n_utils/utils_cli/__init__.pyi +11 -0
- _bl_i18n_utils/utils_languages_menu/__init__.pyi +6 -0
- {bl_i18n_utils → _bl_i18n_utils}/utils_rtl/__init__.pyi +3 -2
- _bl_i18n_utils/utils_spell_check/__init__.pyi +22 -0
- {bl_previews_utils → _bl_previews_utils}/__init__.pyi +1 -0
- _bl_previews_utils/bl_previews_render/__init__.pyi +14 -0
- {bl_rna_utils → _bl_rna_utils}/__init__.pyi +1 -0
- {bl_rna_utils → _bl_rna_utils}/data_path/__init__.pyi +3 -2
- {bl_text_utils → _bl_text_utils}/__init__.pyi +1 -0
- _bl_text_utils/external_editor/__init__.pyi +6 -0
- {bl_ui_utils → _bl_ui_utils}/__init__.pyi +1 -0
- {bl_ui_utils → _bl_ui_utils}/layout/__init__.pyi +2 -1
- _blendfile_header/__init__.pyi +48 -0
- _bpy_internal/__init__.pyi +5 -1
- _bpy_internal/addons/__init__.pyi +1 -0
- _bpy_internal/addons/cli/__init__.pyi +2 -1
- _bpy_internal/assets/__init__.pyi +5 -0
- _bpy_internal/assets/remote_library_listing/__init__.pyi +5 -0
- _bpy_internal/assets/remote_library_listing/blender_asset_library_openapi/__init__.pyi +13 -0
- _bpy_internal/disk_file_hash_service/__init__.pyi +19 -0
- _bpy_internal/disk_file_hash_service/backend_sqlite/__init__.pyi +48 -0
- _bpy_internal/disk_file_hash_service/hash_service/__init__.pyi +64 -0
- _bpy_internal/disk_file_hash_service/types/__init__.pyi +53 -0
- _bpy_internal/extensions/__init__.pyi +1 -0
- _bpy_internal/extensions/junction_module/__init__.pyi +8 -7
- _bpy_internal/extensions/stale_file_manager/__init__.pyi +9 -8
- _bpy_internal/extensions/wheel_manager/__init__.pyi +6 -5
- {bl_i18n_utils/utils_languages_menu → _bpy_internal/filesystem}/__init__.pyi +2 -2
- _bpy_internal/filesystem/locking/__init__.pyi +28 -0
- _bpy_internal/grease_pencil/__init__.pyi +1 -0
- _bpy_internal/grease_pencil/stroke/__init__.pyi +22 -6
- _bpy_internal/platform/__init__.pyi +5 -0
- _bpy_internal/platform/freedesktop/__init__.pyi +21 -0
- _bpy_internal/system_info/__init__.pyi +1 -0
- _bpy_internal/system_info/text_generate_runtime/__init__.pyi +2 -1
- _bpy_internal/system_info/url_prefill_runtime/__init__.pyi +2 -1
- _bpy_internal/system_info/url_prefill_startup/__init__.pyi +3 -2
- {bpy_restrict_state → _bpy_restrict_state}/__init__.pyi +1 -0
- _bpy_types/__init__.pyi +1635 -0
- {console_python → _console_python}/__init__.pyi +8 -7
- _console_shell/__init__.pyi +10 -0
- {graphviz_export → _graphviz_export}/__init__.pyi +3 -2
- _keyingsets_utils/__init__.pyi +21 -0
- {rna_info → _rna_info}/__init__.pyi +32 -27
- {rna_xml → _rna_xml}/__init__.pyi +7 -6
- addon_utils/__init__.pyi +13 -25
- aud/__init__.pyi +133 -155
- bge/__init__.pyi +1 -0
- bge/app/__init__.pyi +1 -0
- bge/constraints/__init__.pyi +22 -51
- bge/types/__init__.pyi +618 -1913
- bge_extras/__init__.pyi +1 -0
- bge_extras/logger/__init__.pyi +4 -3
- bgui/__init__.pyi +1 -0
- bgui/frame/__init__.pyi +1 -0
- bgui/frame_button/__init__.pyi +1 -0
- bgui/image/__init__.pyi +1 -1
- bgui/image_button/__init__.pyi +1 -0
- bgui/label/__init__.pyi +1 -0
- bgui/list_box/__init__.pyi +1 -1
- bgui/progress_bar/__init__.pyi +2 -1
- bgui/system/__init__.pyi +3 -5
- bgui/text_block/__init__.pyi +1 -0
- bgui/text_input/__init__.pyi +9 -8
- bgui/theme/__init__.pyi +4 -3
- bgui/widget/__init__.pyi +5 -4
- bl_app_override/__init__.pyi +4 -3
- bl_app_override/helpers/__init__.pyi +3 -2
- bl_app_template_utils/__init__.pyi +5 -4
- bl_app_templates_system/Game_Engine/__init__.pyi +5 -4
- bl_app_templates_system/Storyboarding/__init__.pyi +11 -0
- bl_app_templates_system/__init__.pyi +2 -0
- bl_keymap_utils/__init__.pyi +1 -0
- bl_keymap_utils/io/__init__.pyi +10 -9
- bl_keymap_utils/keymap_from_toolbar/__init__.pyi +2 -1
- bl_keymap_utils/keymap_hierarchy/__init__.pyi +2 -1
- bl_keymap_utils/platform_helpers/__init__.pyi +3 -2
- bl_keymap_utils/versioning/__init__.pyi +2 -1
- bl_math/__init__.pyi +4 -13
- bl_operators/__init__.pyi +4 -2
- bl_operators/add_mesh_torus/__init__.pyi +9 -9
- bl_operators/anim/__init__.pyi +90 -62
- bl_operators/assets/__init__.pyi +14 -18
- bl_operators/bmesh/__init__.pyi +1 -0
- bl_operators/bmesh/find_adjacent/__init__.pyi +12 -9
- bl_operators/bone_selection_sets/__init__.pyi +34 -60
- bl_operators/clip/__init__.pyi +39 -57
- bl_operators/connect_to_output/__init__.pyi +20 -18
- bl_operators/console/__init__.pyi +17 -25
- bl_operators/constraint/__init__.pyi +15 -21
- bl_operators/copy_global_transform/__init__.pyi +261 -0
- bl_operators/file/__init__.pyi +13 -17
- bl_operators/freestyle/__init__.pyi +15 -21
- bl_operators/geometry_nodes/__init__.pyi +30 -36
- bl_operators/grease_pencil/__init__.pyi +5 -5
- bl_operators/image/__init__.pyi +14 -22
- bl_operators/image_as_planes/__init__.pyi +36 -42
- bl_operators/mesh/__init__.pyi +8 -53
- bl_operators/node/__init__.pyi +375 -92
- bl_operators/node_editor/__init__.pyi +1 -0
- bl_operators/node_editor/node_functions/__init__.pyi +10 -9
- bl_operators/object/__init__.pyi +57 -98
- bl_operators/object_align/__init__.pyi +8 -8
- bl_operators/object_quick_effects/__init__.pyi +15 -21
- bl_operators/object_randomize_transform/__init__.pyi +6 -6
- bl_operators/presets/__init__.pyi +46 -94
- bl_operators/rigidbody/__init__.pyi +12 -16
- bl_operators/screen_play_rendered_anim/__init__.pyi +5 -5
- bl_operators/sequencer/__init__.pyi +40 -54
- bl_operators/spreadsheet/__init__.pyi +7 -7
- bl_operators/userpref/__init__.pyi +69 -117
- bl_operators/uvcalc_follow_active/__init__.pyi +8 -8
- bl_operators/uvcalc_lightmap/__init__.pyi +12 -12
- bl_operators/uvcalc_transform/__init__.pyi +39 -28
- bl_operators/vertexpaint_dirt/__init__.pyi +7 -7
- bl_operators/view3d/__init__.pyi +31 -43
- bl_operators/wm/__init__.pyi +139 -231
- bl_operators/world/__init__.pyi +6 -6
- bl_ui/__init__.pyi +18 -17
- bl_ui/anim/__init__.pyi +5 -5
- bl_ui/asset_shelf/__init__.pyi +5 -5
- bl_ui/generic_ui_list/__init__.pyi +12 -26
- bl_ui/node_add_menu/__init__.pyi +281 -12
- bl_ui/node_add_menu_compositor/__init__.pyi +135 -91
- bl_ui/node_add_menu_geometry/__init__.pyi +407 -263
- bl_ui/node_add_menu_shader/__init__.pyi +67 -67
- bl_ui/node_add_menu_texture/__init__.pyi +25 -69
- bl_ui/properties_animviz/__init__.pyi +3 -2
- bl_ui/properties_collection/__init__.pyi +20 -30
- bl_ui/properties_constraint/__init__.pyi +228 -450
- bl_ui/properties_data_armature/__init__.pyi +45 -79
- bl_ui/properties_data_bone/__init__.pyi +33 -51
- bl_ui/properties_data_camera/__init__.pyi +43 -75
- bl_ui/properties_data_curve/__init__.pyi +42 -101
- bl_ui/properties_data_curves/__init__.pyi +21 -35
- bl_ui/properties_data_empty/__init__.pyi +8 -10
- bl_ui/properties_data_grease_pencil/__init__.pyi +49 -87
- bl_ui/properties_data_lattice/__init__.pyi +12 -18
- bl_ui/properties_data_light/__init__.pyi +28 -46
- bl_ui/properties_data_lightprobe/__init__.pyi +35 -61
- bl_ui/properties_data_mesh/__init__.pyi +73 -120
- bl_ui/properties_data_metaball/__init__.pyi +16 -26
- bl_ui/properties_data_modifier/__init__.pyi +34 -39
- bl_ui/properties_data_pointcloud/__init__.pyi +17 -27
- bl_ui/properties_data_shaderfx/__init__.pyi +4 -4
- bl_ui/properties_data_speaker/__init__.pyi +15 -25
- bl_ui/properties_data_volume/__init__.pyi +22 -38
- bl_ui/properties_freestyle/__init__.pyi +79 -127
- bl_ui/properties_game/__init__.pyi +88 -84
- bl_ui/properties_grease_pencil_common/__init__.pyi +33 -190
- bl_ui/properties_mask_common/__init__.pyi +33 -45
- bl_ui/properties_material/__init__.pyi +52 -111
- bl_ui/properties_material_gpencil/__init__.pyi +48 -68
- bl_ui/properties_object/__init__.pyi +123 -93
- bl_ui/properties_output/__init__.pyi +103 -81
- bl_ui/properties_paint_common/__init__.pyi +78 -59
- bl_ui/properties_particle/__init__.pyi +160 -262
- bl_ui/properties_physics_cloth/__init__.pyi +36 -62
- bl_ui/properties_physics_common/__init__.pyi +11 -11
- bl_ui/properties_physics_dynamicpaint/__init__.pyi +81 -123
- bl_ui/properties_physics_field/__init__.pyi +35 -53
- bl_ui/properties_physics_fluid/__init__.pyi +106 -160
- bl_ui/properties_physics_geometry_nodes/__init__.pyi +6 -6
- bl_ui/properties_physics_rigidbody/__init__.pyi +28 -42
- bl_ui/properties_physics_rigidbody_constraint/__init__.pyi +44 -68
- bl_ui/properties_physics_softbody/__init__.pyi +38 -66
- bl_ui/properties_render/__init__.pyi +267 -259
- bl_ui/properties_scene/__init__.pyi +69 -72
- bl_ui/properties_strip/__init__.pyi +744 -0
- bl_ui/properties_strip_modifier/__init__.pyi +45 -0
- bl_ui/properties_texture/__init__.pyi +69 -122
- bl_ui/properties_view_layer/__init__.pyi +97 -51
- bl_ui/properties_workspace/__init__.pyi +12 -18
- bl_ui/properties_world/__init__.pyi +33 -53
- bl_ui/space_clip/__init__.pyi +231 -311
- bl_ui/space_console/__init__.pyi +14 -24
- bl_ui/space_dopesheet/__init__.pyi +193 -125
- bl_ui/space_filebrowser/__init__.pyi +107 -131
- bl_ui/space_graph/__init__.pyi +93 -80
- bl_ui/space_image/__init__.pyi +207 -291
- bl_ui/space_info/__init__.pyi +14 -24
- bl_ui/space_logic/__init__.pyi +14 -22
- bl_ui/space_nla/__init__.pyi +63 -69
- bl_ui/space_node/__init__.pyi +215 -154
- bl_ui/space_outliner/__init__.pyi +65 -61
- bl_ui/space_properties/__init__.pyi +41 -16
- bl_ui/space_sequencer/__init__.pyi +276 -979
- bl_ui/space_spreadsheet/__init__.pyi +27 -23
- bl_ui/space_statusbar/__init__.pyi +4 -4
- bl_ui/space_text/__init__.pyi +39 -73
- bl_ui/space_time/__init__.pyi +33 -78
- bl_ui/space_toolsystem_common/__init__.pyi +31 -28
- bl_ui/space_toolsystem_toolbar/__init__.pyi +67 -43
- bl_ui/space_topbar/__init__.pyi +68 -111
- bl_ui/space_userpref/__init__.pyi +310 -445
- bl_ui/space_view3d/__init__.pyi +667 -1122
- bl_ui/space_view3d_sidebar/__init__.pyi +127 -0
- bl_ui/space_view3d_toolbar/__init__.pyi +237 -966
- bl_ui/utils/__init__.pyi +4 -3
- blend_render_info/__init__.pyi +4 -2
- blf/__init__.pyi +92 -59
- bmesh/__init__.pyi +4 -10
- bmesh/geometry/__init__.pyi +2 -4
- bmesh/ops/__init__.pyi +442 -815
- bmesh/types/__init__.pyi +377 -720
- bmesh/utils/__init__.pyi +20 -45
- bpy/__init__.pyi +2 -1
- bpy/app/__init__.pyi +96 -90
- bpy/app/handlers/__init__.pyi +24 -19
- bpy/app/icons/__init__.pyi +2 -7
- bpy/app/timers/__init__.pyi +5 -18
- bpy/app/translations/__init__.pyi +21 -35
- bpy/msgbus/__init__.pyi +20 -9
- bpy/ops/__init__.pyi +21 -3
- bpy/ops/action/__init__.pyi +121 -226
- bpy/ops/anim/__init__.pyi +204 -358
- bpy/ops/armature/__init__.pyi +129 -249
- bpy/ops/asset/__init__.pyi +82 -111
- bpy/ops/bge_bricknodes/__init__.pyi +61 -0
- bpy/ops/boid/__init__.pyi +44 -50
- bpy/ops/bricknodes/__init__.pyi +37 -0
- bpy/ops/brush/__init__.pyi +33 -120
- bpy/ops/buttons/__init__.pyi +27 -83
- bpy/ops/cachefile/__init__.pyi +16 -74
- bpy/ops/camera/__init__.pyi +3 -13
- bpy/ops/clip/__init__.pyi +278 -558
- bpy/ops/cloth/__init__.pyi +2 -6
- bpy/ops/collection/__init__.pyi +34 -44
- bpy/ops/console/__init__.pyi +70 -111
- bpy/ops/constraint/__init__.pyi +34 -102
- bpy/ops/curve/__init__.pyi +163 -315
- bpy/ops/curves/__init__.pyi +163 -189
- bpy/ops/cycles/__init__.pyi +8 -18
- bpy/ops/dpaint/__init__.pyi +21 -30
- bpy/ops/ed/__init__.pyi +59 -103
- bpy/ops/export_anim/__init__.pyi +4 -11
- bpy/ops/export_scene/__init__.pyi +29 -174
- bpy/ops/extensions/__init__.pyi +102 -194
- bpy/ops/file/__init__.pyi +166 -272
- bpy/ops/fluid/__init__.pyi +78 -86
- bpy/ops/font/__init__.pyi +73 -164
- bpy/ops/geometry/__init__.pyi +33 -144
- bpy/ops/gizmogroup/__init__.pyi +8 -14
- bpy/ops/gpencil/__init__.pyi +31 -58
- bpy/ops/graph/__init__.pyi +176 -411
- bpy/ops/grease_pencil/__init__.pyi +416 -639
- bpy/ops/image/__init__.pyi +148 -492
- bpy/ops/import_anim/__init__.pyi +5 -18
- bpy/ops/import_curve/__init__.pyi +4 -6
- bpy/ops/import_scene/__init__.pyi +22 -49
- bpy/ops/info/__init__.pyi +27 -43
- bpy/ops/lattice/__init__.pyi +26 -43
- bpy/ops/logic/__init__.pyi +49 -122
- bpy/ops/logic_nodes/__init__.pyi +461 -0
- bpy/ops/marker/__init__.pyi +24 -60
- bpy/ops/mask/__init__.pyi +118 -222
- bpy/ops/material/__init__.pyi +19 -18
- bpy/ops/mball/__init__.pyi +13 -39
- bpy/ops/mesh/__init__.pyi +409 -1264
- bpy/ops/nla/__init__.pyi +140 -232
- bpy/ops/node/__init__.pyi +1189 -807
- bpy/ops/object/__init__.pyi +806 -1659
- bpy/ops/outliner/__init__.pyi +284 -432
- bpy/ops/paint/__init__.pyi +189 -381
- bpy/ops/paintcurve/__init__.pyi +29 -44
- bpy/ops/palette/__init__.pyi +23 -34
- bpy/ops/particle/__init__.pyi +135 -201
- bpy/ops/pointcloud/__init__.pyi +23 -42
- bpy/ops/pose/__init__.pyi +195 -310
- bpy/ops/poselib/__init__.pyi +45 -73
- bpy/ops/preferences/__init__.pyi +89 -221
- bpy/ops/ptcache/__init__.pyi +32 -39
- bpy/ops/render/__init__.pyi +36 -83
- bpy/ops/rigidbody/__init__.pyi +47 -78
- bpy/ops/scene/__init__.pyi +169 -222
- bpy/ops/screen/__init__.pyi +146 -259
- bpy/ops/script/__init__.pyi +9 -15
- bpy/ops/sculpt/__init__.pyi +194 -354
- bpy/ops/sculpt_curves/__init__.pyi +21 -29
- bpy/ops/sequencer/__init__.pyi +586 -836
- bpy/ops/sound/__init__.pyi +25 -131
- bpy/ops/spreadsheet/__init__.pyi +34 -21
- bpy/ops/surface/__init__.pyi +7 -54
- bpy/ops/text/__init__.pyi +166 -281
- bpy/ops/text_editor/__init__.pyi +2 -6
- bpy/ops/texture/__init__.pyi +20 -22
- bpy/ops/transform/__init__.pyi +108 -445
- bpy/ops/ui/__init__.pyi +157 -219
- bpy/ops/uilist/__init__.pyi +4 -16
- bpy/ops/uv/__init__.pyi +291 -347
- bpy/ops/view2d/__init__.pyi +29 -88
- bpy/ops/view3d/__init__.pyi +238 -438
- bpy/ops/wm/__init__.pyi +651 -1510
- bpy/ops/workspace/__init__.pyi +42 -44
- bpy/ops/world/__init__.pyi +12 -13
- bpy/path/__init__.pyi +6 -37
- bpy/props/__init__.pyi +395 -259
- bpy/{_typing → stub_internal}/__init__.pyi +1 -0
- bpy/{_typing → stub_internal}/rna_enums/__init__.pyi +214 -114
- bpy/types/__init__.pyi +93286 -103826
- bpy/utils/__init__.pyi +46 -104
- bpy/utils/previews/__init__.pyi +7 -15
- bpy/utils/units/__init__.pyi +6 -15
- bpy_extras/__init__.pyi +1 -0
- bpy_extras/anim_utils/__init__.pyi +32 -23
- bpy_extras/asset_utils/__init__.pyi +1 -0
- bpy_extras/bmesh_utils/__init__.pyi +2 -2
- bpy_extras/id_map_utils/__init__.pyi +15 -6
- bpy_extras/image_utils/__init__.pyi +3 -11
- bpy_extras/io_utils/__init__.pyi +22 -38
- bpy_extras/keyconfig_utils/__init__.pyi +5 -4
- bpy_extras/mesh_utils/__init__.pyi +3 -14
- bpy_extras/node_shader_utils/__init__.pyi +63 -70
- bpy_extras/node_utils/__init__.pyi +4 -3
- bpy_extras/object_utils/__init__.pyi +6 -19
- bpy_extras/view3d_utils/__init__.pyi +1 -18
- bpy_extras/wm_utils/__init__.pyi +1 -0
- bpy_extras/wm_utils/progress_report/__init__.pyi +12 -11
- {fake_bge_module-20250312.dist-info → fake_bge_module-20260203.dist-info}/METADATA +9 -3
- fake_bge_module-20260203.dist-info/RECORD +414 -0
- {fake_bge_module-20250312.dist-info → fake_bge_module-20260203.dist-info}/WHEEL +1 -1
- {fake_bge_module-20250312.dist-info → fake_bge_module-20260203.dist-info}/top_level.txt +16 -16
- freestyle/__init__.pyi +1 -0
- freestyle/chainingiterators/__init__.pyi +41 -60
- freestyle/functions/__init__.pyi +56 -194
- freestyle/predicates/__init__.pyi +11 -61
- freestyle/shaders/__init__.pyi +95 -156
- freestyle/types/__init__.pyi +306 -941
- freestyle/utils/ContextFunctions/__init__.pyi +4 -24
- freestyle/utils/__init__.pyi +46 -36
- gpu/__init__.pyi +84 -5
- gpu/capabilities/__init__.pyi +1 -21
- gpu/matrix/__init__.pyi +16 -24
- gpu/platform/__init__.pyi +3 -7
- gpu/select/__init__.pyi +2 -1
- gpu/shader/__init__.pyi +43 -9
- gpu/state/__init__.pyi +66 -44
- gpu/texture/__init__.pyi +4 -5
- gpu/types/__init__.pyi +216 -216
- gpu_extras/__init__.pyi +1 -0
- gpu_extras/batch/__init__.pyi +2 -5
- gpu_extras/presets/__init__.pyi +9 -10
- idprop/__init__.pyi +17 -0
- idprop/types/__init__.pyi +18 -17
- imbuf/__init__.pyi +13 -9
- imbuf/types/__init__.pyi +10 -23
- keyingsets_builtins/__init__.pyi +51 -93
- mathutils/__init__.pyi +296 -2255
- mathutils/bvhtree/__init__.pyi +24 -30
- mathutils/geometry/__init__.pyi +83 -132
- mathutils/interpolate/__init__.pyi +7 -5
- mathutils/kdtree/__init__.pyi +5 -14
- mathutils/noise/__init__.pyi +62 -106
- nodeitems_builtins/__init__.pyi +5 -4
- nodeitems_utils/__init__.pyi +10 -9
- rna_keymap_ui/__init__.pyi +7 -6
- rna_prop_ui/__init__.pyi +14 -13
- _bpy_internal/freedesktop/__init__.pyi +0 -20
- bgl/__init__.pyi +0 -4235
- bl_i18n_utils/bl_extract_messages/__init__.pyi +0 -24
- bl_i18n_utils/utils_cli/__init__.pyi +0 -10
- bl_previews_utils/bl_previews_render/__init__.pyi +0 -11
- bl_text_utils/external_editor/__init__.pyi +0 -5
- bpy_types/__init__.pyi +0 -29
- console_shell/__init__.pyi +0 -9
- fake_bge_module-20250312.dist-info/RECORD +0 -395
- keyingsets_utils/__init__.pyi +0 -18
- {animsys_refactor → _animsys_refactor}/py.typed +0 -0
- {bgl → _bl_console_utils}/py.typed +0 -0
- {bl_console_utils → _bl_i18n_utils}/py.typed +0 -0
- {bl_i18n_utils → _bl_previews_utils}/py.typed +0 -0
- {bl_previews_utils → _bl_rna_utils}/py.typed +0 -0
- {bl_rna_utils → _bl_text_utils}/py.typed +0 -0
- {bl_text_utils → _bl_ui_utils}/py.typed +0 -0
- {bl_ui_utils → _blendfile_header}/py.typed +0 -0
- {bpy_restrict_state → _bpy_restrict_state}/py.typed +0 -0
- {bpy_types → _bpy_types}/py.typed +0 -0
- {console_python → _console_python}/py.typed +0 -0
- {console_shell → _console_shell}/py.typed +0 -0
- {graphviz_export → _graphviz_export}/py.typed +0 -0
- {keyingsets_utils → _keyingsets_utils}/py.typed +0 -0
- {rna_info → _rna_info}/py.typed +0 -0
- {rna_xml → _rna_xml}/py.typed +0 -0
mathutils/geometry/__init__.pyi
CHANGED
|
@@ -1,27 +1,25 @@
|
|
|
1
1
|
"""
|
|
2
|
-
The Blender geometry module
|
|
2
|
+
The Blender geometry module.
|
|
3
3
|
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
6
|
import typing
|
|
7
7
|
import collections.abc
|
|
8
8
|
import typing_extensions
|
|
9
|
+
import numpy.typing as npt
|
|
9
10
|
import mathutils
|
|
10
11
|
|
|
11
12
|
def area_tri(
|
|
12
13
|
v1: collections.abc.Sequence[float] | mathutils.Vector,
|
|
13
14
|
v2: collections.abc.Sequence[float] | mathutils.Vector,
|
|
14
15
|
v3: collections.abc.Sequence[float] | mathutils.Vector,
|
|
16
|
+
/,
|
|
15
17
|
) -> float:
|
|
16
18
|
"""Returns the area size of the 2D or 3D triangle defined.
|
|
17
19
|
|
|
18
20
|
:param v1: Point1
|
|
19
|
-
:type v1: collections.abc.Sequence[float] | mathutils.Vector
|
|
20
21
|
:param v2: Point2
|
|
21
|
-
:type v2: collections.abc.Sequence[float] | mathutils.Vector
|
|
22
22
|
:param v3: Point3
|
|
23
|
-
:type v3: collections.abc.Sequence[float] | mathutils.Vector
|
|
24
|
-
:rtype: float
|
|
25
23
|
"""
|
|
26
24
|
|
|
27
25
|
def barycentric_transform(
|
|
@@ -32,45 +30,38 @@ def barycentric_transform(
|
|
|
32
30
|
tri_b1: collections.abc.Sequence[float] | mathutils.Vector,
|
|
33
31
|
tri_b2: collections.abc.Sequence[float] | mathutils.Vector,
|
|
34
32
|
tri_b3: collections.abc.Sequence[float] | mathutils.Vector,
|
|
33
|
+
/,
|
|
35
34
|
) -> mathutils.Vector:
|
|
36
35
|
"""Return a transformed point, the transformation is defined by 2 triangles.
|
|
37
36
|
|
|
38
37
|
:param point: The point to transform.
|
|
39
|
-
:type point: collections.abc.Sequence[float] | mathutils.Vector
|
|
40
38
|
:param tri_a1: source triangle vertex.
|
|
41
|
-
:type tri_a1: collections.abc.Sequence[float] | mathutils.Vector
|
|
42
39
|
:param tri_a2: source triangle vertex.
|
|
43
|
-
:type tri_a2: collections.abc.Sequence[float] | mathutils.Vector
|
|
44
40
|
:param tri_a3: source triangle vertex.
|
|
45
|
-
:type tri_a3: collections.abc.Sequence[float] | mathutils.Vector
|
|
46
41
|
:param tri_b1: target triangle vertex.
|
|
47
|
-
:type tri_b1: collections.abc.Sequence[float] | mathutils.Vector
|
|
48
42
|
:param tri_b2: target triangle vertex.
|
|
49
|
-
:type tri_b2: collections.abc.Sequence[float] | mathutils.Vector
|
|
50
43
|
:param tri_b3: target triangle vertex.
|
|
51
|
-
:type tri_b3: collections.abc.Sequence[float] | mathutils.Vector
|
|
52
44
|
:return: The transformed point
|
|
53
|
-
:rtype: mathutils.Vector
|
|
54
45
|
"""
|
|
55
46
|
|
|
56
47
|
def box_fit_2d(
|
|
57
48
|
points: collections.abc.Sequence[collections.abc.Sequence[float]],
|
|
49
|
+
/,
|
|
58
50
|
) -> float:
|
|
59
51
|
"""Returns an angle that best fits the points to an axis aligned rectangle
|
|
60
52
|
|
|
61
53
|
:param points: Sequence of 2D points.
|
|
62
|
-
:type points: collections.abc.Sequence[collections.abc.Sequence[float]]
|
|
63
54
|
:return: angle
|
|
64
|
-
:rtype: float
|
|
65
55
|
"""
|
|
66
56
|
|
|
67
|
-
def box_pack_2d(
|
|
57
|
+
def box_pack_2d(
|
|
58
|
+
boxes: list[list[float]],
|
|
59
|
+
/,
|
|
60
|
+
) -> tuple[float, float]:
|
|
68
61
|
"""Returns a tuple with the width and height of the packed bounding box.
|
|
69
62
|
|
|
70
63
|
:param boxes: list of boxes, each box is a list where the first 4 items are [X, Y, width, height, ...] other items are ignored. The X & Y values in this list are modified to set the packed positions.
|
|
71
|
-
:type boxes: list[list[float]]
|
|
72
64
|
:return: The width and height of the packed bounding box.
|
|
73
|
-
:rtype: tuple[float, float]
|
|
74
65
|
"""
|
|
75
66
|
|
|
76
67
|
def closest_point_on_tri(
|
|
@@ -78,30 +69,25 @@ def closest_point_on_tri(
|
|
|
78
69
|
tri_p1: collections.abc.Sequence[float] | mathutils.Vector,
|
|
79
70
|
tri_p2: collections.abc.Sequence[float] | mathutils.Vector,
|
|
80
71
|
tri_p3: collections.abc.Sequence[float] | mathutils.Vector,
|
|
72
|
+
/,
|
|
81
73
|
) -> mathutils.Vector:
|
|
82
74
|
"""Takes 4 vectors: one is the point and the next 3 define the triangle.
|
|
83
75
|
|
|
84
76
|
:param pt: Point
|
|
85
|
-
:type pt: collections.abc.Sequence[float] | mathutils.Vector
|
|
86
77
|
:param tri_p1: First point of the triangle
|
|
87
|
-
:type tri_p1: collections.abc.Sequence[float] | mathutils.Vector
|
|
88
78
|
:param tri_p2: Second point of the triangle
|
|
89
|
-
:type tri_p2: collections.abc.Sequence[float] | mathutils.Vector
|
|
90
79
|
:param tri_p3: Third point of the triangle
|
|
91
|
-
:type tri_p3: collections.abc.Sequence[float] | mathutils.Vector
|
|
92
80
|
:return: The closest point of the triangle.
|
|
93
|
-
:rtype: mathutils.Vector
|
|
94
81
|
"""
|
|
95
82
|
|
|
96
83
|
def convex_hull_2d(
|
|
97
84
|
points: collections.abc.Sequence[collections.abc.Sequence[float]],
|
|
85
|
+
/,
|
|
98
86
|
) -> list[int]:
|
|
99
87
|
"""Returns a list of indices into the list given
|
|
100
88
|
|
|
101
89
|
:param points: Sequence of 2D points.
|
|
102
|
-
:type points: collections.abc.Sequence[collections.abc.Sequence[float]]
|
|
103
90
|
:return: a list of indices
|
|
104
|
-
:rtype: list[int]
|
|
105
91
|
"""
|
|
106
92
|
|
|
107
93
|
def delaunay_2d_cdt(
|
|
@@ -112,7 +98,8 @@ def delaunay_2d_cdt(
|
|
|
112
98
|
faces: collections.abc.Sequence[collections.abc.Sequence[int]],
|
|
113
99
|
output_type: int,
|
|
114
100
|
epsilon: float,
|
|
115
|
-
need_ids=True,
|
|
101
|
+
need_ids: bool = True,
|
|
102
|
+
/,
|
|
116
103
|
) -> tuple[
|
|
117
104
|
list[mathutils.Vector],
|
|
118
105
|
list[tuple[int, int]],
|
|
@@ -135,34 +122,25 @@ def delaunay_2d_cdt(
|
|
|
135
122
|
of the orig arrays, which may save some time.
|
|
136
123
|
|
|
137
124
|
:param vert_coords: Vertex coordinates (2d)
|
|
138
|
-
:type vert_coords: collections.abc.Sequence[collections.abc.Sequence[float] | mathutils.Vector]
|
|
139
125
|
:param edges: Edges, as pairs of indices in vert_coords
|
|
140
|
-
:
|
|
141
|
-
:param faces: Faces, each sublist is a face, as indices in vert_coords (CCW oriented)
|
|
142
|
-
:type faces: collections.abc.Sequence[collections.abc.Sequence[int]]
|
|
126
|
+
:param faces: Faces, each sublist is a face, as indices in vert_coords (CCW oriented).
|
|
143
127
|
:param output_type: What output looks like. 0 => triangles with convex hull. 1 => triangles inside constraints. 2 => the input constraints, intersected. 3 => like 2 but detect holes and omit them from output. 4 => like 2 but with extra edges to make valid BMesh faces. 5 => like 4 but detect holes and omit them from output.
|
|
144
|
-
:type output_type: int
|
|
145
128
|
:param epsilon: For nearness tests; should not be zero
|
|
146
|
-
:type epsilon: float
|
|
147
129
|
:param need_ids: are the orig output arrays needed?
|
|
148
130
|
:return: Output tuple, (vert_coords, edges, faces, orig_verts, orig_edges, orig_faces)
|
|
149
|
-
:rtype: tuple[list[mathutils.Vector], list[tuple[int, int]], list[list[int]], list[list[int]], list[list[int]], list[list[int]]]
|
|
150
131
|
"""
|
|
151
132
|
|
|
152
133
|
def distance_point_to_plane(
|
|
153
134
|
pt: collections.abc.Sequence[float] | mathutils.Vector,
|
|
154
135
|
plane_co: collections.abc.Sequence[float] | mathutils.Vector,
|
|
155
136
|
plane_no: collections.abc.Sequence[float] | mathutils.Vector,
|
|
137
|
+
/,
|
|
156
138
|
) -> float:
|
|
157
139
|
"""Returns the signed distance between a point and a plane (negative when below the normal).
|
|
158
140
|
|
|
159
141
|
:param pt: Point
|
|
160
|
-
:type pt: collections.abc.Sequence[float] | mathutils.Vector
|
|
161
142
|
:param plane_co: A point on the plane
|
|
162
|
-
:type plane_co: collections.abc.Sequence[float] | mathutils.Vector
|
|
163
143
|
:param plane_no: The direction the plane is facing
|
|
164
|
-
:type plane_no: collections.abc.Sequence[float] | mathutils.Vector
|
|
165
|
-
:rtype: float
|
|
166
144
|
"""
|
|
167
145
|
|
|
168
146
|
def interpolate_bezier(
|
|
@@ -171,21 +149,16 @@ def interpolate_bezier(
|
|
|
171
149
|
handle2: collections.abc.Sequence[float] | mathutils.Vector,
|
|
172
150
|
knot2: collections.abc.Sequence[float] | mathutils.Vector,
|
|
173
151
|
resolution: int,
|
|
152
|
+
/,
|
|
174
153
|
) -> list[mathutils.Vector]:
|
|
175
154
|
"""Interpolate a bezier spline segment.
|
|
176
155
|
|
|
177
156
|
:param knot1: First bezier spline point.
|
|
178
|
-
:type knot1: collections.abc.Sequence[float] | mathutils.Vector
|
|
179
157
|
:param handle1: First bezier spline handle.
|
|
180
|
-
:type handle1: collections.abc.Sequence[float] | mathutils.Vector
|
|
181
158
|
:param handle2: Second bezier spline handle.
|
|
182
|
-
:type handle2: collections.abc.Sequence[float] | mathutils.Vector
|
|
183
159
|
:param knot2: Second bezier spline point.
|
|
184
|
-
:type knot2: collections.abc.Sequence[float] | mathutils.Vector
|
|
185
160
|
:param resolution: Number of points to return.
|
|
186
|
-
:type resolution: int
|
|
187
161
|
:return: The interpolated points.
|
|
188
|
-
:rtype: list[mathutils.Vector]
|
|
189
162
|
"""
|
|
190
163
|
|
|
191
164
|
def intersect_line_line(
|
|
@@ -193,19 +166,15 @@ def intersect_line_line(
|
|
|
193
166
|
v2: collections.abc.Sequence[float] | mathutils.Vector,
|
|
194
167
|
v3: collections.abc.Sequence[float] | mathutils.Vector,
|
|
195
168
|
v4: collections.abc.Sequence[float] | mathutils.Vector,
|
|
169
|
+
/,
|
|
196
170
|
) -> None | tuple[mathutils.Vector, mathutils.Vector]:
|
|
197
171
|
"""Returns a tuple with the points on each line respectively closest to the other.
|
|
198
172
|
|
|
199
173
|
:param v1: First point of the first line
|
|
200
|
-
:type v1: collections.abc.Sequence[float] | mathutils.Vector
|
|
201
174
|
:param v2: Second point of the first line
|
|
202
|
-
:type v2: collections.abc.Sequence[float] | mathutils.Vector
|
|
203
175
|
:param v3: First point of the second line
|
|
204
|
-
:type v3: collections.abc.Sequence[float] | mathutils.Vector
|
|
205
176
|
:param v4: Second point of the second line
|
|
206
|
-
:type v4: collections.abc.Sequence[float] | mathutils.Vector
|
|
207
177
|
:return: The intersection on each line or None when the lines are co-linear.
|
|
208
|
-
:rtype: None | tuple[mathutils.Vector, mathutils.Vector]
|
|
209
178
|
"""
|
|
210
179
|
|
|
211
180
|
def intersect_line_line_2d(
|
|
@@ -213,19 +182,15 @@ def intersect_line_line_2d(
|
|
|
213
182
|
lineA_p2: collections.abc.Sequence[float] | mathutils.Vector,
|
|
214
183
|
lineB_p1: collections.abc.Sequence[float] | mathutils.Vector,
|
|
215
184
|
lineB_p2: collections.abc.Sequence[float] | mathutils.Vector,
|
|
185
|
+
/,
|
|
216
186
|
) -> None | mathutils.Vector:
|
|
217
187
|
"""Takes 2 segments (defined by 4 vectors) and returns a vector for their point of intersection or None.
|
|
218
188
|
|
|
219
189
|
:param lineA_p1: First point of the first line
|
|
220
|
-
:type lineA_p1: collections.abc.Sequence[float] | mathutils.Vector
|
|
221
190
|
:param lineA_p2: Second point of the first line
|
|
222
|
-
:type lineA_p2: collections.abc.Sequence[float] | mathutils.Vector
|
|
223
191
|
:param lineB_p1: First point of the second line
|
|
224
|
-
:type lineB_p1: collections.abc.Sequence[float] | mathutils.Vector
|
|
225
192
|
:param lineB_p2: Second point of the second line
|
|
226
|
-
:type lineB_p2: collections.abc.Sequence[float] | mathutils.Vector
|
|
227
193
|
:return: The point of intersection or None when not found
|
|
228
|
-
:rtype: None | mathutils.Vector
|
|
229
194
|
"""
|
|
230
195
|
|
|
231
196
|
def intersect_line_plane(
|
|
@@ -233,21 +198,18 @@ def intersect_line_plane(
|
|
|
233
198
|
line_b: collections.abc.Sequence[float] | mathutils.Vector,
|
|
234
199
|
plane_co: collections.abc.Sequence[float] | mathutils.Vector,
|
|
235
200
|
plane_no: collections.abc.Sequence[float] | mathutils.Vector,
|
|
236
|
-
no_flip=False,
|
|
201
|
+
no_flip: bool = False,
|
|
202
|
+
/,
|
|
237
203
|
) -> None | mathutils.Vector:
|
|
238
204
|
"""Calculate the intersection between a line (as 2 vectors) and a plane.
|
|
239
205
|
Returns a vector for the intersection or None.
|
|
240
206
|
|
|
241
207
|
:param line_a: First point of the first line
|
|
242
|
-
:type line_a: collections.abc.Sequence[float] | mathutils.Vector
|
|
243
208
|
:param line_b: Second point of the first line
|
|
244
|
-
:type line_b: collections.abc.Sequence[float] | mathutils.Vector
|
|
245
209
|
:param plane_co: A point on the plane
|
|
246
|
-
:type plane_co: collections.abc.Sequence[float] | mathutils.Vector
|
|
247
210
|
:param plane_no: The direction the plane is facing
|
|
248
|
-
:
|
|
211
|
+
:param no_flip: Not implemented
|
|
249
212
|
:return: The point of intersection or None when not found
|
|
250
|
-
:rtype: None | mathutils.Vector
|
|
251
213
|
"""
|
|
252
214
|
|
|
253
215
|
def intersect_line_sphere(
|
|
@@ -255,21 +217,18 @@ def intersect_line_sphere(
|
|
|
255
217
|
line_b: collections.abc.Sequence[float] | mathutils.Vector,
|
|
256
218
|
sphere_co: collections.abc.Sequence[float] | mathutils.Vector,
|
|
257
219
|
sphere_radius: float,
|
|
258
|
-
clip=True,
|
|
220
|
+
clip: bool = True,
|
|
221
|
+
/,
|
|
259
222
|
) -> tuple[mathutils.Vector | None, mathutils.Vector | None]:
|
|
260
223
|
"""Takes a line (as 2 points) and a sphere (as a point and a radius) and
|
|
261
224
|
returns the intersection
|
|
262
225
|
|
|
263
226
|
:param line_a: First point of the line
|
|
264
|
-
:type line_a: collections.abc.Sequence[float] | mathutils.Vector
|
|
265
227
|
:param line_b: Second point of the line
|
|
266
|
-
:type line_b: collections.abc.Sequence[float] | mathutils.Vector
|
|
267
228
|
:param sphere_co: The center of the sphere
|
|
268
|
-
:type sphere_co: collections.abc.Sequence[float] | mathutils.Vector
|
|
269
229
|
:param sphere_radius: Radius of the sphere
|
|
270
|
-
:
|
|
230
|
+
:param clip: When False, dont restrict the intersection to the line segment.
|
|
271
231
|
:return: The intersection points as a pair of vectors or None when there is no intersection
|
|
272
|
-
:rtype: tuple[mathutils.Vector | None, mathutils.Vector | None]
|
|
273
232
|
"""
|
|
274
233
|
|
|
275
234
|
def intersect_line_sphere_2d(
|
|
@@ -277,21 +236,18 @@ def intersect_line_sphere_2d(
|
|
|
277
236
|
line_b: collections.abc.Sequence[float] | mathutils.Vector,
|
|
278
237
|
sphere_co: collections.abc.Sequence[float] | mathutils.Vector,
|
|
279
238
|
sphere_radius: float,
|
|
280
|
-
clip=True,
|
|
239
|
+
clip: bool = True,
|
|
240
|
+
/,
|
|
281
241
|
) -> tuple[mathutils.Vector | None, mathutils.Vector | None]:
|
|
282
242
|
"""Takes a line (as 2 points) and a sphere (as a point and a radius) and
|
|
283
243
|
returns the intersection
|
|
284
244
|
|
|
285
245
|
:param line_a: First point of the line
|
|
286
|
-
:type line_a: collections.abc.Sequence[float] | mathutils.Vector
|
|
287
246
|
:param line_b: Second point of the line
|
|
288
|
-
:type line_b: collections.abc.Sequence[float] | mathutils.Vector
|
|
289
247
|
:param sphere_co: The center of the sphere
|
|
290
|
-
:type sphere_co: collections.abc.Sequence[float] | mathutils.Vector
|
|
291
248
|
:param sphere_radius: Radius of the sphere
|
|
292
|
-
:
|
|
249
|
+
:param clip: When False, dont restrict the intersection to the line segment.
|
|
293
250
|
:return: The intersection points as a pair of vectors or None when there is no intersection
|
|
294
|
-
:rtype: tuple[mathutils.Vector | None, mathutils.Vector | None]
|
|
295
251
|
"""
|
|
296
252
|
|
|
297
253
|
def intersect_plane_plane(
|
|
@@ -299,33 +255,41 @@ def intersect_plane_plane(
|
|
|
299
255
|
plane_a_no: collections.abc.Sequence[float] | mathutils.Vector,
|
|
300
256
|
plane_b_co: collections.abc.Sequence[float] | mathutils.Vector,
|
|
301
257
|
plane_b_no: collections.abc.Sequence[float] | mathutils.Vector,
|
|
258
|
+
/,
|
|
302
259
|
) -> tuple[None, None] | tuple[mathutils.Vector, mathutils.Vector]:
|
|
303
260
|
"""Return the intersection between two planes
|
|
304
261
|
|
|
305
262
|
:param plane_a_co: Point on the first plane
|
|
306
|
-
:type plane_a_co: collections.abc.Sequence[float] | mathutils.Vector
|
|
307
263
|
:param plane_a_no: Normal of the first plane
|
|
308
|
-
:type plane_a_no: collections.abc.Sequence[float] | mathutils.Vector
|
|
309
264
|
:param plane_b_co: Point on the second plane
|
|
310
|
-
:type plane_b_co: collections.abc.Sequence[float] | mathutils.Vector
|
|
311
265
|
:param plane_b_no: Normal of the second plane
|
|
312
|
-
:
|
|
313
|
-
:return: The line of the intersection represented as a point and a vector or None if the intersection can't be calculated
|
|
314
|
-
:rtype: tuple[None, None] | tuple[mathutils.Vector, mathutils.Vector]
|
|
266
|
+
:return: The line of the intersection represented as a point and a vector or None if the intersection cant be calculated
|
|
315
267
|
"""
|
|
316
268
|
|
|
317
269
|
def intersect_point_line(
|
|
318
270
|
pt: collections.abc.Sequence[float] | mathutils.Vector,
|
|
319
271
|
line_p1: collections.abc.Sequence[float] | mathutils.Vector,
|
|
320
|
-
line_p2,
|
|
272
|
+
line_p2: collections.abc.Sequence[float] | mathutils.Vector,
|
|
273
|
+
/,
|
|
274
|
+
) -> tuple[mathutils.Vector, float]:
|
|
275
|
+
"""Takes a point and a line and returns the closest point on the line and its distance from the first point of the line as a percentage of the length of the line.
|
|
276
|
+
|
|
277
|
+
:param pt: Point
|
|
278
|
+
:param line_p1: First point of the line
|
|
279
|
+
:param line_p2: Second point of the line
|
|
280
|
+
"""
|
|
281
|
+
|
|
282
|
+
def intersect_point_line_segment(
|
|
283
|
+
pt: collections.abc.Sequence[float] | mathutils.Vector,
|
|
284
|
+
seg_p1: collections.abc.Sequence[float] | mathutils.Vector,
|
|
285
|
+
seg_p2: collections.abc.Sequence[float] | mathutils.Vector,
|
|
286
|
+
/,
|
|
321
287
|
) -> tuple[mathutils.Vector, float]:
|
|
322
|
-
"""Takes a point and a
|
|
288
|
+
"""Takes a point and a segment and returns the closest point on the segment and the distance to the segment.
|
|
323
289
|
|
|
324
290
|
:param pt: Point
|
|
325
|
-
:
|
|
326
|
-
:param
|
|
327
|
-
:type line_p1: collections.abc.Sequence[float] | mathutils.Vector
|
|
328
|
-
:rtype: tuple[mathutils.Vector, float]
|
|
291
|
+
:param seg_p1: First point of the segment
|
|
292
|
+
:param seg_p2: Second point of the segment
|
|
329
293
|
"""
|
|
330
294
|
|
|
331
295
|
def intersect_point_quad_2d(
|
|
@@ -334,22 +298,17 @@ def intersect_point_quad_2d(
|
|
|
334
298
|
quad_p2: collections.abc.Sequence[float] | mathutils.Vector,
|
|
335
299
|
quad_p3: collections.abc.Sequence[float] | mathutils.Vector,
|
|
336
300
|
quad_p4: collections.abc.Sequence[float] | mathutils.Vector,
|
|
301
|
+
/,
|
|
337
302
|
) -> int:
|
|
338
303
|
"""Takes 5 vectors (using only the x and y coordinates): one is the point and the next 4 define the quad,
|
|
339
304
|
only the x and y are used from the vectors. Returns 1 if the point is within the quad, otherwise 0.
|
|
340
305
|
Works only with convex quads without singular edges.
|
|
341
306
|
|
|
342
307
|
:param pt: Point
|
|
343
|
-
:type pt: collections.abc.Sequence[float] | mathutils.Vector
|
|
344
308
|
:param quad_p1: First point of the quad
|
|
345
|
-
:type quad_p1: collections.abc.Sequence[float] | mathutils.Vector
|
|
346
309
|
:param quad_p2: Second point of the quad
|
|
347
|
-
:type quad_p2: collections.abc.Sequence[float] | mathutils.Vector
|
|
348
310
|
:param quad_p3: Third point of the quad
|
|
349
|
-
:type quad_p3: collections.abc.Sequence[float] | mathutils.Vector
|
|
350
311
|
:param quad_p4: Fourth point of the quad
|
|
351
|
-
:type quad_p4: collections.abc.Sequence[float] | mathutils.Vector
|
|
352
|
-
:rtype: int
|
|
353
312
|
"""
|
|
354
313
|
|
|
355
314
|
def intersect_point_tri(
|
|
@@ -357,19 +316,15 @@ def intersect_point_tri(
|
|
|
357
316
|
tri_p1: collections.abc.Sequence[float] | mathutils.Vector,
|
|
358
317
|
tri_p2: collections.abc.Sequence[float] | mathutils.Vector,
|
|
359
318
|
tri_p3: collections.abc.Sequence[float] | mathutils.Vector,
|
|
319
|
+
/,
|
|
360
320
|
) -> None | mathutils.Vector:
|
|
361
321
|
"""Takes 4 vectors: one is the point and the next 3 define the triangle. Projects the point onto the triangle plane and checks if it is within the triangle.
|
|
362
322
|
|
|
363
323
|
:param pt: Point
|
|
364
|
-
:type pt: collections.abc.Sequence[float] | mathutils.Vector
|
|
365
324
|
:param tri_p1: First point of the triangle
|
|
366
|
-
:type tri_p1: collections.abc.Sequence[float] | mathutils.Vector
|
|
367
325
|
:param tri_p2: Second point of the triangle
|
|
368
|
-
:type tri_p2: collections.abc.Sequence[float] | mathutils.Vector
|
|
369
326
|
:param tri_p3: Third point of the triangle
|
|
370
|
-
:type tri_p3: collections.abc.Sequence[float] | mathutils.Vector
|
|
371
327
|
:return: Point on the triangles plane or None if its outside the triangle
|
|
372
|
-
:rtype: None | mathutils.Vector
|
|
373
328
|
"""
|
|
374
329
|
|
|
375
330
|
def intersect_point_tri_2d(
|
|
@@ -377,18 +332,14 @@ def intersect_point_tri_2d(
|
|
|
377
332
|
tri_p1: collections.abc.Sequence[float] | mathutils.Vector,
|
|
378
333
|
tri_p2: collections.abc.Sequence[float] | mathutils.Vector,
|
|
379
334
|
tri_p3: collections.abc.Sequence[float] | mathutils.Vector,
|
|
335
|
+
/,
|
|
380
336
|
) -> int:
|
|
381
337
|
"""Takes 4 vectors (using only the x and y coordinates): one is the point and the next 3 define the triangle. Returns 1 if the point is within the triangle, otherwise 0.
|
|
382
338
|
|
|
383
339
|
:param pt: Point
|
|
384
|
-
:type pt: collections.abc.Sequence[float] | mathutils.Vector
|
|
385
340
|
:param tri_p1: First point of the triangle
|
|
386
|
-
:type tri_p1: collections.abc.Sequence[float] | mathutils.Vector
|
|
387
341
|
:param tri_p2: Second point of the triangle
|
|
388
|
-
:type tri_p2: collections.abc.Sequence[float] | mathutils.Vector
|
|
389
342
|
:param tri_p3: Third point of the triangle
|
|
390
|
-
:type tri_p3: collections.abc.Sequence[float] | mathutils.Vector
|
|
391
|
-
:rtype: int
|
|
392
343
|
"""
|
|
393
344
|
|
|
394
345
|
def intersect_ray_tri(
|
|
@@ -398,23 +349,17 @@ def intersect_ray_tri(
|
|
|
398
349
|
ray: collections.abc.Sequence[float] | mathutils.Vector,
|
|
399
350
|
orig: collections.abc.Sequence[float] | mathutils.Vector,
|
|
400
351
|
clip: bool = True,
|
|
352
|
+
/,
|
|
401
353
|
) -> None | mathutils.Vector:
|
|
402
354
|
"""Returns the intersection between a ray and a triangle, if possible, returns None otherwise.
|
|
403
355
|
|
|
404
356
|
:param v1: Point1
|
|
405
|
-
:type v1: collections.abc.Sequence[float] | mathutils.Vector
|
|
406
357
|
:param v2: Point2
|
|
407
|
-
:type v2: collections.abc.Sequence[float] | mathutils.Vector
|
|
408
358
|
:param v3: Point3
|
|
409
|
-
:type v3: collections.abc.Sequence[float] | mathutils.Vector
|
|
410
359
|
:param ray: Direction of the projection
|
|
411
|
-
:type ray: collections.abc.Sequence[float] | mathutils.Vector
|
|
412
360
|
:param orig: Origin
|
|
413
|
-
:
|
|
414
|
-
:param clip: When False, don't restrict the intersection to the area of the triangle, use the infinite plane defined by the triangle.
|
|
415
|
-
:type clip: bool
|
|
361
|
+
:param clip: When False, dont restrict the intersection to the area of the triangle, use the infinite plane defined by the triangle.
|
|
416
362
|
:return: The point of intersection or None if no intersection is found
|
|
417
|
-
:rtype: None | mathutils.Vector
|
|
418
363
|
"""
|
|
419
364
|
|
|
420
365
|
def intersect_sphere_sphere_2d(
|
|
@@ -422,59 +367,69 @@ def intersect_sphere_sphere_2d(
|
|
|
422
367
|
radius_a: float,
|
|
423
368
|
p_b: collections.abc.Sequence[float] | mathutils.Vector,
|
|
424
369
|
radius_b: float,
|
|
370
|
+
/,
|
|
425
371
|
) -> tuple[None, None] | tuple[mathutils.Vector, mathutils.Vector]:
|
|
426
|
-
"""Returns 2 points
|
|
372
|
+
"""Returns 2 points between intersecting circles.
|
|
427
373
|
|
|
428
374
|
:param p_a: Center of the first circle
|
|
429
|
-
:type p_a: collections.abc.Sequence[float] | mathutils.Vector
|
|
430
375
|
:param radius_a: Radius of the first circle
|
|
431
|
-
:type radius_a: float
|
|
432
376
|
:param p_b: Center of the second circle
|
|
433
|
-
:type p_b: collections.abc.Sequence[float] | mathutils.Vector
|
|
434
377
|
:param radius_b: Radius of the second circle
|
|
435
|
-
:
|
|
436
|
-
:return: 2 points on between intersecting circles or None when there is no intersection.
|
|
437
|
-
:rtype: tuple[None, None] | tuple[mathutils.Vector, mathutils.Vector]
|
|
378
|
+
:return: 2 points between intersecting circles or None when there is no intersection.
|
|
438
379
|
"""
|
|
439
380
|
|
|
440
|
-
def intersect_tri_tri_2d(
|
|
381
|
+
def intersect_tri_tri_2d(
|
|
382
|
+
tri_a1: collections.abc.Sequence[float] | mathutils.Vector,
|
|
383
|
+
tri_a2: collections.abc.Sequence[float] | mathutils.Vector,
|
|
384
|
+
tri_a3: collections.abc.Sequence[float] | mathutils.Vector,
|
|
385
|
+
tri_b1: collections.abc.Sequence[float] | mathutils.Vector,
|
|
386
|
+
tri_b2: collections.abc.Sequence[float] | mathutils.Vector,
|
|
387
|
+
tri_b3: collections.abc.Sequence[float] | mathutils.Vector,
|
|
388
|
+
/,
|
|
389
|
+
) -> bool:
|
|
441
390
|
"""Check if two 2D triangles intersect.
|
|
442
391
|
|
|
443
|
-
:
|
|
392
|
+
:param tri_a1: First vertex of the first triangle.
|
|
393
|
+
:param tri_a2: Second vertex of the first triangle.
|
|
394
|
+
:param tri_a3: Third vertex of the first triangle.
|
|
395
|
+
:param tri_b1: First vertex of the second triangle.
|
|
396
|
+
:param tri_b2: Second vertex of the second triangle.
|
|
397
|
+
:param tri_b3: Third vertex of the second triangle.
|
|
398
|
+
:return: True if the triangles intersect.
|
|
444
399
|
"""
|
|
445
400
|
|
|
446
401
|
def normal(
|
|
447
|
-
vectors: collections.abc.Sequence[collections.abc.Sequence[float]],
|
|
402
|
+
*vectors: collections.abc.Sequence[collections.abc.Sequence[float]],
|
|
448
403
|
) -> mathutils.Vector:
|
|
449
404
|
"""Returns the normal of a 3D polygon.
|
|
450
405
|
|
|
451
406
|
:param vectors: 3 or more vectors to calculate normals.
|
|
452
|
-
:type vectors: collections.abc.Sequence[collections.abc.Sequence[float]]
|
|
453
|
-
:rtype: mathutils.Vector
|
|
454
407
|
"""
|
|
455
408
|
|
|
456
409
|
def points_in_planes(
|
|
457
410
|
planes: list[collections.abc.Sequence[float] | mathutils.Vector],
|
|
458
411
|
epsilon_coplanar: float = 0.0001,
|
|
459
412
|
epsilon_isect: float = 1e-06,
|
|
413
|
+
/,
|
|
460
414
|
) -> tuple[list[mathutils.Vector], list[int]]:
|
|
461
415
|
"""Returns a list of points inside all planes given and a list of index values for the planes used.
|
|
462
416
|
|
|
463
417
|
:param planes: List of planes (4D vectors).
|
|
464
|
-
:
|
|
465
|
-
:param epsilon_coplanar: Epsilon value for interpreting plane pairs as co-plannar.
|
|
466
|
-
:type epsilon_coplanar: float
|
|
418
|
+
:param epsilon_coplanar: Epsilon value for interpreting plane pairs as co-planar.
|
|
467
419
|
:param epsilon_isect: Epsilon value for intersection.
|
|
468
|
-
:
|
|
469
|
-
:return: Two lists, once containing the 3D coordinates inside the planes, another containing the plane indices used.
|
|
470
|
-
:rtype: tuple[list[mathutils.Vector], list[int]]
|
|
420
|
+
:return: Two lists, one containing the 3D coordinates inside the planes, another containing the plane indices used.
|
|
471
421
|
"""
|
|
472
422
|
|
|
473
|
-
def tessellate_polygon(
|
|
423
|
+
def tessellate_polygon(
|
|
424
|
+
polylines: collections.abc.Sequence[
|
|
425
|
+
collections.abc.Sequence[collections.abc.Sequence[float]]
|
|
426
|
+
],
|
|
427
|
+
/,
|
|
428
|
+
) -> list[tuple[int, int, int]]:
|
|
474
429
|
"""Takes a list of polylines (each point a pair or triplet of numbers) and returns the point indices for a polyline filled with triangles. Does not handle degenerate geometry (such as zero-length lines due to consecutive identical points).
|
|
475
430
|
|
|
476
431
|
:param polylines: Polygons where each polygon is a sequence of 2D or 3D points.
|
|
477
|
-
:
|
|
432
|
+
:return: A list of triangles.
|
|
478
433
|
"""
|
|
479
434
|
|
|
480
435
|
def volume_tetrahedron(
|
|
@@ -482,16 +437,12 @@ def volume_tetrahedron(
|
|
|
482
437
|
v2: collections.abc.Sequence[float] | mathutils.Vector,
|
|
483
438
|
v3: collections.abc.Sequence[float] | mathutils.Vector,
|
|
484
439
|
v4: collections.abc.Sequence[float] | mathutils.Vector,
|
|
440
|
+
/,
|
|
485
441
|
) -> float:
|
|
486
442
|
"""Return the volume formed by a tetrahedron (points can be in any order).
|
|
487
443
|
|
|
488
444
|
:param v1: Point1
|
|
489
|
-
:type v1: collections.abc.Sequence[float] | mathutils.Vector
|
|
490
445
|
:param v2: Point2
|
|
491
|
-
:type v2: collections.abc.Sequence[float] | mathutils.Vector
|
|
492
446
|
:param v3: Point3
|
|
493
|
-
:type v3: collections.abc.Sequence[float] | mathutils.Vector
|
|
494
447
|
:param v4: Point4
|
|
495
|
-
:type v4: collections.abc.Sequence[float] | mathutils.Vector
|
|
496
|
-
:rtype: float
|
|
497
448
|
"""
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
"""
|
|
2
|
-
The Blender interpolate module
|
|
2
|
+
The Blender interpolate module.
|
|
3
3
|
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
6
|
import typing
|
|
7
7
|
import collections.abc
|
|
8
8
|
import typing_extensions
|
|
9
|
+
import numpy.typing as npt
|
|
9
10
|
|
|
10
11
|
def poly_3d_calc(
|
|
11
|
-
veclist: collections.abc.Sequence[collections.abc.Sequence[float]],
|
|
12
|
+
veclist: collections.abc.Sequence[collections.abc.Sequence[float]],
|
|
13
|
+
pt: collections.abc.Sequence[float],
|
|
14
|
+
/,
|
|
12
15
|
) -> list[float]:
|
|
13
16
|
"""Calculate barycentric weights for a point on a polygon.
|
|
14
17
|
|
|
15
18
|
:param veclist: Sequence of 3D positions.
|
|
16
|
-
:
|
|
17
|
-
:
|
|
18
|
-
:rtype: list[float]
|
|
19
|
+
:param pt: 2D or 3D position.
|
|
20
|
+
:return: list of per-vector weights.
|
|
19
21
|
"""
|
mathutils/kdtree/__init__.pyi
CHANGED
|
@@ -8,27 +8,26 @@ Generic 3-dimensional kd-tree to perform spatial searches.
|
|
|
8
8
|
import typing
|
|
9
9
|
import collections.abc
|
|
10
10
|
import typing_extensions
|
|
11
|
+
import numpy.typing as npt
|
|
11
12
|
import mathutils
|
|
12
13
|
|
|
13
14
|
class KDTree:
|
|
14
15
|
"""KdTree(size) -> new kd-tree initialized to hold size items."""
|
|
15
16
|
|
|
16
|
-
def balance(self):
|
|
17
|
+
def balance(self) -> None:
|
|
17
18
|
"""Balance the tree."""
|
|
18
19
|
|
|
19
20
|
def find(
|
|
20
21
|
self,
|
|
21
22
|
co: collections.abc.Sequence[float],
|
|
23
|
+
*,
|
|
22
24
|
filter: collections.abc.Callable[int, bool] | None = None,
|
|
23
25
|
) -> tuple[mathutils.Vector, int, float]:
|
|
24
26
|
"""Find nearest point to co.
|
|
25
27
|
|
|
26
28
|
:param co: 3D coordinates.
|
|
27
|
-
:type co: collections.abc.Sequence[float]
|
|
28
29
|
:param filter: function which takes an index and returns True for indices to include in the search.
|
|
29
|
-
:type filter: collections.abc.Callable[int, bool] | None
|
|
30
30
|
:return: Returns (position, index, distance).
|
|
31
|
-
:rtype: tuple[mathutils.Vector, int, float]
|
|
32
31
|
"""
|
|
33
32
|
|
|
34
33
|
def find_n(
|
|
@@ -37,11 +36,8 @@ class KDTree:
|
|
|
37
36
|
"""Find nearest n points to co.
|
|
38
37
|
|
|
39
38
|
:param co: 3D coordinates.
|
|
40
|
-
:type co: collections.abc.Sequence[float]
|
|
41
39
|
:param n: Number of points to find.
|
|
42
|
-
:type n: int
|
|
43
40
|
:return: Returns a list of tuples (position, index, distance).
|
|
44
|
-
:rtype: list[tuple[mathutils.Vector, int, float]]
|
|
45
41
|
"""
|
|
46
42
|
|
|
47
43
|
def find_range(
|
|
@@ -50,23 +46,18 @@ class KDTree:
|
|
|
50
46
|
"""Find all points within radius of co.
|
|
51
47
|
|
|
52
48
|
:param co: 3D coordinates.
|
|
53
|
-
:type co: collections.abc.Sequence[float]
|
|
54
49
|
:param radius: Distance to search for points.
|
|
55
|
-
:type radius: float
|
|
56
50
|
:return: Returns a list of tuples (position, index, distance).
|
|
57
|
-
:rtype: list[tuple[mathutils.Vector, int, float]]
|
|
58
51
|
"""
|
|
59
52
|
|
|
60
|
-
def insert(self, co: collections.abc.Sequence[float], index: int):
|
|
53
|
+
def insert(self, co: collections.abc.Sequence[float], index: int) -> None:
|
|
61
54
|
"""Insert a point into the KDTree.
|
|
62
55
|
|
|
63
56
|
:param co: Point 3d position.
|
|
64
|
-
:type co: collections.abc.Sequence[float]
|
|
65
57
|
:param index: The index of the point.
|
|
66
|
-
:type index: int
|
|
67
58
|
"""
|
|
68
59
|
|
|
69
|
-
def __init__(self, size):
|
|
60
|
+
def __init__(self, size) -> None:
|
|
70
61
|
"""
|
|
71
62
|
|
|
72
63
|
:param size:
|