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

    What a character does while somebody else is talking. More...

    Import Statement: import Clayground.Character3D

    Properties

    Signals

    Detailed Description

    Everything else in this plugin describes a character while it SPEAKS - emotion, gesture, gaze, lip-sync. The one who is not speaking has had no behaviour at all, which is what makes two characters in conversation read as two monologues taking turns rather than as a conversation.

    A listener is mostly its eyes. It holds the speaker, breaks away every few seconds because a continuous stare is not attention but a threat, and marks the ends of phrases - a blink, sometimes a brow.

    The phrase boundaries come from the SPEAKER'S MOUTH rather than from its script: a gap in Speech::mouthOpen while it is still speaking is the end of a phrase, whatever produced the timeline. That works for a plain envelope reading of an unknown recording exactly as it does for an aligned one, which is what makes this usable on dialogue nobody wrote down.

    A nod is the signature of listening, and it needs the head to be able to do two things at once - hold an aim and dip - which is what Head::poseEuler and Head::offsetEuler are for. A nod here does not disturb where the listener is looking.

    See also Character::listeningTo, GazeAnim, and Speech.

    Property Documentation

    listener : var

    The character doing the listening - needs head and lookAt().


    seed : int

    Same seed, same rhythm, every run - see GazeAnim for why nothing in an idle face is allowed to read a wall clock.


    speaker : var

    Who is being listened to. Anything with speaking, speech and head will do; a Character is what this is for.


    Signal Documentation

    phraseEnded()

    True while a phrase boundary has just gone by. Mostly of interest to whatever wants to hang something else off one.

    Note: The corresponding handler is onPhraseEnded.