Aller au contenu
Table des matières

bloc : Le stockage objet dans Blender

Mon fork bloc propose un parcours Blender autour du stockage S3 et MinIO. Il conserve le crédit du projet Blender-Cloud-Storage d’origine. L’extension transforme les clés d’objets en arborescence, puis télécharge les ressources avant leur import dans Blender.

Intégration Fork
  • Mis à jour
  • 1
  • Python · 100%
  • GPL-3.0
Python Crédit amont
Composants documentés
2Explorer les modules
Documents source
1Lire les instructions
Langages du dépôtPython 100%1

Parts calculées à partir des octets GitHub Linguist.

Python100%
100%24 284 octets
Langage%Octets
Python100%24 284

1. Aperçu

1.1. Pourquoi il existe

Intégration directe du stockage objet AWS S3 dans Blender via Boto3, éliminant la saturation des disques locaux pour les assets 3D.

1.2. Cas d’usage

Synchronisation cloud d'assets 3D, sauvegardes et flux de rendu distribués.

2. Cas d’utilisation

Extension Blender qui liste, envoie, télécharge et importe des fichiers de compartiments MinIO ou AWS S3 dans un panneau latéral.

Diagramme de cas d’utilisation de bloc : Ajouter une connexion; Parcourir et chercher; Envoyer le .blend courant; Importer un maillage; Supprimer un fichier distantblocAjouter une connexionParcourir et chercherEnvoyer le .blend courantImporter un maillageSupprimer un fichier distantUtilisateur Blender«système»Compartiment MinIO/S3
Acteurs à gauche (personnes) et à droite (systèmes externes) ; chaque ovale est un cas d’utilisation appuyé par les fichiers cités ci-dessous.
Ajouter une connexion
Utilisateur Blender

Dans les préférences de l’extension, chaque CloudConnection contient le type (MinIO ou AWS S3), le point d’accès ou la région, les clés et le nom du compartiment ; plusieurs connexions peuvent être listées.

Parcourir et chercher
Utilisateur BlenderCompartiment MinIO/S3

Refresh File List appelle list_objects (MinIO) ou list_objects_v2 (boto3) et dessine une arborescence dans l’onglet Cloud de la vue 3D ; le champ Search filtre les noms par sous-chaîne.

Envoyer le .blend courant
Utilisateur BlenderCompartiment MinIO/S3

Upload Current File envoie le .blend enregistré sous son nom de fichier. Le README parle d’envoyer aussi textures et dépendances, mais addon.py n’envoie que le .blend.

Importer un maillage
Utilisateur BlenderCompartiment MinIO/S3

Download enregistre un objet dans le dossier temporaire du système ; Load to Scene le télécharge puis appelle l’importateur STL, OBJ, USD ou PLY de Blender.

Supprimer un fichier distant
Utilisateur BlenderCompartiment MinIO/S3

Delete appelle remove_object (MinIO) ou delete_object (S3) puis rafraîchit la liste.

2.1. Scénario : Importer un scan d’un compartiment MinIO dans Blender

  1. Installer l’extension dans Edit > Preferences > Add-ons ; au premier chargement, elle installe boto3, minio et rapidfuzz avec pip.
  2. Dans les préférences, ajouter une connexion MinIO avec URL, clés et nom du compartiment.
  3. Ouvrir l’onglet Cloud dans la barre latérale de la vue 3D et cliquer sur Refresh File List.
  4. Taper une partie du nom dans Search pour filtrer la liste.
  5. Cliquer sur Load to Scene sur un fichier .obj ou .stl pour l’importer.

Fichiers consultésREADME.mdaddon.pyblender_manifest.tomlpyproject.toml

3. Démarrage

Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.

4. Références du dépôt

Extraits des guides du dépôt, dans leur langue d’origine. Les liens ouvrent la version du code consultée.

Prérequis et premier essai

4.1. Installation

README.md

To install the Blender S3 Integration add-on, follow these steps:

  1. Download the Add-on
  • Clone the repository:
  1. Install the Add-on in Blender
  • Open Blender.
  • Go to Edit > Preferences > Add-ons.
  • Click on Install at the top of the preferences window.
  • Select the downloaded ZIP file.
  • Enable the add-on by checking the box next to “Blender S3 Integration”.
Lire les instructions complètes ↗
Configuration et utilisation

4.2. Setup

README.md

