Skip to main content

neck.legacy

cartoon-friendly variable-length neck module

Overview

neck.legacy builds a flexible cartoon-style neck rig using a spline IK. It provides smooth bending and optional rigidity controls, and integrates cleanly with the spine.legacy module.

The module provides:

  • A spline IK deformation chain suitable for expressive animation
  • FK controllers along the neck for posing
  • Optional automatic orientation of FK controls
  • Stretching and rigidity shaping along the spline
  • Default space-switching capabilities for the main controllers

Template Structure

  • The root of the template defines the base of the neck (usually attached to the upper spine).
  • The last joint defines the head base position.
  • The spline IK curve is built between these joints and drives the deformation bones used for skinning.
  • You do not need to orient template joints manually; base orientation is handled automatically during rig build, with additional options for controller auto-orientation if needed.

Options

Skin Bones & Distribution

  • bones (int, default: 2) Number of deformation bones generated along the neck spline.
  • bones_length (enum, default: equal) Controls how skin joints are distributed along the spline:
    • parametric : Bones are spaced according to the curve parameter.
    • equal : Matches uniform length distribution, creating evenly sized deformation segments.

Orientation Helpers

  • orient_neck (bool, default: on) Automatically orients the FK controllers along their primary axis.
  • Axis definitions:
    • aim_axis (str, default: y) Axis used to aim the FK controls along the neck direction.
    • up_axis (str, default: x) Up vector used to define the secondary orientation of the FK controls.

Stretching

  • default_stretch (bool, default: on) Enables spline IK stretching by default, allowing the neck to elongate for cartoon-style motion.
  • stretch_mode (enum, default: scale) Defines how stretch is computed and applied along the neck:
    • scale – Joints are scaled along the curve to achieve stretch.
    • translate – Joints are translated along the curve to follow the stretched length

Rigidity (Tangents Rig)

Adds tangent-based rigidity to the spline IK to control how much the neck behaves like a bendy tube vs. a more solid structure.

  • rigidity (bool, default: on) Enables tangential rigidity controls on the spline IK.
  • rigidity_dn (float, default: 1, min: 0, max: 1) Default rigidity at the base of the neck (1 = very rigid, 0 = very flexible).
  • rigidity_up (float, default: 0, min: 0, max: 1) Default rigidity near the head base (0 = flexible, 1 = rigid).

This allows progressive stiffness along the neck .(e.g., stable at the bottom, looser toward the head).

Space Switching

space_switch (bool, default: on) Enables default space-switch modifiers on the main controllers, allowing animators to re-parent neck controls to various spaces (head, world,etc.) depending on the production setup.

  • offset ctrl : Adds an additive controller on top of the neck module.