Animation Quality Gate
Do not accept an animation because it rendered. Accept it only after a contact sheet and failure analysis pass.
Review dimensions
- Subject dominance — the main asset remains readable and is not overwhelmed by HUD/context.
- Layer separation — base subject, texture state, glow, HUD, and background are separate enough to control.
- Silhouette stability — silhouette stays constant unless deliberate morph is specified.
- Texture coherence — no ugly full-image crossfade, crop pop, or unregistered morph.
- Motion coherence — arcs/dots have a reason, restrained speed, and coherent easing.
- Export truth — the final export can reproduce the effect or limitations are explicit.
- Frame aesthetics — sampled frames look good as stills.
RALPH trigger
If a user calls an animation ugly/bad, stop rebuilding immediately. First:
- collect preview frames/contact sheet;
- identify the failed dimension(s);
- invoke
quality-refinement-autoloopif the stack lacks a method; - add/refine generic skills only after sanitization;
- only then rebuild the animation.
Hard gates
- No final animation without a contact sheet.
- No GLB claim for texture swaps implemented only with Blender Python handlers.
- No decorative context elements in base avatar export unless requested.
- No morph that violates locked geometry constraints.
Scripts
scripts/animation_contact_sheet.pybuilds a contact sheet and frame-to-frame difference report from rendered frames.