Before using the add-on, configure your AWS credentials:

  1. Open Blender Preferences
  • Go to Edit > Preferences > Add-ons > Blender S3 Integration.
  1. Enter AWS Credentials
  • In the add-on preferences, enter your AWS Access Key, Secret Key, and the region where your S3 bucket is located.
  1. Set Your S3 Bucket Name
  • Enter the name of your S3 bucket in the preferences.
Lire les instructions complètes ↗

4.3. Usage

README.md

Once installed and configured, use the add-on from the Blender interface:

  1. Open the S3 Integration Panel
  • Go to View3D > Tool Shelf > S3 Integration panel to access the features.
Lire les instructions complètes ↗
Exploitation et dépannage

4.4. Updated Features (v2.0)

README.md

  • Upload Blender files with dependencies (textures, images, etc.) to S3.
  • Download Blender files with dependencies (textures, images, etc.) from S3.
Lire les instructions complètes ↗

4.5. Updated Features (v3.0)

README.md

  • Minio and S3 support multiple endpoints
  • Folder inside the Panel
  • Search
Lire les instructions complètes ↗
Développement et contributions

4.6. Contributing

README.md

To contribute, fork the repository and create a pull request with your changes.
Lire les instructions complètes ↗
Documentation source

1 documents lus parmi 1 candidats.

5. Fonctions et composants 2

Connexion et liste
CloudConnection contient les réglages de fournisseur, service, bucket et région. La connexion active détermine le client boto3 ou MinIO. Les clés reçues sont découpées aux barres obliques pour construire le dictionnaire imbriqué du panneau.
Recherche et import
CloudSearchManager évalue les noms et chemins avec RapidFuzz. Le téléchargement produit d’abord un fichier local temporaire. L’opérateur choisit ensuite un importateur STL, OBJ, PLY ou USD; le transfert et l’import ont donc des états de réussite distincts.

6. Architecture

Ouvrez un composant pour suivre ses connexions, ou explorez le diagramme complet.

Composants du système Contexte
Mermaid Diagramme interactif

Vue générale des composants et des échanges vérifiés dans le dépôt.

Vue statique de l’architecture de bloc
Aperçu statique. Le diagramme interactif le remplace après le chargement de Mermaid.
flowchart LR
node_artist(("3D artist"))

subgraph group_ui["Blender interface"]
  node_preferences["Connection preferences<br/>[addon.py]"]
  node_panel["Integration panel<br/>[addon.py]"]
  node_browse["Browse and search<br/>[addon.py]"]
end

subgraph group_workflow["File workflows"]
  node_list["Bucket listing<br/>[addon.py]"]
  node_upload["Upload files<br/>[addon.py]"]
  node_dependencies["Dependency transfer<br/>[addon.py]"]
  node_download["Download files<br/>[addon.py]"]
  node_manage["Update and delete<br/>[addon.py]"]
  node_scene["Load into scene<br/>[addon.py]"]
end

subgraph group_storage["Cloud storage"]
  node_client["Cloud client setup<br/>[addon.py]"]
  node_providers["S3 and MinIO"]
end

node_artist -->|"configures"| node_preferences
node_artist -->|"uses"| node_panel
node_panel -->|"shows"| node_browse
node_upload -->|"refreshes"| node_list
node_client -->|"selects provider"| node_providers
node_upload -->|"includes"| node_dependencies
node_download -->|"includes"| node_dependencies
node_download -.->|"loads supported assets"| node_scene
group_ui --> group_workflow
group_workflow --> group_storage
class node_preferences,node_panel,node_browse toneBlue
class node_list,node_upload,node_dependencies,node_download,node_manage,node_scene toneAmber
class node_client,node_providers toneMint
class node_artist toneIndigo

Un module Blender pour le stockage compatible S3. Les artistes configurent une connexion, parcourent ou recherchent les fichiers, transfèrent les dépendances Blender et chargent les ressources prises en charge dans la scène par les opérateurs du module.

Composants
12
Connexions
19
Liens appuyés par le code
19/19
Version texte du diagramme

