Hacking Blender UI and making it work like Maya UI (a proposed idea)

Recently, I've been contacted by a government-funded open-source advocacy organization in Thailand. They asked me if I could make Blender user interface work like Maya's.

Blender is an open-source 3D modeling program. It is super fast but well-known for having an anarchist user interface. Some may argue that Blender UI presents a unique user interaction method for a 3D program, but, despite all arguments, Blender is really really hard to master by a person with a background of using Maya.

This offered job is challenging, but with all the projects I've currently been tied up, I don't think I can afford starting a new project anytime soon. So, here is my idea of making a new interface for Blender in case anyone in this world is interested to do so. (This explains why this post is in English.)

As far as I have been thinking, there are two ways to create the new interface, which may or may not work.

The first way is to do it with C. I believe it is not an easy job to make the current Blender UI customizable at a level that it can easily mimic the Maya interface. Blender UI has its own goods and bads. Touching it from inside is certainly not a smart thing to do, especially when you want a Maya interface out of it.

So, the far easier way to do it is to write the new one in parallel with the current Blender UI. From Blender Architecture , it appears that the core developers separate the UI from the rest of the system nicely. As such, it is possible to create a new interface in unison with the official one.

Developing a new interface with C is a long path to go, but it will surely turn out to be a more usable one. If anyone wants to take the new interface development seriously. This is the way to do.

The second way to do it is to create the UI with Python. This way is more of the spirit of hacking rather than developing because the outcome program will not perform as fast as a C-based one. Also, it may be bound to certain limitations. Nevertheless, one can create a usable UI in less time with Python.

Blender embeds Python as its scripting language. While the Python interpreter in Blender can automate much of the work inside Blender, it can also access external libraries. With this capability, we are good to go in using Blender in combination with external Python libraries.

Here is my idea. We can use wxPython to create the core interface. Using wxPython is certainly the fastest way to develop a cross-platform UI. However, making the Python interpreter in Blender be able to access wxPython and related libraries is still a thing to figure out, but I believe it is possible.

Next, we can use PyOpenGL to draw “scratch” graphics inside the new UI windows. When we want a real rendering, we let the Blender engine do it. With the Python way, we can have the Maya-alike interface for Blender in no time.

Be warned, this is an absolutely superficial idea from a guy who doesn't have much experiences on developing graphics-intensive applications. Anyway, it might be a good start. I don't have time to investigate the idea further. So, if anyone can pick up anything from this post and make a new Blender UI, it will certainly bring me joy!