Skip to content
← All articles
Project introduction

My bloc fork: browsing S3 and MinIO from Blender

Listen to the audio story

Browsing S3 from inside Blender · 1:57 · AI-written script, synthetic voices

Transcript

Ava: Imagine an artist in Blender who needs a mesh that lives in a cloud bucket. Do they really have to leave the app, download it, and import it by hand?

Andrew: That's what most of us do. Is there a better way?

Ava: Antoine has a fork called bloc that explores exactly that: a Blender panel for browsing assets in AWS S3 and MinIO. It's a fork of an existing add-on by another author, and he keeps that credit.

Andrew: So how does the panel know which storage to talk to?

Ava: Through connections. Each one has a provider, an endpoint, a bucket and a region. Preferences can hold several of them, with one marked active, and the client setup picks the S3 or MinIO path from that choice.

Andrew: And object storage doesn't really have folders, right?

Ava: Right, it has keys. The add-on splits those keys on the slash and builds a nested structure, so the panel can show a hierarchy without pretending it's a local file system.

Andrew: What about finding things?

Ava: There's fuzzy search with RapidFuzz. It scores file names and path pieces, favors direct matches, and filters for scenes, meshes, images and materials.

Andrew: Okay. And import is just download and done?

Ava: Not quite, and this is the detail Antoine stresses. Downloading and importing are two different steps. After the download, a loader picks an importer for STL, OBJ, PLY or USD variants. Anything else gets rejected with a message.

Andrew: So the listing can work while the import fails.

Ava: Exactly. He also notes a limit: the code uses one S3 listing request, so very large buckets would need pagination.

Andrew: I like that he's upfront about the edges.

Ava: Same for scope. The fork was ten commits ahead and five behind upstream when he checked, and that doesn't mean upstream accepted anything. The full write-up has the diagram of the browse and import paths.

My bloc fork: browsing S3 and MinIO from Blender
Table of contents

My bloc repository[1] is a fork of MrKuros/Blender-Cloud-Storage[2]. It keeps the upstream author credit and explores a Blender panel for browsing assets in AWS S3 and MinIO.

1. The browsing and import paths

flowchart LR
  Storage["S3 or MinIO"] --> Listing["Folder listing"]
  Listing --> Panel["Blender panel"]
  Panel --> Download["Download selected asset"]
  Download --> Import["Local Blender importer"]

Listing creates the panel’s folder view; loading an asset downloads its bytes and invokes a local importer. A listing refresh can therefore succeed while an import fails on an unsupported format. The background refresh hands UI updates back through Blender timers instead of treating the storage request as a UI operation.

Read the architecture note with the connection and import boundaries.

2. Make the connection explicit

addon.py[3] defines a CloudConnection property group with a provider, endpoint, bucket and region. Preferences hold multiple connections and an active connection index. The client setup chooses the S3 or MinIO path from that selection.

This is the part that interests me as both graphics and platform work: the artist works inside Blender, while the add-on translates those actions into object-storage operations.

3. Turn object names into folders

Object storage uses keys. The refresh operator splits those keys on / and builds a nested dictionary for the panel. Folder expansion is tracked separately, so the UI can browse a hierarchy without pretending it is a local filesystem.

CloudSearchManager adds fuzzy matching with RapidFuzz. It scores filenames and path segments, gives direct substring matches priority and supports filters for scenes, meshes, images and materials.

4. Downloading and importing are different actions

The download helper saves an object to a temporary local path. The load operator then selects a Blender importer for STL, OBJ, PLY or USD variants. Other extensions are rejected with a message. A successful transfer alone does not mean Blender has imported a usable object.

The upload-current-file operator sends the saved .blend file. Although the README discusses dependencies, I would verify texture packaging and relative paths before relying on this path to move a complete scene.

5. Keep the fork’s scope visible

The public upstream comparison[4] showed 10 commits ahead and 5 behind on October 23, 2026. The changed files include the add-on, packaging metadata and README. That describes repository history; it does not establish that upstream accepted those changes.

The source also uses a single S3 list_objects_v2 request, so buckets beyond one response need pagination work. These are the kinds of small workflow boundaries I want to keep visible when revisiting the project.

References

  1. antoinebou12. (). bloc. [Software repository] github.com.
  2. MrKuros. (). Blender-Cloud-Storage. [Software repository] github.com.
  3. antoinebou12. (). addon.py. [Source file or documentation] github.com.
  4. antoinebou12. (). upstream comparison. [Source file or documentation] github.com.

References use this article’s publication date.