We’ve started using some small Python utility scripts to speed up our work in Blender.
We’ve put them on GitHub with a GPLv3 license: https://github.com/xorgol/e-muse_blender_utility_scripts/
Tag: open source
-
Blender utility scripts
-
Linkpost: Botticelli v Warhol – 2025 Cultural Heritage Conference in Florence
IP Kat (which is very much the blog to follow on legal news regarding so called intellectual property) published a 2 part guest post summarizing this conference in Florence:
-
Linkpost: 10 years of pomological watercolors
10 years ago, Parker Higgins called for the publishing of a collection of pomological watercolors, click through for the details (but this is pretty famous in my corner of the internet): https://parkerhiggins.net/2025/04/10-years-of-pomological-watercolors
What struck me while reading the 10-year-anniversary post was this quote:
Through a handful of FOIA requests I’d learned that the images had been meticulously digitized and put online for purchase, but that less than 100 pictures had been sold that way — not nearly enough to justify the paywall.
We previously wrote about the ongoing attempts at selling access to cultural heritage digitalisations that have long entered the public domain, as long as they’re owned by museums.
The fundamental issue is that while it might be nice to generate revenue both for the institutions conserving the artifacts, and for the people doing the digitalisation (that’s us, ideally), there is simply not enough willingness to pay.
There is also the moral question of creating a class of works which never truly join the public domain, but I’ve found it quite hard to argue with people about this, apparently the public domain is not a self-evident good thing for everyone.
And of course there’s the latest hype, AI, which allows people both to attempt to profit from the public domain (by using it to train their models) and to trivially bypass paywalls (by just generating another image). This complicates the argument for the public domain, at least for those whose benefits are not self-evident.
Yet, those benefits are there, and they are great.
-
New mesh reduction tools
Holo Lab released this new Blender add-on that does a pretty job at reducing most photogrammetry models: https://github.com/HoloLabInc/ModerateWeightReductionTools
It does fail on the more topologically challenged ones, but that is to be expected. As an example this 25MB model:

Was reduced to this, which is just 295kB.

I did remove the black background by hand, though.
The interesting thing is that it added Sharps to edges automatically, you can see them in cyan.

Of course the other interesting announcements in this field were Nvidia’s Meshtron and Microsoft’s Trellis (try it on hugginface), both of which do really interesting mesh generation.
Of course for our requirements we cannot simply throw generative AI at the problem and hope for the best, we need to carefully represent the actual objects. But just as a try, we did try to throw an image of a bas-relief at Trellis. It created a plausible (but incorrect) result with a low-res texture. We tried throwing the original image on it as a texture, and it almost looked like it worked, until we tried moving the point of view.
This is the original photo, it’s Il Lavoro by Pietro Palmisano, from the BCC Arte & Cultura catalogue.

Generated model, with no texture:

With the AI-generated texture

With the original texture applied:



It’s simultaneously very impressive, and not any good. We could try to salvage it by sculpting the most egregious parts, and we could do way better on the texture mapping.

The geometry is really quite dense, we could try combining Trellis with Moderate Weight Reduction Tools.

That really broke down. The geometry became visibly spiky, but the texture is just all wrong, it did not expect our “Project from View” trick.

