Skeleton Layer

From Synfig Studio :: Documentation
Jump to: navigation, search
m (Start by adding a Skeleton layer)
m
 
(24 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
<!-- Page info -->
 
<!-- Page info -->
 
{{Title|Skeleton Layer}}
 
{{Title|Skeleton Layer}}
 +
{{TOCright}}
 
{{Category|Layers}}
 
{{Category|Layers}}
 +
{{Category|Other}}
 
{{NewTerminology}}
 
{{NewTerminology}}
 
<!-- Page info end -->
 
<!-- Page info end -->
  
<!-- {{l|Image:Layer_other_skeleton_icon.png|64px}} -->
+
{{l|Image:Layer_other_skeleton_icon.png|64px}}
  
== About Skeleton Layers==
+
  I'm a Draft please help me to be efficient ...  
 
+
  {{Note|Warning, experimental feature|This feature is still at experimental stage (experimental feature must be actived in {{l|Setup Dialog}}). There is a high probability that the Skeleton layer will go away and will be replaced by Bone layer. This can produce no compatible animation project. Though, we can't give any estimation when this will happen.}}
+
  
 
==Parameters of Skeleton Layers==
 
==Parameters of Skeleton Layers==
Line 15: Line 15:
 
The parameters of the skeleton layers are:
 
The parameters of the skeleton layers are:
  
{|border="0" align="left" style="border-collapse"  cellpadding="3" cellspacing="0"  
+
{|border="0" align="none" style="border-collapse"  cellpadding="3" cellspacing="0"  
 
|-style="background:#C0C0C0"
 
|-style="background:#C0C0C0"
 
|'''Name'''||'''Value'''||'''Type'''   
 
|'''Name'''||'''Value'''||'''Type'''   
Line 24: Line 24:
  
 
|-style="background:#eeeeee"
 
|-style="background:#eeeeee"
 +
||{{l|Image:Type_real_icon.png|16px}} {{l|Amount Parameter|Amount}}
 +
||0.500000
 +
||real
 +
 +
|-style="background:#"
 
||{{l|Image:Type_string_icon.png|16px}} Name
 
||{{l|Image:Type_string_icon.png|16px}} Name
 
||skeleton
 
||skeleton
 
||string
 
||string
  
|-style="background:#"
+
|-style="background:#eeeeee"
 
||{{l|Image:type_list_icon.png|16px}} {{l|Bones|Bones}}
 
||{{l|Image:type_list_icon.png|16px}} {{l|Bones|Bones}}
 
||list (Static List)
 
||list (Static List)
Line 35: Line 40:
 
|}
 
|}
  
 +
== Summary ==
 +
 +
In the skeleton layer, each vertex is influenced by a weighted average combination of bones ''maybe from different skeletons?''.
 +
 +
There are two ways to make a vector be influenced by bone(s). First is the {{l|Skeleton_Layer#Link to Bone|Link to Bone}} action that would give a 100% of influence of one bone to one vector. Second is the {{l|Skeleton_Layer#Link to Skeleton|Link to Skeleton}} that is a semiautomatic way to give weighted influence to a vector from all the bones that overlaps its influence area over the vector position. The more covered the vector is by the influence area, the higher is the influence weight. In any case you can manually specify the bone and the influence that you want by editing the values in the vector (sub)parameters. We need to modify the bone(s) with handles to perform the indirect movement to the vectors that are influenced by it(them)
 +
 +
== Skeleton construction ==
 +
 +
Add a {{Literal|Skeleton layer}} :
 +
* If your {{l|Canvas}} is empty you can do that from the {{l|Category:Main_Menu|main}} or {{L|Caret|caret}} menus {{c|<Layer>|<New Layer>|<Other>|Skeleton|}}.
 +
* If your canvas is not empty, right clicking inside the {{l|Layers_Panel}}.
 +
Once you have a {{Literal|Skeleton layer}}, the first bone appears. You have created the first bone of your Skeleton, this is your '''first parent bone'''.
 +
 +
Each bones have the following {{l|Handle|handles}} to control them : {{literal|Origin}}, {{literal|Angle}}, {{literal|Local Length Scale}}, {{literal|Bone Width}} and {{literal|Tip Width}}. Take a look inside the {{l|Parameters Panel}} of the {{Literal|Skeleton layer}}, those handles are relative to some of those values (with also some advanced parameters).
 +
 +
From the {{l|WorkArea}}, with the Bones {{l|Handle|handles}} you can easily move and adjust part of your Skeleton.
 +
 +
Now, you can had child bones :
 +
* Right click on any {{l|Handle|handles}} of the parent bone you want and select {{Literal|Create Child Bone}}.
 +
* Repeat the operation, choosing accordingly the parent bone of your future bone (the parent of a hand bone is the arm, the parent bone of a finger is the hand bone...), to create your Skeleton.
 +
 +
When created, a {{Literal|Skeleton layer}}, is {{l|Canvas Layer Menu|Disabled from rendering}} : the layer is visible in the {{l|WorkArea}} but disabled in the final Render.
 +
 +
==Parameters of a Bone==
 +
 +
The parameters of a bone are:
 +
 +
{|border="0" align="none" style="border-collapse"  cellpadding="3" cellspacing="0"
 +
|-style="background:#C0C0C0"
 +
|'''Name'''||'''Value'''||'''Type''' 
 +
|-style="background:#"
 +
||{{l|Image:Type_string_icon.png|16px}} Name
 +
||Bone 1
 +
||string
 +
 +
|-style="background:#eeeeee"
 +
|| {{l|Parent Parameter|Parent}}
 +
||No Parent
 +
||bone_valuenode
 +
 +
|-style="background:#"
 +
||{{l|Image:Type_vector_icon.png|16px}} {{l|Origin Parameter|Origin}}
 +
||0.00000, 0.00000
 +
||vector
 +
 +
|-style="background:#eeeeee"
 +
||{{l|Image:Type_angle_icon.png|16px}} {{l|Angle Parameter|Angle}}
 +
||0.00°
 +
||angle
 +
 +
|-style="background:#"
 +
||{{l|Image:Type_real_icon.png|16px}} {{l|Skeleton_Layer#Local_Length_Scale|Local Length Scale}}
 +
||1.00000
 +
||real
 +
 +
|-style="background:#eeeeee"
 +
||{{l|Image:Type_real_icon.png|16px}} {{l|Skeleton_Layer#Bone_Width|Bone Width}}
 +
||0.10000
 +
||real
 +
 +
|-style="background:#"
 +
||{{l|Image:Type_real_icon.png|16px}} {{l|Skeleton_Layer#Recursive_Length_Scale|Recursive Length Scale}}
 +
||1.00000
 +
||real
 +
 +
|-style="background:#eeeeee"
 +
||{{l|Image:Type_real_icon.png|16px}} {{l|Skeleton_Layer#Tip_Width|Tip Width}}
 +
||0.10000
 +
||real
 +
 +
|-style="background:#"
 +
||{{l|Image:Type_real_icon.png|16px}} {{l|Z Depth Parameter|Z-Depth}}
 +
||0.00000
 +
||real
 +
 +
|-style="background:#eeeeee"
 +
||{{l|Image:Type_real_icon.png|16px}} {{l|Skeleton_Layer#Length_Setup|Length Setup}}
 +
||1.00000
 +
||real
 +
 +
|}
 +
=== Parent ===
 +
 +
=== Angle ===
 +
 +
=== Local Length Scale ===
  
 +
=== Bone Width ===
  
 +
Has {{Literal|Tip Width}}, {{Literal|Bone Width}} is used to set the influence of the bone before the use of {{literal|Link to Skeleton}} action. {{Literal|Bone Width}} parameter can be adjusted by the witdh {{l|Handle}}. When adjusting the {{Literal|Bone Width}}, the bone's shape change accordingly.
  
 +
=== Recursive Length Scale ===
  
 +
=== Tip Width ===
  
 +
Has {{Literal|Bone Width}}, {{Literal|Tip Width}} is used to set the influence of the bone before the use of {{literal|Link to Skeleton}} action. {{Literal|Tip Width}} parameter can be adjusted by the witdh {{l|Handle}}. When adjusting the {{Literal|Tip Width}}, the bone's shape change accordingly.
  
 +
=== Z-Depth ===
  
== Start by adding a Skeleton layer ==
+
This parameter can be used to change the 'depth' (order) of a Bone in a Skeleton Layer.
  
* Bones names are automatically created. Bones can't be deleted from canvas. You can unreference them in a skeleton layer but they will still available in canvas.
+
=== Length Setup ===
  
* You only can add more bones by right clicking on the bones list and selecting "Insert Item Smart". Once added you can modify it and use in other places.
+
== Skeleton / Bones actions ==
  
* Bones have two sets of parameters (you can expand it to see them). The default handles bones parameters are the used for make the influence on points. The other set is called the setup values. You can toggle from one set of handles to the other by pressing {{Shortcut|Alt|7}} (setup)
+
=== Create Child Bone ===
  
* Bones have two kinds of scales: normal (for the bone itself) and recursive for the children of the bone. The recursive scales the bone and passes down to the children the same scale value, that is recursively passed down. You can toggle recursive by {{Shortcut|Alt|8}}.
+
When you add a {{Literal|Skeleton Layer}}, only one bone is created. In order to create a usable skeleton, you will need to add more bones.
  
* Also {{Shortcut|Alt|9}} changes between setup->normal->recursive->setup by consecutive key pressings.
+
Right clicking on any {{l|Handle|handles}} of bone display a contextual menu. From this menu select {{Literal|Create Child Bone}} and a new child bone will be created. This child bone will move accordingly to his parent.
  
* All parameters are animatable but I strongly recommend to only animate the normal parameters for the first time. So the setup values has to be modified in non animation mode.
+
=== Link to Bone ===
  
* You can also animate parent bones. See example.
+
{{Literal|Link to Bone}} link artwork, for example handles of a shape created with the {{l|Spline Tool}}, to a bone.
  
* Once you have created your skeleton you can forget even deactivate the skeleton layer.  
+
Select a single or multiple handles from your artwork, right click on a bone and from the contextual menu, select {{Literal|Link to Bone}}. Now when you move the Bone, the selected handles also move.
The bones are available everywhere even if the skeleton layer doesn't exists.
+
  
== Now let's go with the points ==
+
See it in action in [https://www.youtube.com/watch?v=9yCLR-broWA bones dev part 5]
  
* A vector or a spline point can be converted to Bone Influence type. Once you convert it two parameters are shown: Bone Weight Pair list and Link. Link is the original value of the point and Bone Weight Pair List
+
=== Link to Skeleton ===
  
* The first time a Vertex or Spline Point is converted to a Bone Influence type it would create a bone for that Bone Weight Pair list. Unfortunately this makes the number of bones grow a lot and possibly many of them are useless.
+
Before you use {{Literal|Link to Skeleton}} you should adjust the {{literal|Bone width}} and {{literal|Tip width}} of each bones of you skeleton to set the bone shape.
 +
 +
Select one or more handles from your artwork, select the {{Literal|Skeleton layer}} right click on it and from the contextual menu, select {{Literal|Link to Skeleton}}. All the handles covered by the bone shape will be automatically linked.
  
* Once you have it converted to Bone Influence you can add more bones weight pairs to the bone weight pair list as like in any list (Insert Item smart). Later you can modify the bone that is affecting that vertex or spline point. To select a new bone in the parent parameter or the bone parameter of the bone weight pair, just click on the value column of the parameter. A drop down menu with all the existing bones will be offered. Each bone on the list affects weighted by the weight value, so you can make one vertex to be more influenced by a bone than other. If only one bone is in the list, it acts as 100% regardless the weight value.
+
See it in action : [https://www.youtube.com/watch?v=NbI6TeAHbgs Bones dev part 7]
  
* Repeat the convert of each vertex and associate it to each bone of the skeleton. Possibly it is better to have a small skeleton (only the root one) and use the convert to bone influence to add more bones when needed.
+
=== Disconnect ===
  
* Notice that the bone setup position is used to grab the vertex/spline point setup position so each later modification of the non setup value of the bones are relative to that initial position of the vertex, relative to the setup position.
+
If you want to disconnect / unlink a bone from the part of the artwork it is linked to.
 +
* From the {{l|Layers Panel}}, select the {{l|Skeleton Layer}}
 +
* From the {{l|Parameters Panel}}, open the {{literal|Bones}} list
 +
* Select the corresponding {{literal|Item}} (the according bone's {{l|Handle|handles}} will be highligthed whith red squares)
 +
* Right click to open the context menu and select {{literal|Disconnect}}.
  
* Of course, you can animate the vertex position along the time and it would be the relative position to the bone setup position. This helps to fix gaps when bone transforms the vertexes in a non desirable way.
+
=== Change parent ===
  
== More informations about Skeleton Layers ==
+
You can also change the parent of a bone in the skeleton, even during animation.
 +
* From the {{l|Layers Panel}}, select the {{l|Skeleton Layer}}
 +
* From the {{l|Parameters Panel}}, open the {{literal|Bones}} list
 +
* Select the corresponding {{literal|Item}} (the according bone's {{l|Handle|handles}} will be highligthed whith red squares)
 +
* Click on the {{literal|Value}} of {{literal|Parent}} to change the parent or set the parent to {{literal|none}}.
  
http://www.synfig.org/forums/viewtopic.php?t=4328
+
== See Also ==
  
{{l|Dev:Bones}} , {{l|Dev:Bone_Layer}}
+
* To deform raster images : {{l|Skeleton_Deformation_Layer}}.
 +
* {{l|Doc:Basic_Bone_Tutorial}}
 +
* A SIF-file of a rigged character using bones can be found {{l|Media:riggedchar.zip|here}}.

Latest revision as of 13:09, 26 February 2017

Languages Language: 

English



Layer other skeleton icon.png
  I'm a Draft please help me to be efficient ... 

Parameters of Skeleton Layers

The parameters of the skeleton layers are:

Name Value Type
Type real icon.png Z Depth 0.000000 real
Type real icon.png Amount 0.500000 real
Type string icon.png Name skeleton string
Type list icon.png Bones list (Static List) list

Summary

In the skeleton layer, each vertex is influenced by a weighted average combination of bones maybe from different skeletons?.

There are two ways to make a vector be influenced by bone(s). First is the Link to Bone action that would give a 100% of influence of one bone to one vector. Second is the Link to Skeleton that is a semiautomatic way to give weighted influence to a vector from all the bones that overlaps its influence area over the vector position. The more covered the vector is by the influence area, the higher is the influence weight. In any case you can manually specify the bone and the influence that you want by editing the values in the vector (sub)parameters. We need to modify the bone(s) with handles to perform the indirect movement to the vectors that are influenced by it(them)

Skeleton construction

Add a "Skeleton layer" :

  • If your Canvas is empty you can do that from the main or caret menus "<Layer> → <New Layer> → <Other> → Skeleton".
  • If your canvas is not empty, right clicking inside the Layers Panel.

Once you have a "Skeleton layer", the first bone appears. You have created the first bone of your Skeleton, this is your first parent bone.

Each bones have the following handles to control them : "Origin", "Angle", "Local Length Scale", "Bone Width" and "Tip Width". Take a look inside the Parameters Panel of the "Skeleton layer", those handles are relative to some of those values (with also some advanced parameters).

From the WorkArea, with the Bones handles you can easily move and adjust part of your Skeleton.

Now, you can had child bones :

  • Right click on any handles of the parent bone you want and select "Create Child Bone".
  • Repeat the operation, choosing accordingly the parent bone of your future bone (the parent of a hand bone is the arm, the parent bone of a finger is the hand bone...), to create your Skeleton.

When created, a "Skeleton layer", is Disabled from rendering : the layer is visible in the WorkArea but disabled in the final Render.

Parameters of a Bone

The parameters of a bone are:

Name Value Type
Type string icon.png Name Bone 1 string
Parent No Parent bone_valuenode
Type vector icon.png Origin 0.00000, 0.00000 vector
Type angle icon.png Angle 0.00° angle
Type real icon.png Local Length Scale 1.00000 real
Type real icon.png Bone Width 0.10000 real
Type real icon.png Recursive Length Scale 1.00000 real
Type real icon.png Tip Width 0.10000 real
Type real icon.png Z-Depth 0.00000 real
Type real icon.png Length Setup 1.00000 real

Parent

Angle

Local Length Scale

Bone Width

Has "Tip Width", "Bone Width" is used to set the influence of the bone before the use of "Link to Skeleton" action. "Bone Width" parameter can be adjusted by the witdh Handle. When adjusting the "Bone Width", the bone's shape change accordingly.

Recursive Length Scale

Tip Width

Has "Bone Width", "Tip Width" is used to set the influence of the bone before the use of "Link to Skeleton" action. "Tip Width" parameter can be adjusted by the witdh Handle. When adjusting the "Tip Width", the bone's shape change accordingly.

Z-Depth

This parameter can be used to change the 'depth' (order) of a Bone in a Skeleton Layer.

Length Setup

Skeleton / Bones actions

Create Child Bone

When you add a "Skeleton Layer", only one bone is created. In order to create a usable skeleton, you will need to add more bones.

Right clicking on any handles of bone display a contextual menu. From this menu select "Create Child Bone" and a new child bone will be created. This child bone will move accordingly to his parent.

Link to Bone

"Link to Bone" link artwork, for example handles of a shape created with the Spline Tool, to a bone.

Select a single or multiple handles from your artwork, right click on a bone and from the contextual menu, select "Link to Bone". Now when you move the Bone, the selected handles also move.

See it in action in bones dev part 5

Link to Skeleton

Before you use "Link to Skeleton" you should adjust the "Bone width" and "Tip width" of each bones of you skeleton to set the bone shape.

Select one or more handles from your artwork, select the "Skeleton layer" right click on it and from the contextual menu, select "Link to Skeleton". All the handles covered by the bone shape will be automatically linked.

See it in action : Bones dev part 7

Disconnect

If you want to disconnect / unlink a bone from the part of the artwork it is linked to.

  • From the Layers Panel, select the Skeleton Layer
  • From the Parameters Panel, open the "Bones" list
  • Select the corresponding "Item" (the according bone's handles will be highligthed whith red squares)
  • Right click to open the context menu and select "Disconnect".

Change parent

You can also change the parent of a bone in the skeleton, even during animation.

  • From the Layers Panel, select the Skeleton Layer
  • From the Parameters Panel, open the "Bones" list
  • Select the corresponding "Item" (the according bone's handles will be highligthed whith red squares)
  • Click on the "Value" of "Parent" to change the parent or set the parent to "none".

See Also


Languages Language: 

English