[Bf-committers] GHOST improvements (proposal)

Fazekas László mneko at freemail.hu
Mon Jun 16 08:49:38 CEST 2014

Dear team,

This as an early attempt to start a discussion about the following 
feature. I don't know yet how much time I can afford into this in the 
next months but I'm going to start a development about the followings in 
a local branch. If it fits somehow into the official development plans, 
I offer this work for the community.

I already have C programming experience with the OS event systems on 
both Linux, Windows and Mac. I wrote interfaces for Wacom tablet drivers 
before. I also wrote interfaces for various input devices, mostly for 
video capture, sometimes with hardware level i/o.

After some debugging in the GHOST module I think it needs some serious 
changes. It has issues with the modifier handling and with absolute vs. 
relative coordinate systems as well. I have the knowledge to fix these 
but what if I start to improve it and add support for some awesome things?

The idea I'm trying to sell you is not new, so maybe a patent search 
needed before doing anything. But I think the "mouse" cursor needs to 
have the same 3D position, rotation and scale attributes as any objects 
in the program - 9 degrees of freedom. With this, the user can move, 
rotate and scale directly. There are hardware devices to do this (or 
parts of it) already, just Blender cannot support them.

It's a 3D program, hopefully with stereo 3D view in the near future, so 
I think the existing traditional mouse event system is just not enough. 
As far as I know GHOST is not a standard and entirely Blender-specific 
so it has the freedom to make this change.

My plan is to extend the mouse position events with some additional 
fields. I don't know yet what is the best form: position+rotation+scale, 
or a matrix, or a position and a vector, or... So I appreciate any ideas 
about this. Also there must be a 2D compatibility layer to project the 
3D position onto the monitor's surface for the existing pure 2D 
operations. And all of these must be compatible with the future stereo 
view modes too.

In this project first I'm going to replace the modifier handling 
(already discussed here: https://developer.blender.org/T40155). You can 
use it for a rookie test on me if you want.

These are radical changes to the API so I can understand if you don't 
want it anyway.

Please let me know what do you think about these. This is just an idea, 
not started yet.

Laszlo Fazekas (totoro)

More information about the Bf-committers mailing list