[GSoC 2020] Skeleton Tool

I suggest to use single-click to select active bone. :slight_smile:

I suggest that newly created bone should automatically become Active Bone.

I am not sure about this.

I suggest to expose parameters for creating new bones in Tool Options panel.
The only parameter I can think of right now is “Bone width”. :slight_smile:

1 Like

I suggest to start by creating a copy of Spline Tool. Rename it to Skeleton Tool. Add bone icon.

1 Like

Hi @DestinyGamer243!

I suggest to discuss milestones for each evaluation period to clearly set our minimal expectations on each checkpoint. It is possible that your schedule might have changed since the time when you wrote proposal. If so - do not hesitate to tell about this and we can make adjustments. :slight_smile:

At the same time we can discuss details of implementation to clearly understand what and how Skeleton Tool will be working.

I think the best it to put all this information together on a single page in our developer’s documentation. I have created a dedicated page - https://synfig-docs-dev.readthedocs.io/en/latest/projects/skeleton.html
I suggest you to fill it with information from your proposal and we can discuss it further. :slight_smile:

1 Like

I actually have no changes in my implementation timeline. :smiley:

I am trying to close that remove duplicates issue and get on this. I’ll finalize the implementation plan asap too! :smiley:

1 Like

Can you please add this modification to implementation plan? :slight_smile:

Yes! I’m finalizing the implementation plan. Will upload it asap! :smiley:

1 Like

Also, my exam time table can affect the schedule a bit. The dates are not finalized yet but I’ll try my best to stay dedicated to this project! :slightly_smiling_face: I’m currently trying to close the issue I was working on asap and finalize the implementation plan.

I missed on including about linking the bones with sprites. I’m trying to refer to other animation tools as @rodolforg suggested. Also, I’m studying the code of state, statebline and Layer_skeleton to get an understanding on how to get it done!

I’ll start working on it asap after getting the plan chalked out and will try to get a head start before the actual coding period. :smiley:

1 Like

If I understood your phrase correctly… Do you think that Skeleton Tool should allow to link sprites to bones?
I was thinking that Skeleton Tool is only for constructing skeletons. :slight_smile:

Oh! Then it’s okay! :smiley:

I thought it’ll be good to have a tool which you can just choose and make a complete skeleton along with the linking part too! :sweat_smile:

2 Likes

I think it will be great!
But we should be clear on what to achieve with “max” quality :wink:
How would be natural to construct skeletons?
Propose, discuss, implement and test it. And another round :slight_smile:

Later another features, like to view bone links, to link bones in an easier way…

IMHO

2 Likes

I agree with everything said by @rodolforg here. :slight_smile:

1 Like

Hey!
I’ve just made my final changes to the documentation. Check it out and let me know if it’s fine.

Can I also know which class I’ll have to refer to if I want to add a highlight to a bone?

In the tool options, we can show current active bone and it’s child bones

I think we shouldn’t use Tool Options Panel for that. In tool options Synfig generally have options for tool, not dynamic content.

I suggest to expose parameters for creating new bones in Tool Options panel.
The only parameter I can think of right now is “Bone width” - i.e. default thickness of created bone. :slight_smile:

Synfig already can highlight points of spline, when some its vertex selected in Params panel -

Please check this -

1 Like

Thank you!

Alright!

I just started doing this. Will let you know if I’m stuck!

1 Like

I suggest to modify project plan according to this. :slight_smile:

Also, I am proposing to simplify “Milestones” section, like this - Skeleton project: Simplify "Milestones" section by morevnaproject · Pull Request #47 · synfig/synfig-docs-dev · GitHub
The idea to get it clear what exactly should be done in each period, so everyone can easily know which features have to be completed by particular date.

1 Like

Hey!

I made a branch in my fork for the skeleton tool. I added the skeleton tool to the toolbox. I just wrote some print statements in the handlers.

I took the liberty to make an icon too lol.

Do you think I should open a PR?

1 Like

Hi! Apologies for delayed reply.
Yes, you are welcome to open PR, just make sure to mark it as “Draft”. :slight_smile:

1 Like

Here is a good moment to think on how Skeleton Tool actually could behave.

You can notice that Bline Tool (Spline Tool) - the one I recommended to take as base example - allows user to create points one-by-one, but actual layer is created only after user hit “Run” button (or switch to another tool).

On the other hand, Synfig has some tools that work differently - i.e. Circle tool or Draw Tool. With them user do some action (i.e. drag mouse) and layer is created immediately after user releases button.

So, how Skeleton Tool would behave?

How to make it behave like Circle tool?

I.e. as soon as user clicks/drags on workarea it creates a Skeleton Layer and adds a first bone in the place where user clicked (dragged). This layer becomes selected.

If user clicked (or dragged) to add one more bone, then the tool doesn’t creates new layer - it just adds a new bone to currently selected layer.

So, the logic of tool:

  • if some Skeleton layer is already selected, then bones added to it (no new layer created).
  • if no Skeleton layer selected, then tool creates new layer and adds bone to it.

How about that?

I was actually thinking about this. Then what do you think will be the Active bone in the selected layer? Do we need a parameter to save the previous one?

Also, I wanted to add a preview type functionality. Suppose you clicked and dragged to draw a bone, I thought when there is mouse motion, we can show a line from the start point to the cursor. This would be helpful.

I’m currently working on implementing Single Click in empty space function. I may have to implement Active Bone in parallel. will try my best! :slight_smile:

1 Like

Active bone is defined by clicking on any bone. If user haven’t clicked on any bone, then there are no active bone. That means that new created bone will have no parent.

I think we do not need to remember last active bone. :slight_smile:

Yes, that would be very helpful!

Yes, please try to implement this first.
I.e. a single click on empty space (when no skeleton layer is selected).
The tool should create a Skeleton layer and add a bone in the point where user clicked.

You can start with a first step:
Just create an empty skeleton layer when user clicks on empty space.