{
  "model": "delfino.glb",
  "nome_personaggio": "Blu",
  "axes_three": "muso +X, dorso +Y, fianco destro +Z (export glTF Y-up)",
  "version": "finale (5/11/2026): muso coccoloso, corpo snello, occhio A; clip regia v3",
  "length_m": 2.2,
  "mesh": {
    "verts": 11806,
    "faces": 11988,
    "tris": 23560,
    "quads": 11572,
    "tri_faces": 416,
    "nonmanifold": 0,
    "boundary": 0,
    "shells": 15
  },
  "bones": [
    "root",
    "torso",
    "chest",
    "neck",
    "head",
    "spine_01",
    "spine_02",
    "spine_03",
    "spine_04",
    "spine_05",
    "spine_06",
    "fluke",
    "jaw",
    "pec_L",
    "pec_R",
    "eye_L",
    "eye_R",
    "lid_L",
    "lid_R"
  ],
  "morph_targets": [
    "smile_more",
    "brow_up",
    "blowhole_open"
  ],
  "eyelid_bones": {
    "lid_L": "palpebra sinistra (rot. 0..92 gradi = aperta..chiusa)",
    "lid_R": "palpebra destra (lato camera)"
  },
  "gaze_bones": {
    "eye_L": "+-12 gradi orizz., +-8 vert.",
    "eye_R": "+-12 gradi orizz., +-8 vert."
  },
  "particle_attributes": {
    "_PDENS": "densita' relativa (0 = zona di rispetto dell'occhio, 2 = bocca)",
    "_PART": "0 corpo, 1 dorsale, 2-3 pettorali, 4-5 caudale, 6 bulbo, 7 pupilla, 8 riflesso, 9 palpebra sup., 10 palpebra inf., 11 anello",
    "_PSIZE": "scala del raggio",
    "_GLOW": "peso per le particelle luminose",
    "_BLU": "1 = cobalto, 0 = bianco"
  },
  "clips": [
    {
      "name": "swim",
      "duration_s": 1.2,
      "frames": 36,
      "fps": 30,
      "loop": true,
      "start": {
        "pos_three": [
          0.0,
          -0.005,
          -0.0
        ],
        "yaw_deg": 0.0,
        "pitch_up_deg": 1.0,
        "roll_deg": 0.0
      },
      "end": {
        "pos_three": [
          0.0,
          -0.005,
          -0.0
        ],
        "yaw_deg": 0.0,
        "pitch_up_deg": 1.0,
        "roll_deg": 0.0
      }
    },
    {
      "name": "intro_approach",
      "duration_s": 3.6,
      "frames": 108,
      "fps": 30,
      "loop": false,
      "start": {
        "pos_three": [
          2.4,
          -1.6,
          -15.0
        ],
        "yaw_deg": -99.0,
        "pitch_up_deg": -0.9,
        "roll_deg": -5.7
      },
      "end": {
        "pos_three": [
          0.0,
          0.0,
          -0.0
        ],
        "yaw_deg": -42.1,
        "pitch_up_deg": 1.9,
        "roll_deg": -3.9
      },
      "events": {
        "arrive_s": 3.1
      }
    },
    {
      "name": "idle_face",
      "duration_s": 3.6,
      "frames": 108,
      "fps": 30,
      "loop": true,
      "start": {
        "pos_three": [
          0.0,
          0.0,
          -0.0
        ],
        "yaw_deg": -42.1,
        "pitch_up_deg": 1.9,
        "roll_deg": -3.9
      },
      "end": {
        "pos_three": [
          0.0,
          -0.0,
          -0.0
        ],
        "yaw_deg": -42.1,
        "pitch_up_deg": 1.9,
        "roll_deg": -3.9
      }
    },
    {
      "name": "rise",
      "duration_s": 2.4,
      "frames": 72,
      "fps": 30,
      "loop": false,
      "start": {
        "pos_three": [
          0.0,
          0.0,
          -0.0
        ],
        "yaw_deg": -42.1,
        "pitch_up_deg": 1.9,
        "roll_deg": -3.9
      },
      "end": {
        "pos_three": [
          1.486,
          8.0,
          1.338
        ],
        "yaw_deg": -68.1,
        "pitch_up_deg": 43.8,
        "roll_deg": -59.8
      },
      "events": {
        "leaves_frame_s": 1.6
      }
    },
    {
      "name": "turn_left",
      "duration_s": 3.6,
      "frames": 108,
      "fps": 30,
      "loop": false,
      "start": {
        "pos_three": [
          0.0,
          0.0,
          -0.0
        ],
        "yaw_deg": -0.0,
        "pitch_up_deg": -0.0,
        "roll_deg": -0.0
      },
      "end": {
        "pos_three": [
          -0.0,
          -0.0,
          -0.0
        ],
        "yaw_deg": -0.0,
        "pitch_up_deg": -0.0,
        "roll_deg": 0.0
      }
    },
    {
      "name": "turn_right",
      "duration_s": 3.6,
      "frames": 108,
      "fps": 30,
      "loop": false,
      "start": {
        "pos_three": [
          0.0,
          0.0,
          0.0
        ],
        "yaw_deg": -0.0,
        "pitch_up_deg": -0.0,
        "roll_deg": -0.0
      },
      "end": {
        "pos_three": [
          -0.0,
          -0.0,
          0.0
        ],
        "yaw_deg": -0.0,
        "pitch_up_deg": -0.0,
        "roll_deg": -0.0
      }
    },
    {
      "name": "leap",
      "duration_s": 3.6,
      "frames": 108,
      "fps": 30,
      "loop": false,
      "start": {
        "pos_three": [
          -3.6,
          -0.8,
          -0.0
        ],
        "yaw_deg": 0.0,
        "pitch_up_deg": 1.9,
        "roll_deg": 0.0
      },
      "end": {
        "pos_three": [
          3.6,
          -0.8,
          -0.0
        ],
        "yaw_deg": -0.0,
        "pitch_up_deg": -1.9,
        "roll_deg": -0.0
      },
      "events": {
        "apex_s": 1.8,
        "apex_pos_three": [
          0.0,
          1.6,
          0.0
        ],
        "eyes_closed_s": [
          1.62,
          1.98
        ],
        "note": "esplosione in particelle all'apice; gli occhi spariscono per ultimi (>= 0,3 s dopo)"
      }
    },
    {
      "name": "dive",
      "duration_s": 2.4,
      "frames": 72,
      "fps": 30,
      "loop": false,
      "start": {
        "pos_three": [
          0.0,
          -0.0,
          -0.0
        ],
        "yaw_deg": -0.0,
        "pitch_up_deg": -0.0,
        "roll_deg": -0.0
      },
      "end": {
        "pos_three": [
          6.824,
          -16.207,
          -0.0
        ],
        "yaw_deg": -0.0,
        "pitch_up_deg": -65.9,
        "roll_deg": -0.0
      },
      "events": {
        "leaves_frame_s": 1.5
      }
    },
    {
      "name": "look_tilt",
      "duration_s": 2.4,
      "frames": 72,
      "fps": 30,
      "loop": false,
      "start": {
        "pos_three": [
          0.0,
          0.0,
          -0.0
        ],
        "yaw_deg": -42.1,
        "pitch_up_deg": 1.9,
        "roll_deg": -3.9
      },
      "end": {
        "pos_three": [
          0.0,
          0.0,
          -0.0
        ],
        "yaw_deg": -42.1,
        "pitch_up_deg": 1.9,
        "roll_deg": -3.9
      }
    },
    {
      "name": "look_around",
      "duration_s": 4.8,
      "frames": 144,
      "fps": 30,
      "loop": true,
      "start": {
        "pos_three": [
          0.0,
          0.0,
          -0.0
        ],
        "yaw_deg": -42.1,
        "pitch_up_deg": 1.9,
        "roll_deg": -3.9
      },
      "end": {
        "pos_three": [
          0.0,
          -0.0,
          -0.0
        ],
        "yaw_deg": -42.1,
        "pitch_up_deg": 1.9,
        "roll_deg": -3.9
      }
    },
    {
      "name": "pass_fast",
      "duration_s": 1.6,
      "frames": 48,
      "fps": 30,
      "loop": false,
      "start": {
        "pos_three": [
          -9.0,
          -0.1,
          -0.6
        ],
        "yaw_deg": 0.0,
        "pitch_up_deg": 5.0,
        "roll_deg": 0.0
      },
      "end": {
        "pos_three": [
          9.0,
          -0.1,
          -0.6
        ],
        "yaw_deg": -0.0,
        "pitch_up_deg": -5.0,
        "roll_deg": -0.0
      },
      "events": {
        "cross_center_s": 0.8,
        "note": "passa per x=0: momento per far comparire la scritta"
      }
    },
    {
      "name": "pass_fast_oops",
      "duration_s": 2.8,
      "frames": 84,
      "fps": 30,
      "loop": false,
      "start": {
        "pos_three": [
          -9.0,
          -0.1,
          -0.6
        ],
        "yaw_deg": 0.0,
        "pitch_up_deg": 5.0,
        "roll_deg": 0.0
      },
      "end": {
        "pos_three": [
          9.0,
          -0.1,
          -0.6
        ],
        "yaw_deg": -0.0,
        "pitch_up_deg": -5.0,
        "roll_deg": -0.0
      },
      "events": {
        "overshoot_stop_s": 1.13,
        "center_hold_from_s": 1.73,
        "center_hold_to_s": 2.33,
        "wink_s": 1.93,
        "note": "gag: max 1 volta per visita, mai nei primi 10 s"
      }
    },
    {
      "name": "peek_up",
      "duration_s": 4.8,
      "frames": 144,
      "fps": 30,
      "loop": false,
      "start": {
        "pos_three": [
          0.0,
          -4.2,
          -0.0
        ],
        "yaw_deg": -69.7,
        "pitch_up_deg": 42.8,
        "roll_deg": -62.2
      },
      "end": {
        "pos_three": [
          0.0,
          -4.2,
          -0.0
        ],
        "yaw_deg": -45.0,
        "pitch_up_deg": -21.2,
        "roll_deg": 17.9
      },
      "events": {
        "hold_from_s": 1.5,
        "hold_to_s": 3.3
      }
    },
    {
      "name": "chat_call",
      "duration_s": 3.6,
      "frames": 108,
      "fps": 30,
      "loop": false,
      "start": {
        "pos_three": [
          0.0,
          0.0,
          -0.0
        ],
        "yaw_deg": -42.1,
        "pitch_up_deg": 1.9,
        "roll_deg": -3.9
      },
      "end": {
        "pos_three": [
          -0.0,
          0.0,
          -0.0
        ],
        "yaw_deg": -42.1,
        "pitch_up_deg": 1.9,
        "roll_deg": -3.9
      },
      "events": {
        "gesture_from_s": 0.9,
        "gesture_to_s": 2.7,
        "note": "apri la chat qui"
      }
    },
    {
      "name": "trick_spin",
      "duration_s": 2.4,
      "frames": 72,
      "fps": 30,
      "loop": false,
      "start": {
        "pos_three": [
          0.0,
          0.0,
          -0.0
        ],
        "yaw_deg": -0.0,
        "pitch_up_deg": -0.0,
        "roll_deg": -0.0
      },
      "end": {
        "pos_three": [
          0.0,
          0.0,
          -0.0
        ],
        "yaw_deg": 0.0,
        "pitch_up_deg": -0.0,
        "roll_deg": -0.0
      }
    },
    {
      "name": "nod_yes",
      "duration_s": 1.2,
      "frames": 36,
      "fps": 30,
      "loop": false,
      "start": {
        "pos_three": [
          0.0,
          0.0,
          -0.0
        ],
        "yaw_deg": -42.1,
        "pitch_up_deg": 1.9,
        "roll_deg": -3.9
      },
      "end": {
        "pos_three": [
          0.0,
          0.0,
          -0.0
        ],
        "yaw_deg": -42.1,
        "pitch_up_deg": 1.9,
        "roll_deg": -3.9
      }
    },
    {
      "name": "face_me",
      "duration_s": 1.2,
      "frames": 36,
      "fps": 30,
      "loop": false,
      "start": {
        "pos_three": [
          0.0,
          -0.005,
          -0.0
        ],
        "yaw_deg": 0.0,
        "pitch_up_deg": 1.0,
        "roll_deg": 0.0
      },
      "end": {
        "pos_three": [
          0.0,
          0.0,
          -0.0
        ],
        "yaw_deg": -42.1,
        "pitch_up_deg": 1.9,
        "roll_deg": -3.9
      },
      "events": {
        "eyes_lock_s": 0.15,
        "arrive_s": 1.0,
        "blink_s": 0.2,
        "note": "LATO -> VOLTO; fine = inizio di idle_face (sorriso 0,85: dissolvi 0,25-0,35 s)"
      }
    },
    {
      "name": "face_away",
      "duration_s": 1.0,
      "frames": 30,
      "fps": 30,
      "loop": false,
      "start": {
        "pos_three": [
          0.0,
          0.0,
          -0.0
        ],
        "yaw_deg": -42.1,
        "pitch_up_deg": 1.9,
        "roll_deg": -3.9
      },
      "end": {
        "pos_three": [
          0.0,
          -0.005,
          -0.0
        ],
        "yaw_deg": 0.0,
        "pitch_up_deg": 1.0,
        "roll_deg": 0.0
      },
      "events": {
        "tail_kick_s": 0.6,
        "blink_s": 0.27,
        "note": "VOLTO -> LATO; fine = inizio di swim"
      }
    },
    {
      "name": "hop",
      "duration_s": 1.0,
      "frames": 30,
      "fps": 30,
      "loop": false,
      "start": {
        "pos_three": [
          0.0,
          -0.005,
          -0.0
        ],
        "yaw_deg": 0.0,
        "pitch_up_deg": 1.0,
        "roll_deg": 0.0
      },
      "end": {
        "pos_three": [
          0.0,
          -0.005,
          -0.0
        ],
        "yaw_deg": 0.0,
        "pitch_up_deg": 1.0,
        "roll_deg": 0.0
      },
      "events": {
        "apex_s": 0.5,
        "splash_s": 0.9,
        "note": "LATO -> LATO, root ferma: l'arco lo fa il codice. 1,0x (salto medio) o 0,77x (alto)"
      }
    },
    {
      "name": "tickle",
      "duration_s": 0.8,
      "frames": 24,
      "fps": 30,
      "loop": false,
      "start": {
        "pos_three": [
          0.0,
          -0.005,
          -0.0
        ],
        "yaw_deg": 0.0,
        "pitch_up_deg": 1.0,
        "roll_deg": 0.0
      },
      "end": {
        "pos_three": [
          0.0,
          -0.005,
          -0.0
        ],
        "yaw_deg": 0.0,
        "pitch_up_deg": 1.0,
        "roll_deg": 0.0
      },
      "events": {
        "peak_s": 0.25,
        "eyes_closed_s": [
          0.1,
          0.45
        ],
        "note": "LATO -> LATO; specchia il roll secondo il lato del tocco (mirror)"
      },
      "mirror": true
    },
    {
      "name": "celebrate",
      "duration_s": 2.4,
      "frames": 72,
      "fps": 30,
      "loop": false,
      "start": {
        "pos_three": [
          0.0,
          -0.005,
          -0.0
        ],
        "yaw_deg": 0.0,
        "pitch_up_deg": 1.0,
        "roll_deg": 0.0
      },
      "end": {
        "pos_three": [
          0.0,
          0.0,
          -0.0
        ],
        "yaw_deg": -42.1,
        "pitch_up_deg": 1.9,
        "roll_deg": -3.9
      },
      "events": {
        "spin_from_s": 0.3,
        "spin_to_s": 1.3,
        "arrive_s": 1.9,
        "wink_s": 2.1,
        "eyes_closed_s": [
          0.4,
          1.2
        ],
        "note": "LATO -> VOLTO; fine = inizio di idle_face/nod_yes"
      }
    }
  ],
  "glb_bytes": 618976,
  "glb_raw_bytes": 1527676
}