"IPO drivers" in synfig

“IPO drivers” thats what theyre known as in blender… Is it possible or will it be in a future release for synfig ?

Let me give a scenario:

We make a cut-out man
We give him 6 body’s (front, back side, 3/4, etc) of course only one is visible at any one time the rest are set to invisible amount=0.

Also he would have 4 different hand types and so on for the rest of the body.

An IPO driver would be for eg… a rotate layer which would be linked to which “body part” is visible.
ie… if I rotate to 0-10 degrees, “front body type” will be visible.
if I rotate to 10-20 degrees, “side body type” will be visible.
and so on…

so instead of tediously clicking 2 extra things, setting things to 0 etc … you can achieve it with one simple rotate…

Then u could also have a different rotate layer for each body part.

Hi!
interesting challenge!
I would give you some clues:

  1. A real value can be converted to Switch
  2. A bool value can be converted to Compare
  3. A real value can be converted to Sine (or Cosine) that would offer you the ipodriver angle sub parameter.

I’ll give you an example if you cannot figure it out.
-G

Man, I love synfig!
And a challenge, thanks for letting me work it out G.

ok for my eg lets say first body part will be visible between [0,10] degrees
in sin ratio thats close to [0, 0.17]

new rotate layer
export it as angle

convert amount param of all the body parts to “switch type”
set link on =1
set link off =0
convert “bool switch” to AND
convert both AND bools to compare type
1st compare type
real “LHS” convert to sine type
link to angle valuenode from above
set amplitude =1 (this one caught me out for a minute)
real “RHS” x (different angle range for each body part) for my eg I will set to 0
AND
2nd compare type
real “LHS” convert to sine type
link to angle valuenode from above
set amplitude =1
real “RHS” x (different angle range for each body part) here: sin 10 = 0.17

repeat for other body parts.

To your knowledge Is there something like this in the wiki already?
If not I will write it up and add it.

No, I’m not aware of nothing like this on the wiki. It would be great to have a tutorial for this!

You have to remember that one Compare type has to have the “Greater Than” checked and the other unchecked and the other Compare type has to have the “Less Than” and “Equal to” checked and the other unchecked to perform the correct interval with the AND operation.

I’m glad you have figured it out!
Synfig is quite powerful!
-G

I tried to add it under tutorials but it seems in protected and I cant add a new wiki to the contents…
Pls copy and paste it.

Character Animation Drivers

Animation is a complex and lengthy process, so any tools that make our lives easier are important.
One such concept is: Animation drivers.

Lets take an example.
Lets say we have a cutout character, and he has 6 separate drawings for the body/torso.
(front, back, side, 3/4, etc)
We will only focus on the body/torso here, but the same applies for faces, hands, etc.

Ok, so it is very annoying that every time you want to change the body to a different pose/drawing you have to click it, set its amount to 0 (invisible), then click the other one and set its amount to 1, etc.

So the Animation driver idea solves this problem by creating a “driver” (usually a rotate layer, could also be translate layer) and it links the ranges of motion of that layer to a certain body pose/drawing.

For example…
We create a rotate layer called “body”, and when we rotate it, its angle will determine the body drawing which is visible.
So if it between 0 and 10 degrees for eg, that could be set to the “side drawing/pose”
11-20 could be the front pose, and so on.

ok, now lets look at how to do this, with a practical eg

[!!! BEFORE YOU LOOK BELOW, YOU SHOULD ATTEMPT TO FIGURE THIS OUT WITH THE FOLLOWING CLUES…
THE THINKING PROCESS WILL HELP YOU UNDERSTAND SYNFIG BETTER THAN JUST SCROLLING TO THE BOTTOM AND DOING IT THAT WAY!!!]

  1. A real value can be converted to Switch
  2. A bool value can be converted to Compare
  3. A real value can be converted to Sine (or Cosine) that would offer you the ipodriver angle sub parameter.

So here is how we do it:

for my eg lets say first body part will be visible between [0,10] degrees
(in sine ratio thats close to [0, 0.17]) you will see why we need this later

create new rotate layer
export it as body-driver-angle

convert the amount param of all the body parts (ie front, back, etc) to be “switch type”
set link on =1
set link off =0
now convert “bool switch” (still in the “amount switch type”) to AND type
convert both AND bools (booleans) to compare type
1st compare type
real “LHS” convert to sine type (compare type deals with real numbers, you cant compare the angle types, so we do a quick conversion to real)
link the angle here to body-driver-angle valuenode from above
set amplitude =1
real “RHS” x (will be a different angle range for each body part) for my eg I will set to 0
tick the greater than
AND
2nd compare type
real “LHS” convert to sine type
link the angle here to body-driver-angle valuenode from above
set amplitude =1
real “RHS” x (different angle range for each body part) here: sin 10 = 0.17
tick the less than

repeat for other body parts.

Hi carbonphobia,

anybody with a wiki account can create any wiki page.

Just type wiki.synfig.org/wiki/Doc:Character_Animation_Drivers (or any title you prefer) in your browser, and tell the wiki you want to create the page :slight_smile:

Then look at the text for another tutorial for how to add your new page to the tutorial category.

Hi carbonphobia,
Thanks for the write explanation for the wiki entry but it would be better if you elaborate a little more the tutorial with one example and visual aid of how the convert process is being produced and the expected result. Please see this tutorial as example (it is all about convert types)

To make one tutorial available in the tutorial list you have to create a new page similar to one existing tutorial. Notice that the tutorial has a special header that makes it to be included in the proper tutorial list.

If you have further problems editing the wiki, please let us know.

Doing a little of more effort on the tutorial description really makes it more readable for the new users. Also try to avoid the usage of capital letters when it is not needed. There are enough wiki marks to add notes and indentation for that purpose.

-G

ok, thats good constructive criticism, I will try to do a better one with screenshots, Ill do it when Im actually designing a character.

Though, I will start by saying that they should do the eye tutorial you mentioned 1st and familiarize themselves with convert types (there is plenty of doco on it) I dont want to redo this work for no reason.
We can say its an advanced tutorial, and ppl should know these prerequisites first.

The eye tutorial is really terrific for a beginner, but for advanced users all the unnecessary details just annoy and slow them down, they want to get to the essentials, not have to start from beginner level again.

Cool! I tried it with just one drawing and it worked. Few things I had to figure out as a newbie: the control rotate layer which serves as the mock up ipo driver had to stand on its own because otherwise the drawing(s) would rotate along with it, ofcourse, lol. And I had to disconnect the link off/link on from each other in order to set them on 0 and 1. After adding “equal” to both compares and setting the real sine LHS between 0 and 0,173648, I got a visible drawing between the angles of 0 and 10. Nice.