Le diagramme regroupe les liens parallèles entre groupes : il en montre 10 sur 19. Liste complète :

  • 3D artist → Connection preferences (configures)
  • 3D artist → Integration panel (uses)
  • Integration panel → Browse and search (shows)
  • Integration panel → Upload files (offers)
  • Integration panel → Bucket listing (offers refresh)
  • Browse and search → Bucket listing (filters)
  • Upload files → Bucket listing (refreshes)
  • Upload files → Cloud client setup (uses connection)
  • Download files → Cloud client setup (uses connection)
  • Update and delete → Cloud client setup (uses connection)
  • Load into scene → Cloud client setup (downloads asset)
  • Cloud client setup → S3 and MinIO (selects provider)
  • Bucket listing → S3 and MinIO (lists objects)
  • Upload files → S3 and MinIO (uploads objects)
  • Download files → S3 and MinIO (downloads objects)
  • Update and delete → S3 and MinIO (updates or deletes)
  • Upload files → Dependency transfer (includes)
  • Download files → Dependency transfer (includes)
  • Download files → Load into scene (loads supported assets)
Suivre un parcours dans le code

Suivez l’actualisation des clés vers l’arborescence, puis le chargement de la clé choisie vers un fichier et un opérateur d’import. La liste en arrière-plan transmet les mises à jour de l’interface par les timers Blender. L’objet stocké n’est pas un dossier local.

7. Dossier technique

Établi à partir du code au commit 6c83c21 (3 fichiers). Chaque élément vient d’une correspondance de motif dans le code: ouvrez le fichier lié avant de vous y fier.

7.1. Couches et modules

Les dossiers sont classés par couche selon leur nom, de l’interface utilisateur jusqu’à l’accès aux données. Comme le classement repose sur les noms seulement, le diagramme ne dit rien des appels entre couches.

Mermaid Vue en couches
flowchart TB
  subgraph L_core["Source principale"]
    direction TB
    core_0["(root)<br/>1 fichier"]
  end
Modules et couche principale
ModuleCoucheFichiersTypesExtensions
(root)Source principale113.py

7.2. Modèle C4

Du contexte du système aux déclarations du code. Chaque niveau conserve les limites des sources disponibles.

UML 1 · Contexte du système
1 · Contexte du système

La vue C4 la plus large : qui utilise le projet et sur quels systèmes et stockages externes il s’appuie. Rendu avec uml-mcp.

Source PlantUML
@startuml
!include <C4/C4_Context>
LAYOUT_LEFT_RIGHT()
System(SYS, "bloc", "Mon fork bloc propose un parcours Blender autour du stockage S3 et Mi…")
System_Ext(E0, "AWS")
Rel(SYS, E0, "Appelle")
@enduml

Niveau 2: les sources disponibles ne permettent pas de tracer cette vue.

UML 3 · Composants et couches
3 · Composants et couches

Modules regroupés par couche du code. Les limites indiquent l’organisation, sans affirmer une isolation à l’exécution ni des appels. Rendu avec uml-mcp.

Source PlantUML
@startuml
!include <C4/C4_Component>
LAYOUT_TOP_DOWN()
System_Boundary(SYS, "bloc") {
Boundary(L0, "Source principale", "layer") {
Component(M0_0, "(root)", "Python", "1 fichiers")
}
}
@enduml
UML 4 · Code
4 · Code

Déclarations, champs et méthodes sélectionnés, regroupés par fichier source. Aucun héritage ni appel n’est déduit. Rendu avec uml-mcp.

Source PlantUML
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam roundCorner 10
skinparam defaultFontName Arial
skinparam defaultFontSize 13
skinparam ArrowColor #4e6070
skinparam ArrowFontColor #3d4f5f
skinparam titleFontSize 14
skinparam actorBorderColor #006a62
skinparam actorBackgroundColor #e9f3f4
skinparam usecaseBorderColor #006a62
skinparam usecaseBackgroundColor #e9f3f4
skinparam componentBorderColor #006a62
skinparam componentBackgroundColor #e9f3f4
skinparam interfaceBorderColor #006a62
skinparam interfaceBackgroundColor #ffffff
skinparam nodeBorderColor #4e6070
skinparam nodeBackgroundColor #f4f8fb
skinparam databaseBorderColor #006a62
skinparam databaseBackgroundColor #ffffff
skinparam cloudBorderColor #4e6070
skinparam cloudBackgroundColor #f0f5fa
skinparam artifactBorderColor #006a62
skinparam artifactBackgroundColor #ffffff
skinparam rectangleBorderColor #b0c2d3
skinparam activityBorderColor #006a62
skinparam activityBackgroundColor #e9f3f4
skinparam partitionBorderColor #b0c2d3
skinparam stereotypeCBackgroundColor #ffffff
top to bottom direction
hide empty members
package "bloc" {
object "addon.py" as FN0 {
  get_modules_path()
  append_modules_to_sys_path()
  background_install_packages()
  install_packages()
  execute()
  execute()
}
}
@enduml

