Hi Zelgadis,
first of all thanks for take the time on reply.
That’s the first thing I though when I started to consider to have bones on synfig.
This structure is good from the point of view of synfig layer concept but lacks on some of the needed
functionality that the bones should have:
- Change a bone in the hierarchy structure means move the layer bone in the layer list. It is more easy to do that in a graphical way by visual interface.
- With a layer ordered hierarchy is not possible that one bone has more than one children. How would you create a secondary child bone of a bone that already have one child bone?
- How would you solve the problem of have more than one bone affecting a bline layer? What happen if the bline layer needs to be in a higher level than the bone layer? Then you rely on convert type, but if the bline is under the bone, you don’t need the convert type of the bline? so, if at the end the bline needs the convert type, why to restrict to have the bones in a particular hierarchy?
- How would you allow parent animation?
The main problem with the layer concept is that layers aren’t linkable valuenodes so they cannot be part of a parameter (unless they are canvases). Look this hierarchy:
synfig.org/api/synfig/classsynfig_1_1Node.html
You can see that layers are directly inherited from the Node class that is the root class of all the synfig classes. If you want a Vertex to be any kind of convert type form a bone (list) then the bone needs to be a Valuenode class inherited from a Linkable Valuenode (where all the convert types needs to come from). That was the main reason to do in that way: a bone as a Valuenode and not as a layer.
In the concept that is currently developed, a bone is a valuenode that is visible in the canvas it belongs to. The skeleton layer is just a help to the user to allow group some bones (some roots or not and some children or not) for a particular reason. But selecting more than one skeleton at the same time the user can manage all the bones of the canvas at the same time.
There is not restriction of Zdepth for bones and they can act at any place where a vertex exits! I think that is much more flexible.
What we are planning to do is to allow the user to automatically bind the selected vertices according to the selected bones (in any layer). It would allow to redo the automatic binding not restricted to the top bones in the hierarchy.
Please don’t consider this a strict “no” and let me know if you need further information on how the current core bone is constructed to allow you to understand why I stand that this way is more flexible and really (due to valuenode problems) is the only possible way.
Cheers and thank you agian
-G