APEX Sink

· Rigging · Houdini ·

TOC

Guidelines

from Electra example

Character Setup

Guides skeleton

Guides skeleton is from Animated pose output, not from the rest skeleton.
SideFX note on the Guides properties:

Note

The guide properties are being used when we create transformobjects like controls from them. this is very helpful do define in advance which guides will for example be promoted to controls and how they are supposed to look
{
"scaleinheritance":2,
"rord":3,
"xord":0,
"promote":"t r s",
"shape":"box",
"shapetranslate":[0,0,0],
"shaperotate":[45,10,0],
"shapescale":[1,1,1],
"shapecolor":[1,0.2,0.3]
}

Adjust Dictionary "promote_rotation" on Points
Point group: all fingers, clavicles start (shoulders), neck start, foot balls (toes start)
Attribute name: properties
Set values:

apex_promote_rotation_points.png|200

Shapes

Adjust Dictionary "set_shape" on Points
Point group: all
Attribute name: properties
Set Values:

then additional scalers and shapes for particular controls

Orientations

Set control orientations to ident

Rig Attribute Wrangle on Points.
Code: 3@transform = ident();

Mirror attributes

The reverse foot setup needs a mirror attribute on the points in order to know on which controls to apply the offsets for the toe controls

Rig Attribute Wrangle on Points.
Group: @P.x<=-0.01
Code: i@mirror = 1;

Colorize

The Cd attribute will be used for the control color if it is found

First Color node for all (mid section)
Then Color nodes for @name=*_l @name=*_r and fingers

Tags

Keep applying to animated skeleton

Attribute Adjust Array on Points, String datatype

Values set:

mirror for @name=foot_r @name=ball_r @name=toe_r @name=R_Foot_Tilt_b @name=R_Foot_Tilt_a @name=R_Foot_Heel @name=R_Foot_toe_r
Head_parent for @name=neck_01
R_Limb for @name=thigh_r @name=calf_r @name=foot_r @name=ball_r @name=toe_r
L_Limb for @name=thigh_l @name=calf_l @name=foot_l @name=ball_l @name=toe_l
ToeTip for @name=toe_r @name=toe_l
tip for @name=spine_03
L_Leg_parent R_Leg_parent root for @name=pelvis
ToeBall for @name=ball_l @name=ball_r
Ankle for @name=foot_l @name=foot_r
L_Arm for @name=upperarm_l @name=lowerarm_l @name=hand_l
and R_Arm
L_Leg for @name=thigh_l @name=calf_l @name=foot_l
and R_Leg
Head for @name=head
L_Fingers and R_Fingers for fingers without hand joint
Pelvis for @name=pelvis
Spine for @name=pelvis @name=spine_01 @name=spine_02 @name=spine_03
Chest for @name=spine_03
L_Foot for @name=foot_l @name=ball_l @name=toe_l
and R_Foot

Pack

Here we pack all the elements we are going to use in the rig graph, using a packed folder node.

Groom

Here we add the groom shape and skeleton to the character. The rig will be set up at a later stage in the graph

APEX_groom.png|200

Rig Setup

fktransform

We first start off by creating the controls for the rig. This will set up the hierarchy based on the skeleton that you are using. Note, if the tags are applied on the guides skeleton, you have to use the guides skel as the source in order for those tags to show up on the transform objects in the rig.

All default with rpromotegroup set to root

bonedeform

Here we add the bonedeform to the rig.

All default

transformdriver

Add controls that can be used in the rig. The transform driver will also update the guides skeleton, adding new joints and updating the hierarchy
The segments on the component are the wildcard pattern to tag that we can loop over to apply the setup
e.g *Leg will add an ik to joints with the tags L_Leg and R_Leg. If w character doesnt have a tag then the setup will simply not be applied

setups: 4
1.
Driven: root
Control:
driver: Main

Driven: %tag(Pelvis)
Control:
driver: Pelvis
driveguide: %tag(Pelvis)
friveparent: Main

Driven: %tag(Chest)
Control:
driver: Chest
driverguide: %tag(Chest)
driveparent: Pelvis

Driven: %tag(Head)
Control:
driver: Head_main
driverguide: %tag(Head)
driveparent: %tag(Head_parent)

spline

Spline setup, this uses segments in order to set up multiple splines in one component

Settings:
curveorder: 2
tangent: 0,0,-1
pinroot ON, pintip ON
Driven:
segments: Spine
root: %tag(root)
tip: %tag(tip)
Driver:
rootname: root
rootcvname: rootcv
tipname: tip
Parents:
rootparent: %tag({segment}_parent)
tipparent: %tag({segment}_tipparent)
cvparent: root_ctrl
Tags:
tags: spline

multiik

Multik setup, will create multiik chains. This uses segments in order to set up multiple ik chains in one component

Driven:
segments: *Leg *Arm
driven: %tag(bind)
Parents:
tipparent: Main
Tags:
ik_root, ik_polevec, ik_tip

ikfkblend

Driven:
segments: *Limb *Arm
iknodes: %tag(bind)
fknodes: *
Tags:
tags: ikfk_setup

reversefoot

Something to note about the reverse foot is that you need to have a mirror point attribute that on the guide skeleton in order for the mirroring to work. There is an example of this in the electra network. This is however only necessary if you want to set up both feet using one component

Settings:
Many numbers, not sure if default
Driver: Main
Driven:
segments: \8Foot
ankle: %tag(Ankle)
ball: %tag(ToeBall) & %tag(bind)
toe: -
ikdriven: %tag(ik_tip)
Tags:
tags: reverse

lookat

aim_head
Lookat setup, here you can set up multiple lookat constraints. they can be daisy chained for more complex rigs

name: lookat
Settings:
updir: 0,1,0
targetpos: 0,0,0.6
worldspace ON
Driven:
setups: 1
parent: %tag(Headmain)
driven: %tag(Head)
driver: Head_driver
target: Head_aim
up: head_up
keepoffset ON
Tags:
tags: -

transformdriver (again)

reparent_aims_to_head
Here we are parening the newly created Head aim control to the head main control. This is useful when new controls are added and we need to adjust the hierarchy.

setups: 1
Settings:
all OFF! no trs
Driven:
driventransforms: -
Control:
driver: Head_aim
driverguide: -
driveparent: Head_main
makecontrol OFF
rord, xord: 0
Tags:
tags: -

groomdeform

Configure

Configure controls

Add to scene

Animate