7.3. Flux de données

Les appels du diagramme GitDiagram, dans l’ordre où on les rencontre depuis les points d’entrée. GitDiagram produit ce graphe par IA; les chemins de fichiers cités ont été comparés à l’arbre du dépôt.

Mermaid Diagramme de séquence
sequenceDiagram
  autonumber
  participant P0 as Download files
  participant P1 as Cloud client setup
  participant P2 as S3 and MinIO
  participant P3 as Dependency transfer
  participant P4 as Load into scene
  participant P5 as Update and delete
  participant P6 as 3D artist
  participant P7 as Connection preferences
  participant P8 as Integration panel
  participant P9 as Browse and search
  participant P10 as Upload files
  participant P11 as Bucket listing
  P0--)P1: uses connection
  P0->>P2: downloads objects
  P0->>P3: includes
  P0--)P4: loads supported assets
  P5->>P1: uses connection
  P5->>P2: updates or deletes
  P6->>P7: configures
  P6->>P8: uses
  P1->>P2: selects provider
  P4--)P1: downloads asset
  P8->>P9: shows
  P8->>P10: offers
  P8->>P11: offers refresh
  P9->>P11: filters
  P10->>P11: refreshes
  P10--)P1: uses connection
Étapes en texte
  1. Download files vers Cloud client setup uses connection
  2. Download files vers S3 and MinIO downloads objects
  3. Download files vers Dependency transfer includes
  4. Download files vers Load into scene loads supported assets
  5. Update and delete vers Cloud client setup uses connection
  6. Update and delete vers S3 and MinIO updates or deletes
  7. 3D artist vers Connection preferences configures
  8. 3D artist vers Integration panel uses
  9. Cloud client setup vers S3 and MinIO selects provider
  10. Load into scene vers Cloud client setup downloads asset
  11. Integration panel vers Browse and search shows
  12. Integration panel vers Upload files offers
  13. Integration panel vers Bucket listing offers refresh
  14. Browse and search vers Bucket listing filters
  15. Upload files vers Bucket listing refreshes
  16. Upload files vers Cloud client setup uses connection
  17. Upload files vers S3 and MinIO uploads objects
  18. Upload files vers Dependency transfer includes
  19. Bucket listing vers S3 and MinIO lists objects

7.4. Services

7.5. Logique métier

Aucune classe n’a été extraite. Voici les plus gros fichiers source et leurs fonctions.

addon.py
get_modules_path, append_modules_to_sys_path, background_install_packages, install_packages, execute, execute

7.6. Intégrations externes

7.7. Stack et dépendances

Python pyproject.toml 2 à l’exécution

Ouvrir le manifeste

Dépendances externes

2 paquets déclarés (2 à l’exécution, 0 pour le développement) dans pyproject.toml.

Tableau des paquets 2
Dépendances externes
PaquetVersionUsageRôleRegistre
boto3^1.28.0exécutionServices infonuagiquespypi.org
minio^7.1.0exécutionServices infonuagiquespypi.org

7.8. Pipeline CI/CD

Aucun pipeline CI/CD dans le dépôt. Le code se construit et se lance à la main, comme décrit plus haut.

7.9. Déploiement

Mermaid Schéma de déploiement
flowchart LR
  repo[("Dépôt GitHub")]
  local["Poste local<br/>Python"]
  repo -->|"cloner et lancer"| local

Le dépôt ne contient ni Dockerfile, ni fichier Compose, ni configuration d’hébergement : le code s’exécute sur le poste qui le clone.

7.10. Supervision

Ce que le code consigne, mesure et expose pour savoir s’il fonctionne.

Rien trouvé pour: Interface publique, Interface privée, Entités, Base de données, Sécurité, Tests automatisés.

8. Types et structure des fichiers

13 types déclarés, dont 12 dans l’aperçu des relations de base.

