From e8b59feaf3d7dc199fdf639a25a0544071e66c8a Mon Sep 17 00:00:00 2001 From: Stefan Jeske Date: Wed, 10 Sep 2025 13:14:26 +0200 Subject: [PATCH] add the main frame change handler to always insert at 0 this allows addons to depend on the data provided by the sequence loader --- README.md | 42 +++++++++++++++++++++++++++++------------- blender_manifest.toml | 2 +- bseq/__init__.py | 4 +++- bseq/panels.py | 1 - docs/conf.py | 2 +- 5 files changed, 34 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 4c12caa..d2f2e77 100644 --- a/README.md +++ b/README.md @@ -46,17 +46,32 @@ All data is loaded *just-in-time* when the Blender frame changes, in order to av - [1.2 Install Addon](#12-install-addon) - [1.3 FAQs](#13-faqs) - [2. How to use](#2-how-to-use) - - [2. Load the animation sequence you want](#2-load-the-animation-sequence-you-want) - - [2.1 Absolute vs. Relative Paths](#21-absolute-vs-relative-paths) - - [2.2 Sequence List View](#22-sequence-list-view) - - [2.2.1 Enable/ Disable](#221-enable-disable) - - [2.2.1 Refresh Sequence](#221-refresh-sequence) - - [2.3 Settings](#23-settings) - - [2.3.1 Geometry Nodes](#231-geometry-nodes) - - [2.3.2 Path Information](#232-path-information) - - [2.3.3 Attributes Settings](#233-attributes-settings) - - [2.3.4 Split Norm per Vertex](#234-split-norm-per-vertex) - - [2.3.5 Advanced Settings](#235-advanced-settings) + - [1. Load the animation sequence you want](#1-load-the-animation-sequence-you-want) + - [1.1 Relative Paths](#11-relative-paths) + - [1.2 Import Default Normals](#12-import-default-normals) + - [1.3 Custom Transformation Matrix](#13-custom-transformation-matrix) + - [1.4 Load sequences from folder (Legacy importer)](#14-load-sequences-from-folder-legacy-importer) + - [2. Global Settings](#2-global-settings) + - [2.1 Root Directory](#21-root-directory) + - [2.2 Print Sequence Information](#22-print-sequence-information) + - [2.3 Auto Refresh Active Sequences](#23-auto-refresh-active-sequences) + - [2.4 Auto Refresh All Sequences](#24-auto-refresh-all-sequences) + - [3. Sequence List View](#3-sequence-list-view) + - [3.1 Activate / Deactivate Sequences](#31-activate--deactivate-sequences) + - [3.2 Refresh Sequence](#32-refresh-sequence) + - [3.3 Activate / Deactivate All](#33-activate--deactivate-all) + - [3.4 Set Timeline](#34-set-timeline) + - [4. Sequence Properties](#4-sequence-properties) + - [4.1 Match Blender Frame Numbers](#41-match-blender-frame-numbers) + - [4.2 Path](#42-path) + - [4.3 Pattern](#43-pattern) + - [4.4 Current File](#44-current-file) + - [4.5 Last Loading Time](#45-last-loading-time) + - [4.6 Attributes Settings](#46-attributes-settings) + - [4.6.1 Split Norm per Vertex](#461-split-norm-per-vertex) + - [5. Advanced Settings](#5-advanced-settings) + - [5.1 Script](#51-script) + - [5.2 Geometry Nodes](#52-geometry-nodes) ## 1. Installation @@ -70,8 +85,9 @@ git clone https://github.com/InteractiveComputerGraphics/blender-sequence-loader 2. Build the installable `.zip` file by simply running the following command. This should produce a file called `blender_sequence_loader_{date}.zip`, where `{date}` is replaced with todays date. No other dependency other than standard python3 libraries are needed to build the addon. -```shell -python3 build_addon.py +```sh +./download_wheels.sh +blender --command extension build ``` ### 1.2 Install Addon diff --git a/blender_manifest.toml b/blender_manifest.toml index 92c19ec..0e265aa 100644 --- a/blender_manifest.toml +++ b/blender_manifest.toml @@ -3,7 +3,7 @@ schema_version = "1.0.0" # Example of manifest file for a Blender extension # Change the values according to your extension id = "sequence_loader" -version = "0.3.4" +version = "0.3.5" name = "Blender Sequence Loader" tagline = "Just-in-time loader for meshio-supported mesh file sequences" maintainer = "Stefan Rhys Jeske " diff --git a/bseq/__init__.py b/bseq/__init__.py index 13ca993..08a8e37 100644 --- a/bseq/__init__.py +++ b/bseq/__init__.py @@ -13,7 +13,9 @@ @persistent def BSEQ_initialize(scene): if update_obj not in bpy.app.handlers.frame_change_post: - bpy.app.handlers.frame_change_post.append(update_obj) + # Insert at the beginning, so that it runs before other frame change handlers. + # The other handlers don't need to be in the first position. + bpy.app.handlers.frame_change_post.insert(0, update_obj) if auto_refresh_active not in bpy.app.handlers.frame_change_post: bpy.app.handlers.frame_change_post.append(auto_refresh_active) if auto_refresh_all not in bpy.app.handlers.frame_change_post: diff --git a/bseq/panels.py b/bseq/panels.py index 5c9484e..c70cdd2 100644 --- a/bseq/panels.py +++ b/bseq/panels.py @@ -1,7 +1,6 @@ import bpy import os - class BSEQ_UL_Obj_List(bpy.types.UIList): ''' This controls the list of imported sequences. diff --git a/docs/conf.py b/docs/conf.py index d4e3eb7..3069cf1 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -9,7 +9,7 @@ project = 'blender-sequence-loader' copyright = '2025, InteractiveComputerGraphics' author = 'InteractiveComputerGraphics' -release = '0.3.4' +release = '0.3.5' # -- General configuration --------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration