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 du dépôtPython 100%1
Parts calculées à partir des octets GitHub Linguist.
| Langage | % | Octets |
|---|---|---|
| Python | 24 284 |
Aperçu
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.
Cas d’usage
Synchronisation cloud d'assets 3D, sauvegardes et flux de rendu distribués.
Démarrage
Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.
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
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
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.
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
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.
Updated Features (v3.0)
README.md
- Minio and S3 support multiple endpoints
- Folder inside the Panel
- Search
Développement et contributions
Contributing
README.md
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.
Architecture
Les composants et leurs liens restent lisibles en texte. Le diagramme ajoute une vue interactive.
- Panneau Blender
- Connexion active
- API S3 ou MinIO
- Clés et arborescence
- Fichier temporaire
- Importateur Blender
Liens vérifiés dans le dépôt.
Mermaid Diagramme interactif (chargement à l’ouverture)
Vue générale des composants et des échanges vérifiés dans le dépôt.

flowchart LR
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(("3D artist"))
node_artist -->|"configures"| node_preferences
node_artist -->|"uses"| node_panel
node_panel -->|"shows"| node_browse
node_panel -->|"offers"| node_upload
node_panel -->|"offers refresh"| node_list
node_browse -->|"filters"| node_list
node_upload -->|"refreshes"| node_list
node_upload -.->|"uses connection"| node_client
node_download -.->|"uses connection"| node_client
node_manage -->|"uses connection"| node_client
node_scene -.->|"downloads asset"| node_client
node_client -->|"selects provider"| node_providers
node_list -->|"lists objects"| node_providers
node_upload -->|"uploads objects"| node_providers
node_download -->|"downloads objects"| node_providers
node_manage -->|"updates or deletes"| node_providers
node_upload -->|"includes"| node_dependencies
node_download -->|"includes"| node_dependencies
node_download -.->|"loads supported assets"| node_scene
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 toneIndigoUn 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 ou le README
- 19/19
Version texte du diagramme
- Panneau Blender → Connexion active
- Connexion active → API S3 ou MinIO
- API S3 ou MinIO → Clés et arborescence
- Clés et arborescence → Panneau Blender
- API S3 ou MinIO → Fichier temporaire
- Fichier temporaire → Importateur Blender
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.
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.
Index des types
CloudConnection(class) ·addon.py:79Bases déclarées :
bpy.types.PropertyGroup.CLOUD_OT_ConnectionAdd(class) ·addon.py:91Méthodes dans l’aperçu :
execute.Bases déclarées :
bpy.types.Operator.CLOUD_OT_ConnectionRemove(class) ·addon.py:101Méthodes dans l’aperçu :
execute.Bases déclarées :
bpy.types.Operator.CloudIntegrationPreferences(class) ·addon.py:142Méthodes dans l’aperçu :
draw.Bases déclarées :
bpy.types.AddonPreferences.CloudIntegrationPanel(class) ·addon.py:169Méthodes dans l’aperçu :
draw.Bases déclarées :
bpy.types.Panel.CloudToggleFolderOperator(class) ·addon.py:268Méthodes dans l’aperçu :
execute.Bases déclarées :
bpy.types.Operator.CloudFilePropertyGroup(class) ·addon.py:282Bases déclarées :
bpy.types.PropertyGroup.CloudUpdateFileListOperator(class) ·addon.py:300Méthodes dans l’aperçu :
execute.Bases déclarées :
bpy.types.Operator.CloudUploadFileOperator(class) ·addon.py:328Méthodes dans l’aperçu :
execute.Bases déclarées :
bpy.types.Operator.CloudLoadFileOperator(class) ·addon.py:341Méthodes dans l’aperçu :
execute.Bases déclarées :
bpy.types.Operator.CloudDownloadFileOperator(class) ·addon.py:388Méthodes dans l’aperçu :
execute.Bases déclarées :
bpy.types.Operator.CloudDeleteFileOperator(class) ·addon.py:413Méthodes dans l’aperçu :
execute.Bases déclarées :
bpy.types.Operator.
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.
Carte des fichiers
flowchart TD
root["bloc"]
f0["addon.py"]
root --> f0
f1["README.md"]
root --> f1
f2["pyproject.toml"]
root --> f2
Fichiers à lire 2
Références
- GitHubDépôt source
- READMEDocumentation du dépôt
- Mon fork bloc : parcourir S3 et MinIO depuis BlenderArticle du blog