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.
- Langages
- 1Répartition du code
- 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.
| Langage | % | Octets |
|---|---|---|
| Python | 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.
- 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
- Installer l’extension dans Edit > Preferences > Add-ons ; au premier chargement, elle installe boto3, minio et rapidfuzz avec pip.
- Dans les préférences, ajouter une connexion MinIO avec URL, clés et nom du compartiment.
- Ouvrir l’onglet Cloud dans la barre latérale de la vue 3D et cliquer sur Refresh File List.
- Taper une partie du nom dans Search pour filtrer la liste.
- 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:
- Download the Add-on
- Clone the repository:
- 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”.
Configuration et utilisation
4.2. Setup
README.md
Before using the add-on, configure your AWS credentials:
- Open Blender Preferences
- Go to Edit > Preferences > Add-ons > Blender S3 Integration.
- Enter AWS Credentials
- In the add-on preferences, enter your AWS Access Key, Secret Key, and the region where your S3 bucket is located.
- Set Your S3 Bucket Name
- Enter the name of your S3 bucket in the preferences.
4.3. Usage
README.md
Once installed and configured, use the add-on from the Blender interface:
- Open the S3 Integration Panel
- Go to View3D > Tool Shelf > S3 Integration panel to access the features.
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.
4.5. Updated Features (v3.0)
README.md
- Minio and S3 support multiple endpoints
- Folder inside the Panel
- Search
Développement et contributions
4.6. Contributing
README.md
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.
Panneau Blender
- Vers Connexion active
- Depuis Clés et arborescence
Connexion active
- Depuis Panneau Blender
- Vers API S3 ou MinIO
API S3 ou MinIO
- Depuis Connexion active
- Vers Clés et arborescence
- Vers Fichier temporaire
Clés et arborescence
- Depuis API S3 ou MinIO
- Vers Panneau Blender
Fichier temporaire
- Depuis API S3 ou MinIO
- Vers Importateur Blender
Importateur Blender
- Depuis Fichier temporaire
Mermaid Diagramme interactif
Vue générale des composants et des échanges vérifiés dans le dépôt.

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
| Module | Couche | Fichiers | Types | Extensions |
|---|---|---|---|---|
(root) | Source principale | 1 | 13 | .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
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
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
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
- Download files vers Cloud client setup uses connection
- Download files vers S3 and MinIO downloads objects
- Download files vers Dependency transfer includes
- Download files vers Load into scene loads supported assets
- Update and delete vers Cloud client setup uses connection
- Update and delete vers S3 and MinIO updates or deletes
- 3D artist vers Connection preferences configures
- 3D artist vers Integration panel uses
- Cloud client setup vers S3 and MinIO selects provider
- Load into scene vers Cloud client setup downloads asset
- Integration panel vers Browse and search shows
- Integration panel vers Upload files offers
- Integration panel vers Bucket listing offers refresh
- Browse and search vers Bucket listing filters
- Upload files vers Bucket listing refreshes
- Upload files vers Cloud client setup uses connection
- Upload files vers S3 and MinIO uploads objects
- Upload files vers Dependency transfer includes
- Bucket listing vers S3 and MinIO lists objects
7.4. Services
Service 1
CloudSearchManagerfuzzy_match, filter_by_type, search
7.5. Logique métier
Aucune classe n’a été extraite. Voici les plus gros fichiers source et leurs fonctions.
addon.pyget_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
Dépendances externes
2 paquets déclarés (2 à l’exécution, 0 pour le développement) dans pyproject.toml.
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
- antoinebou12. (2026, 5 novembre). bloc. [Software repository] github.com.
- antoinebou12. (2026, 5 novembre). bloc: README. [Repository documentation] github.com.
- antoinebou12. (2026, 5 novembre). addon.py. [Source file] github.com.
- antoinebou12. (2026, 5 novembre). blender_manifest.toml. [Source file] github.com.
- Boucher, A. (2026, 23 octobre). Mon fork bloc : parcourir S3 et MinIO depuis Blender. [Project article] antoineboucher.info.
- 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.