Diagramme des types
classDiagram
direction TB
class t1bd2f38d1df9["CloudConnection"] {
}
class tc6162ba17c1d["CLOUD_OT_ConnectionAdd"] {
  execute()
}
class tba1a8c923798["CLOUD_OT_ConnectionRemove"] {
  execute()
}
class t413b380bcb71["CloudIntegrationPreferences"] {
  draw()
}
class ta7f72565c22e["CloudIntegrationPanel"] {
  draw()
}
class t2469e84e3752["CloudToggleFolderOperator"] {
  execute()
}
class t85310a14a3c5["CloudFilePropertyGroup"] {
}
class t27a5a06619a9["CloudUpdateFileListOperator"] {
  execute()
}
class t7846b33f88df["CloudUploadFileOperator"] {
  execute()
}
class t9c44c9d5eca5["CloudLoadFileOperator"] {
  execute()
}
class t7fe9626f4380["CloudDownloadFileOperator"] {
  execute()
}
class t13452e91ae41["CloudDeleteFileOperator"] {
  execute()
}
class b7fc08f11cd57["bpy.types.PropertyGroup"] {
  <<unresolved_base>>
}
b7fc08f11cd57 <|-- t1bd2f38d1df9
class bb1aa8a371273["bpy.types.Operator"] {
  <<unresolved_base>>
}
bb1aa8a371273 <|-- tc6162ba17c1d
bb1aa8a371273 <|-- tba1a8c923798
class b4788926edee8["bpy.types.AddonPreferences"] {
  <<unresolved_base>>
}
b4788926edee8 <|-- t413b380bcb71
class bf0eb7a162f8e["bpy.types.Panel"] {
  <<unresolved_base>>
}
bf0eb7a162f8e <|-- ta7f72565c22e
bb1aa8a371273 <|-- t2469e84e3752
b7fc08f11cd57 <|-- t85310a14a3c5
bb1aa8a371273 <|-- t27a5a06619a9
bb1aa8a371273 <|-- t7846b33f88df
bb1aa8a371273 <|-- t9c44c9d5eca5
bb1aa8a371273 <|-- t7fe9626f4380
bb1aa8a371273 <|-- t13452e91ae41

Les bases non résolues restent identifiées; les signatures complètes ne sont pas reconstruites.

9. Référence

3 / 3 fichiers admissibles lus (5 dans l’arbre); 0 trop volumineux, 0 échec de lecture et 0 diagnostic de syntaxe.

Ce que couvre l’analyse

Les dossiers connus de dépendances et de compilation, les fichiers d’identifiants et les binaires sont exclus. La collecte couvre les README, les manifestes reconnus et les fichiers source pris en charge.

Les statistiques Linguist couvrent l’ensemble du dépôt et peuvent inclure d’autres langages.

11. Fichiers à lire 2

12. Glossaire

Dépôt

Les fichiers source, la configuration et l’historique versionné d’un projet.

README

Le document d’entrée du dépôt, qui présente généralement son rôle et son installation.

Dépendance

Une bibliothèque, un outil ou un service nécessaire à la compilation ou à l’exécution d’un composant.

API

Une interface par laquelle des composants logiciels échangent des requêtes et des résultats. Une API n’utilise pas nécessairement HTTP.

Volume et montage de dossier

Un volume est un stockage géré par la plateforme de conteneurs ; un montage de dossier expose un chemin de l’hôte dans un conteneur.

Intégration continue

Des vérifications automatiques lors des changements de source, comme la compilation, les tests et l’analyse statique. Elles ne couvrent que ce qu’elles vérifient.

Fork

Un dépôt distinct dérivé d’un autre projet. Une modification du fork ne devient pas automatiquement une modification du projet amont.

13. Références

  1. antoinebou12. (2026, 5 novembre). bloc. [Software repository] github.com.
  2. antoinebou12. (2026, 5 novembre). bloc: README. [Repository documentation] github.com.
  3. antoinebou12. (2026, 5 novembre). addon.py. [Source file] github.com.
  4. antoinebou12. (2026, 5 novembre). blender_manifest.toml. [Source file] github.com.
  5. Boucher, A. (2026, 23 octobre). Mon fork bloc : parcourir S3 et MinIO depuis Blender. [Project article] antoineboucher.info.
  6. Boucher, A. (2026, 23 octobre). bloc : Le stockage objet dans Blender. [Project article] antoineboucher.info.

Les sources sans date de publication indiquent la date de leur dernière vérification, le 5 novembre 2026. Les liens des fichiers conservent la révision inspectée lorsqu’elle est disponible.