texture-state-animation

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Texture State Animation

纹理状态动画

This skill exists because “crossfade several full images” usually looks bad. Texture animation must be designed like motion graphics: registered states, constrained transition channels, and preview gates.
之所以有这项技能,是因为“多张完整图像交叉渐变”的效果通常很糟糕。纹理动画必须像动态图形一样设计:包含已对齐的状态、受约束的过渡通道以及预览校验环节。

Failure modes to avoid

需要避免的错误模式

  • Whole-frame crossfades between unrelated crops/compositions.
  • Python frame handlers as the only playback mechanism when export/runtime support is needed.
  • Texture swaps that change silhouette, camera crop, or scale at the same time as decorative motion.
  • Mixing aura/background/HUD pixels into the avatar surface texture unless that is the intent.
  • Morph pulses that break accepted geometry constraints such as constant depth.
  • 在无关的裁剪/合成内容之间使用全帧交叉渐变。
  • 在需要导出/运行时支持的情况下,仅使用Python帧处理程序作为播放机制。
  • 在进行装饰性动画的同时,切换纹理并改变轮廓、相机裁剪范围或缩放比例。
  • 将光晕/背景/HUD像素混入角色表面纹理(除非这是预期效果)。
  • 变形动画违反既定的几何约束(如恒定深度)。

Workflow

工作流程

  1. Register states first: crop, scale, align, and color-normalize all source states into one canvas and one semantic mask.
  2. Classify pixels/layers:
    • avatar surface/base;
    • facial decal/features;
    • glow/emission accents;
    • background/aura/context;
    • HUD/circle elements.
  3. Choose transition type per layer, not one global blend:
    • avatar surface: hold, shimmer, subtle value/roughness pulse, or masked dissolve;
    • face features: hold or short opacity fade;
    • glow accents: emission pulse / traveling highlight;
    • aura/HUD: independent orbit/dash/dot animation;
    • background: separate plane/compositor, never baked into avatar unless requested.
  4. Use export-compatible channels when needed:
    • keyframed material values, opacity, UV transform, shape keys, object transforms;
    • image sequence only if target supports it;
    • avoid Blender Python handlers for final GLB unless the target runtime will recreate them.
  5. Render a contact sheet and flicker report before calling the animation acceptable.
  1. 先注册状态:将所有源状态进行裁剪、缩放、对齐和颜色归一化处理,整合到一个画布和一个语义蒙版中。
  2. 对像素/图层进行分类:
    • 角色表面/基底;
    • 面部贴花/特征;
    • 发光/自发光装饰;
    • 背景/光晕/环境;
    • HUD/圆形元素。
  3. 为每个图层选择过渡类型,而非使用全局混合:
    • 角色表面:保持、微光、细微的明度/粗糙度脉冲或蒙版溶解;
    • 面部特征:保持或短时间透明度渐变;
    • 发光装饰:自发光脉冲 / 移动高光;
    • 光晕/HUD:独立的轨道/虚线/点动画;
    • 背景:使用单独的平面/合成器,除非有要求,否则绝不烘焙到角色纹理中。
  4. 必要时使用兼容导出的通道:
    • 关键帧化的材质参数、透明度、UV变换、形状键、对象变换;
    • 仅在目标平台支持时使用图像序列;
    • 最终导出GLB时避免使用Blender Python处理程序,除非目标运行时会重新实现这些逻辑。
  5. 在确认动画合格前,渲染联系表和闪烁报告。

Acceptance gates

验收标准

  • Each texture state is registered to the same bbox/landmarks.
  • No full-canvas crossfade is used unless state registration and semantics match.
  • Avatar silhouette remains stable unless the story explicitly calls for a morph.
  • Context/aura elements are separate from the avatar material.
  • The exported format can reproduce the animation, or limitations are documented.
  • 每个纹理状态都对齐到相同的边界框/标记点。
  • 除非状态对齐和语义一致,否则不使用全画布交叉渐变。
  • 除非剧情明确要求变形,否则角色轮廓保持稳定。
  • 环境/光晕元素与角色材质分离。
  • 导出格式能够复现动画效果,或已记录限制条件。

Scripts

脚本

  • scripts/texture_transition_plan.py
    creates a transition plan from source states and flags risky whole-frame crossfades.
  • scripts/texture_transition_plan.py
    :根据源状态生成过渡方案,并标记存在风险的全帧交叉渐变。