Introducing ButtleOFX, free node-based compositor

Alexandre Prokoudine 5. Aug, 2013
26 Comments

A group of French students is completing the first stage of implementing a new free node-based compositing application, ButtleOFX.

Let's face it: creating a free node compositor seems to be quite a challenge, both in terms of programming and project management. Previous attempts, Ramen and Synapse, weren't exactly successful. Quite a few people even voiced an opinion that OFX support should be "just" added to Blender to fix it once and for all. And now there's a new kid on the block: ButtleOFX.

The project was started in October 2012 by 5 students of the IMAC Engineering School (France) as part of a 6 months tutored project.

ButtleOFX has a rather solid foundation: the open source TuttleOFX framework is based the OpenFX standard. The framework is actively maintained by a French visual effects studio Mikros Image, with initial contributions from Duran Duboi and HD3D SAS.

You can enable captions for subtitles in English

The main advantage of relying on TuttleOFX is compatibility with pretty much all available OpenFX plugins. For instance, the team successfully tried using Sapphire from within their application.

TuttleOFX itself comes with its own pack of OFX plugins: various color correction operations based on Color Transform Language, OpenColorIO LUT etc., all sorts of useful filters, geometric distortions, and text objects support.

For input and output ButtleOFX uses a variety of 3rd party libraries via its own internal plugins system: OpenImageIO, ImageMagick, LibRaw, OpenJPEG, OpenEXR, TurboJPEG. It also has its own code for supporting DPX files. The video plugin is based on the Libav library. The user interface is created with QML, Qt's declarative language.

And speaking of solid foundation, the students — Arthur Tourneret, Aurélien Greffard, Clément Champetier, Elisa Prana, and Xochitl Florimont — are mentored by Fabien Castan, a member of the TuttleOFX team.

We asked the team a few questions.

How much prior programming experience for digital imaging or special effects did you have before starting to work on ButtleOFX?

Before starting the project we had no such experience, we didn’t even know what compositing was! But we found it very interesting, it was a great opportunity to research post-production techniques.

Did you have much interaction with the TuttleOFX team?

Except for Fabien, we didn’t talk to the TuttleOFX team much, but we know they followed our work throughout the year. We recently had the opportunity to meet the team and we will certainly stay in touch in the future!

What about VFX studios? Did you ask any for consulting you on the feature set, usability etc.?

No, we were free to choose the features we wanted to implement. It was part of the first steps of the project, after carrying out a competitive analysis. So we had the chance to decide on both the user interface and the features we wanted for ButtleOFX.

How far in the future is your work planned?

A new team of students will most likely take over the project next year (for 6 months starting from October 2013), in order to improve ButtleOFX and implement new features.

Besides, the TuttleOFX framework is continuously developed by another team, comprised of industry professionals.

Will Fabien mentor the next group of students?

Yes, Fabien will submit a new project to the next year students so they can take over our work. He will supervise their work like he did for us.

How much secure is that in terms of project maintenance and further development? After all, having a dedicated team is typically decisive.

It is 90% secure. The future team will have time to focus on this project, so that will ensure the development of ButtleOFX.

We will be in our last year of studies, so we will have many other projects to work on, and very little time for ButtleOFX. However, we will be studying in the same school, so if the new team has any questions about our code, we will be there to help. And, of course, Fabien will be leading the project.

What are the topmost priorities regarding further development?

The current version of ButtleOFX does not cover all TuttleOFX tools yet, but we aim for complete support. E.g. we can currently apply effects on images and videos without keyframes. So the next main step is to implement this feature and provide a timeline.

Another feature we need to improve is the viewer: at the moment it is very basic, but we plan to leverage the power of OpenGL to make it more useful.

Will this work be done by the current team or the next team?

It is certain that the future team will implement new features, but they will have to discuss and decide on their own objectives in October. The keyframe management will probably be one of the first things given that it is essential for a compositing application.

What are your personal experiences from working on this project?

It was interesting in every way. From technical point of view, we discovered the QML and Python languages which are great! It was also our first large project, so we have improved various skills: software architecture design, programming, group work.

It was interesting to collaborate with the other students of the team, we had to divide up tasks, and we could see the project progressing while everyone was working on separate parts of the application.

It was difficult in the beginning to start from a big existing project (TuttleOFX), but so enriching! Working in an open source environment is also very stimulating, because during development we knew that people supported us.

Finally, it was a first approach to the world of post-production!

Is it something you would be interested to do in the future professionally?

