← Back to Docs
  • index.html
  • Clayground
  • Clayground.Character3D
  • GazeAnim
  • Clayground 2026.7
  • GazeAnim QML Type

    Where the eyes point inside a head that is aiming itself. More...

    Import Statement: import Clayground.Character3D

    Properties

    Signals

    Detailed Description

    GestureAnim already turns the head toward a look target. This is the other half: the eyes, which get there first and are still there when the head cannot follow all the way.

    The whole of "the eyes lead the head" falls out of one measurement rather than out of a second animator racing the first. The target is mapped into the head's OWN frame, so what comes back is the angle the head has not covered yet - large while the head is still easing round, large again when the target is past the head's 65 degree limit, and nothing once the head has arrived. Point the eyes at that residual and they lead on the way out and re-centre on arrival, for free.

    Everything it does is deterministic for a given seed. A blink or a glance on a wall clock would make two runs of the same sandbox render differently, and clayrender comparisons are worth more than the variety would be.

    See also Head, GestureAnim, and Character.

    Property Documentation

    averting : bool

    While true the eyes leave the target and settle somewhere off-axis - what a person does while recalling something rather than reading it off the listener's face. Releasing it brings them back.


    gaze : vector2d [read-only]

    What to hand to Head::gaze.


    head : var

    The head node being looked out of. Needs eyeLine and the usual Node mapping - a Head is what this is for.


    interval : int

    Milliseconds between updates. An eye does not need more than 30 Hz, and a character small enough to be at Low detail needs less - this is per-character work on the main thread, and a crowd is where that stops being free.


    running : bool

    Off means the eyes sit dead centre, as they did before this existed.


    seed : int

    Same seed, same wander, every run.


    target : var

    Scene position the eyes want. Null lets them wander, which is what a person does with nothing to look at.


    yawRange : real

    World degrees that map to a full eye deflection. Comfortable human travel is about thirty degrees horizontally and rather less up.


    Signal Documentation

    saccaded()

    Emitted when the eyes jump a long way. A blink rides along with a large saccade in a real face, and it is the cheapest thing that stops a gaze change from looking like a jump cut.

    Note: The corresponding handler is onSaccaded.