-
Tip: use Tree to generate HTML directory listings
Part of our job in the BCC Arte & Cultura project is to provide the “high fidelity” visualizations for each artwork. For some that means one of our 3D scans, for others it’s simply a zoomable interface. Our clients are making a “standard” website and simply linking to our server for the high fidelity version. We are not done processing all the artworks, but we can provide the URL in advance, they are all ordered by a bank/author-title schema. I wrote a script for creating the folder structure, but then I wanted to provide a single page listing all the URLs to our clients.
With a bit of research I found out a oneliner using the tree command.
You can try the result on https://e-muse.it/bccaec
“opere” is just the relative path between the location where I’m running the command and the directory structure I wanted to transverse.
tree opere -d -H "https://e-muse.it/bccaec" > index.html -
AI News: Music generation, Energy consumption, learn the basics
Music generation
There are several use-cases for algorithmically generating music, and indeed there is a long history of both hardware and software in this field. Back in the 80s there was even a significant professional backlash against MIDI and drum machines.
For example, it would be quite handy to generate anechoic sounds for acoustics listening tests, so that they can be convolved with the Impulse Responses of simulated environments.
The current mania is randomly generated media, which is an offshoot of a longer-standing mania for using media as filler instead of as a signifier. A lot of what we see and read is just Lorem Ipsum: posts need an image to do well, so people just slap a random image in them. It’s algorithmic garbage causing other algorithmic garbage. One of our deepest worries regarding our own work is that we could be hired to do it just because immersive technology sounds cool, and not because it genuinely adds value to the project at hand.
Anyway, of course there are going to be attempts at using the newest technology for generating music, and here are three of them:
- Suno AI: this one definitely got the most attention
- Udio
- Stable Audio 2.0
There is also an OpenAI product, but it’s not generally available.
The increased repetitiveness in commercial music is definitely not an hindrance for these efforts.
Fundamentally, all of the do what they say they will do, but we do wonder why they focus on directly generating sounds instead of generating MIDI.
Energy consumption
Check out this Ars Technica syndacation of a Financial Times article: https://arstechnica.com/ai/2024/04/power-hungry-ai-is-putting-the-hurt-on-global-electricity-supply/
This is fundamentally an effect of computing getting increasingly centralised in massive data centers (just think of government over-reliance on Microsoft), which has noticeable economies of scale.
With AI there is also a significant divergence between the cost of executing the software, and the cost of training the software. The current AI boom is largely focused on just throwing resources at relatively “dumb” approaches, which is working better than it could be reasonably be expected for now, but that will inevitably run into resource limitations. For now, that bottleneck is energy, which is very bad news in environmental terms.
The silver lining is that if we managed to make companies pay for their environmental impact we would make smarter, more correct, approaches even more competitive.
Learn the basics
The always excellent 3Blue1Brown has released two new videos in his Deep Learning series, explaining Transformers. Here is a link to the whole series of videos: https://www.youtube.com/watch?v=aircAruvnKk&list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi&index=1
-
TIL-post: point cloud processing
We’re working on a small archeo-acoustics project, whose starting point is a LiDAR-obtained point cloud in LAS format. This is the first time we’ve worked with this kind of data, so I’m writing down the data processing steps.
There is a complete tutorial on handling point clouds in Blender by Florent Poux: https://youtu.be/DCkFhHNeSc0
In order to visualize the data, my first attempt was using Blender, with this plugin: https://github.com/nittanygeek/LiDAR-Importer
You only need to pay a bit of attention about the Python path while installing it, especially if you have multiple versions installed, but the provided instructions are perfect. We were able to see points in Blender, and to get a general idea for the shape of the cave, but getting from there to an actual mesh is non-trivial.
Instead, we found a short tutorial for doing the same thing using CloudCompare.
As a super short summary: open your point cloud in CloudCompare, select it, convert it to a mesh by going to Plugins>PoissonRecon. You can also choose between the color actually captured for each point, or this density heatmap: red is maximum information density, blue is the minimum.
In the next steps we’ll need to convert the mesh to quads (using Blender), import the model into Ramsete, then assign materials to each face and run the simulation. In order to properly calibrate the model we’ll need to know the specifics of each material, or ideally even perform actual acoustics measurements, like we did for the Tindari paper.
-

TIL: minimal PWA setup
Our webdev approach tends towards the minimal, we’re allergic to leaky abstractions. Even using WordPress for this blog is mostly motivated by learning more about such a popular system, for everything else we use good old HTML + CSS + JS, served by a good old Apache web server.
PWAs (Progressive Web Apps) are websites which can be installed on a user’s device, and that can even be listed in app stores. Our research indicates that a certain percentage of users search their app stores before searching on the web. This is honestly hard to comprehend, but that does not mean that we don’t want to serve those users. Most people building PWAs use JavaScript frameworks, like React, Vue, Angular, Flutter, and just so many others.
We’re deeply suspicious of those framework. It is certainly possible to use them well, but the examples of their misuse, and of people learning them before learning actual web development, and consequently perpetuating terrible, unaccessible, practices, are just too widespread to ignore.
Luckily, we don’t have to get our hands dirty to get the benefits of PWAs, we just need to add a manifest and a service worker. We don’t even need to actually write them ourselves! We can just install PWABuilder Studio for Visual Studio code, open the folder for our web app, and run a couple of commands.
Specifically, press Ctrl+Shift+P to open the command Palette, write PWA to find the relevant commands, and then run PWA Builder Studio: Generate Web Manifest. This will generate a manifest.json file, in which you’ll have to specify your app name, canonical URL, icon, and so on.
Then run PWA Builder Studio: Generate Service Worker to enable offline functionality.
You can test your results as soon as you’ve uploaded your files to a web server of your choice, we tried with the demo of an audio-guide product that we’re building. If you insert the URL of your web app into the PWABuilder homepage you can obtain a report card, and you can download packages that can be submitted to the main app stores (Windows, Android, iOS, Meta Quest).
And that’s it, the only question is how to communicate the new functionality to your users. Let us know if you have suggestions on that front 😀
-
AI Linkpost
https://news.ycombinator.com/item?id=39499207 Hallucinations are inevitable
Opus gets a ML upgrade: https://news.ycombinator.com/item?id=39593256
App for chatting with local AI: https://news.ycombinator.com/item?id=39532367
The Era of 1-bit LLMs: ternary parameters for cost-effective computing
https://stratechery.com/2024/aggregators-ai-risk/
https://www.theverge.com/2024/2/21/24078610/google-gemma-gemini-small-ai-model-open-source
https://www.theverge.com/24054603/chatbot-chatgpt-eliza-history-ai-assistants-video
You can now train a 70b language model at home: https://www.answer.ai/posts/2024-03-06-fsdp-qlora.html
The Pile is a 825 GiB diverse, open source language modelling data set that consists of 22 smaller, high-quality datasets combined together.: https://pile.eleuther.ai/
https://thoughtbot.com/blog/deploy-llm-the-naive-ways
https://www.yitay.net/blog/training-great-llms-entirely-from-ground-zero-in-the-wilderness