In the future, we might like to continue in this field. We will see next year, when we graduate from our school!

The team is currently working on providing builds for testing by a wider audience. You can follow the team's blog for related news, or try building everything yourself. In the latter case you will need Git repo checkouts for both TuttleOFX and ButtleOFX.

I’ve just learned about the existence of OpenFX. Researching a bit, I can’t find any mention of Makros Image on the openeffects.org website and the most recent code in github or sourceforge is about one year old.

I do hope this evolves into something really really cool. what would be great if they looked at what are the most needed features for composting software in the industry and make it fill those so more people would be interested in this interesting project and who knows, maybe it will reach such giant level as Nuke :) This is what I wish for people involved in this project, to do something as fantastic as FX Foundry Nuke.

@Jakes Dohr, Gimp is not a compositing software. That’s not the same philosophy.
In compositing softwares, the user directly manipulates the graph. The main goal is to manipulate videos or images sequences instead of still images.

@Danas, TuttleOFX has been created by a group of industrials and the development is drived by graphic artists requests. The next year, we will provide all things to install the application and your feedback will be welcomed.

@Aleve Sicofante, Yes, Mikros Image is not part of the “Open Effects Association”. Mikros Image is one of the creator of TuttleOFX (http://www.tuttleofx.org) which is based on the OpenFX protocol.

I have a clearer idea now. Just don’t quite get what’s the purpose of ButtleOFX. Is it educational? Is it about training students to maybe select a few to work on TuttleOFX? I mean, “the real thing” is still TuttleOFX, right?

I lead a mailing list of CG and post-production professionals in Spain and I’d like to talk to them about TuttleOFX. I just want to have a clearer idea of what’s the role of ButtleOFX.

Yes, TuttleOFX is the “real project”. It could be used as a C++ or python library or from command line.

ButtleOFX is currently experimental. Our main goal with Buttle is to allow our users to create their TuttleOFX conversion graph scripts from a GUI.
All people from the team dream to create a compositing software, but there is a long road to achieve that. Buttle is the first step. But we need to meet new passionnate people to make it possible.

ButtleOFX could also help to explain what is TuttleOFX and what is OpenFX. I hope that making a first open source OpenFX host could help to see this great plugin format supported in other open source softwares, like Blender, Gimp (gegl), KDEnlive, OpenShot, Darktable, etc. It could be a great way to federate developments between the multitude of open source softwares that manipulate images.

Yes, TuttleOFX is the engine. You could use it as a library or from command line.

And ButtleOFX is an interactive application build around the TuttleOFX engine.

All plugins from the TuttleOFX project are OpenFX plugins, so they are available in many hosts like nuke, scratch, etc.
You could also to the opposite and load other OpenFX plugins, like GenArts plugins, in the TuttleOFX engine. This allows you to write batch operations from command line or python scripts using GenArts plugins.

I have a clearer plan currently. simply don’t quite get what’s the aim of ButtleOFX. Is it educational? Is it concerning coaching students to perhaps choose many to figure on TuttleOFX? I mean, “the real thing” continues to be TuttleOFX, right?

I lead a list of CG and post-production professionals in Kingdom of Spain and I’d prefer to discuss with them concerning TuttleOFX. I simply wish to possess a clearer plan of what’s the role of ButtleOFX.

The difference is that blender is released under GPL, so you can’t communicate with commercial plugins, scripts, etc.
ButtleOFX is released under LGPL, and is based on the OpenFX standard widely used in the industry. So it allows you to use commercial plugins, like those from GenArt, RevisionFX, The Foundry, etc.

“is released under GPL, so you can’t communicate with commercial plugins, scripts, etc.”

Huh? AFAIK the GPL doesn’t forbid that. It forbids compiling code against closed source libraries, but of course you can “communicate” with commercial plugins or scripts. There are numerous ways to do that. Think of the GPL kernel and the proprietary Nvidia or AMD drivers. That’s as “deep” as it gets. Up from there, plugins and scripts are easy as pie.

To communicate you should run them as autonomous programs and use intermediate datas… But that’s really bad to do that.

“It depends on how the program invokes its plug-ins. If the program uses fork and exec to invoke plug-ins, then the plug-ins are separate programs, so the license for the main program makes no requirements for them.”

From a guy who want to move to LGPL:
“We’re looking at making Blender capable
(legally) of using third-party distributed closed-source plugins.”

From a guy who want to continue with GPL:
“If companies have no choice but to release their extensions as free software, then that’s fantastic. Encouraging it is exactly what the GPL is supposed to do.”