Pierrick Picaut (P2Design) — LIVESTREAM Monkey Rigging in Blender
TL;DR
A 2h40m unscripted livestream where Picaut manually rigs a stylized cartoon monkey (biped-ish, with tail, feathers, claws) from scratch — covering deformation-vs-control bone separation, IK/FK switchable arms, foot-roll mechanics, pole-target-vs-axis-lock for elbow/knee orientation, stretch handling to avoid IK pop, and tail rigging with stretched controllers. This is the closest thing to a free university-level Blender rigging course and is exactly the manual-armature pattern needed for non-humanoid characters where Rigify auto-fit fails.
The video is dated 2018 but the techniques are timeless — bone constraints, IK/FK chains, and pose-mode constraint setup haven’t fundamentally changed in Blender.
Bias / sponsor flags
- Promotes his own Gumroad / Blendermarket / Cubebrush stores in description
- No third-party sponsor
Mapping against Ray Data Co — what I learned that helps me model Ray in Blender
The deformation-vs-control bone separation (the foundational rigging principle):
- Build TWO chains for every limb: a deformation chain (bound to the mesh, named with
DEF_prefix) and a control chain (the bones the animator actually manipulates). - Deformation bones have the
Deformproperty enabled; control bones do not. To bulk-disable deform on a chain: select all →Shift+W → Deform → Disable. - The control chain copies its transforms to the deformation chain via
Copy Transformsconstraint (Ctrl+Shift+Cin pose mode → Copy Transforms). - Why it matters: the
DEF_prefix excludes those bones from the Pose Library. Also: shape-key drivers should read deformation bones (last in chain) so rig changes upstream don’t break drivers. Critical for Ray — when I iterate his rig, I don’t want to rebuild face shape keys.
Naming + symmetry:
- Suffix every left-side bone with
.L(capital L). ThenShift+W → Symmetrizemirrors the chain to.Rautomatically — bone roll preserved, no manual cursor-pivot trick needed (the old way). - Prefix conventions:
DEF_deformation,CTRL_control,MCH_mechanism (intermediate, not user-facing). Keep this consistent for organization.
IK chain construction (arm/leg):
- Duplicate deformation chain → make FK control chain (parent normally — animator rotates joint by joint)
- Duplicate again → make IK control chain. Add IK constraint to the last bone (
Ctrl+Shift+C → Inverse Kinematics), set chain length (2 for arm: forearm + upper arm) - The IK target bone must be un-parented from the chain (otherwise = cycle dependency)
- Lock rotation axes on the IK constraint so the elbow/knee bends only on the natural axis (e.g., for the elbow, lock X and Y in IK constraint properties → only Z rotates)
Pole target vs axis-lock for elbow/knee orientation (Picaut’s preference):
- Standard approach: pole-target bone, IK uses it to orient the elbow → easy to set up but pole position is awkward in animation
- Picaut prefers: lock IK axes + use the IK controller’s rotation to orient the elbow. Easier to animate (rotation is more intuitive than position-of-floating-pole) but requires the resting joints to be slightly bent so Blender knows which way to fold (“if you align them perfectly, Blender won’t know which direction to bend”)
- For knee specifically: pole target is more reliable due to “knee popping” issues — extrude a small bone forward from the foot, parent to IK controller, set as pole target on the leg IK
IK switchable FK (the toggle):
- Both control chains constrain the deformation chain via Copy Transforms (each at 100% influence). The constraint added LAST overrides — order matters in the stack.
- Add a driver to the second Copy Transforms’ influence: switches between FK (driver=0, second constraint off, FK constraint shows) and IK (driver=1, second constraint on, IK overrides).
Foot roll rig (the trickiest manual rig):
- Three pivot points: heel (back), ball-of-foot (middle), toe (front). Build three bones — heel pivot, ball pivot, toe pivot — chained as parent-child.
- The “control roll” bone, when rotated +X, rotates the ball pivot (lifting heel). When rotated -X, rotates the heel pivot (toe up). Limit Rotation constraint clamps each to its valid range (heel: 0 to -180, ball: 0 to +180).
- The foot IK target is parented to the ball pivot bone (with offset) → foot lifts naturally as the roll plays.
- Add a master Control Foot bone parented to nothing → it’s the bone the animator actually grabs to move the whole foot in space.
Stretch handling on IK (avoiding the knee/elbow pop):
- IK constraint has a Stretch slider — values like 0.05 add subtle stretch that hides the “pop” when the leg fully extends and snaps to bent
- BUT: must apply matching
Copy Rotation + Copy Scale (Y axis only)constraints on each deformation bone, otherwise the underlying geometry deforms wrong (looks like a swollen leg) - Pattern: build an
MCH_mechanism chain between the IK chain and deformation chain to handle the stretch math cleanly
Tail rigging (curved chain with controllers per joint):
- Build the bone chain along the tail
- Add a “rotation control” bone aligned at the tail’s base — Copy Rotation (local→local) constraint on each tail bone copies a fraction of the rotation → flowing wave/whip motion from a single rotation input
- For per-joint tweaks: extrude individual tweak controllers off each joint, parent the chain so moving one tweak drags downstream
- Use
Damped Track + Stretch Toconstraints (in this order — orientation first, then stretch) for tail bones that should track a target without flipping
Per-feather / per-claw rigs (procedural-feel from one rotation):
- Create one master “rotation control” bone for a fan of feathers/claws
- Add Copy Rotation (local→local) constraint on each feather, all reading the same master bone
- Optionally duplicate the constraint to add a secondary “side rotation” control → fan of geometry that flips and rotates as a group from 1-2 inputs
Quick-rebind tip:
- After major edits to mesh proportions:
Ctrl+P → Armature Deform with Automatic Weightsre-binds and gets you 80% of the weight painting done. Then manual weight-paint cleanup. - For non-symmetric work, enable
X-axis mirrorin armature options → edits on.Lbones auto-apply to.R
MCP-relevant Blender Python patterns for Ray’s rig:
armature = bpy.data.armatures.new('Ray_Armature');obj = bpy.data.objects.new('Ray_Rig', armature)- Edit-mode bone creation:
bpy.ops.object.mode_set(mode='EDIT'), thenarmature.edit_bones.new('CTRL_arm.L'), set.headand.tailvectors - Pose-mode constraint:
pbone = obj.pose.bones['CTRL_arm.L'], thencon = pbone.constraints.new('COPY_TRANSFORMS'), setcon.target = obj,con.subtarget = 'DEF_arm.L' - IK constraint:
con = pbone.constraints.new('IK'), setcon.chain_count = 2,con.target = obj,con.subtarget = 'CTRL_IK_arm.L' - Lock IK axes:
pbone.lock_ik_x = True,pbone.lock_ik_y = True - Symmetrize after building L side:
bpy.ops.armature.symmetrize()
Cross-references
- Synthesis:
~/.claude/skills/blender-character/SKILL.md - Related transcript:
~/rdco-vault/06-reference/transcripts/2026-04-29-p2design-monkey-rigging-livestream-transcript.md - Sibling: Grant Abbitt character blockout (mesh has to exist before this rig is useful); Polygon Runway tutorial (no rigging — just modeling/lighting)