LogoThwordle Docs

Wan Animate 动画工具组件规划

首页 Wan Animate 精品工具体验的界面结构与实现思路

竞品 UI 核心观察

  • 双列布局: 左侧是输入表单,右侧提供实时预览、生成状态与后续操作。整体宽度约 1200px,使用深色渐变背景分出舞台感。
  • 分组表单结构: 每个输入区域(角色图片、参考视频、提示词、分辨率、进阶设置)都有标题、副说明与文件上传控件,存在状态标签(NEW、No Filter)。
  • 信用点付费路径: 表单底部突出紫色 CTA(Purchase Credit),旁边有成本估算提示与高级设置折叠。
  • 生成结果卡片: 右侧卡片展示示例视频缩略图、生成 ID、视频操作(添加音频、放大)。采用卡片化深色背景与细分割线。
  • 信号强调: 多处使用 Badge 表示模型版本、功能状态,图标+文本的方式提升可扫描性。

设计对齐原则

  • 延续站点视觉语言: 使用现有 shadcn UI 组件(CardBadgeButtonTabs 等)以及 Tailwind 配色(深色基底、品牌渐变、霓虹 CTA)。
  • 信息层次清晰: 表单分块、标题 + 描述、辅助提示(文件格式限制、时长限制等)。
  • 状态驱动: 使用本地 state 模拟上传、生成进度、错误提示,以后可接入实际 API。
  • 可扩展性: 预留 api 调用与队列轮询接口的占位符,避免纯静态演示后续改造困难。

组件模块划分

WanAnimateExperience
├── WanAnimateHeader(徽标/标签/简介)
├── WanAnimateLayout (两列布局 + 响应式)
│   ├── WanAnimateFormPanel
│   │   ├── UploadField (角色图片)
│   │   ├── UploadField (参考视频)
│   │   ├── PromptField
│   │   ├── ResolutionSelect
│   │   ├── AdvancedSettingsAccordion
│   │   └── ActionFooter(信用点状态 + CTA)
│   └── WanAnimatePreviewPanel
│       ├── PreviewPlayerCard
│       ├── GenerationMetaCard(生成 ID、跳转按钮)
│       └── VideoActionsCard(加音频 / 放大)
└── WanAnimateFeatureHighlights(可选:列出模型能力或 FAQ)

上述子组件保持文件内分段实现,不额外拆目录;通过内部小型函数与对象常量保留清晰语义。

状态与数据结构

  • characterImage: File | null — 角色图片上传。
  • referenceVideo: File | null — 参考视频上传,加入时长校验(≤ 120s)。
  • prompt: string — 可选提示词,提供预设模板按钮。
  • resolution: '480p' | '720p' | '1080p' — 选择不同信用消耗。
  • advanced — 包含布尔设置(开启表情增强、自动配音等),以对象存储。
  • isGenerating: boolean & progress: number — 模拟生成状态;未来可替换为后端 Job 轮询。
  • generationId: string | null — 成功后展示,默认 N/A

所有 state 使用 React useState;当引入真实 API 时可根据需要切换到 useReducer 或 Zustand。

交互流程

  1. 用户上传角色图片与参考视频;若数据缺失则禁用“立即生成功能”。
  2. 修改提示词或切换分辨率时更新成本提示(静态映射 resolutionCostMap)。
  3. 点击“生成 Wan 动画”后触发 handleGenerate
    • 重置进度为 0,启动 setInterval 模拟进度条。
    • 生成完成后展示示例预览(随机占位图片/视频),刷新 generationId
  4. Add Audio / Upscale 按钮目前跳转到占位链接,供后续接入路由。

实现步骤建议

  1. 新建组件 src/components/ai-tool/wan-animate-experience.tsx,导出主组件与必要的辅助常量。
  2. 装配布局:复用 CardBadgeButton,并通过 grid lg:grid-cols-[7fr_5fr] 创建宽屏布局;移动端堆叠。
  3. 实现上传控件:使用隐藏的 input + 自定义面板;留出错误信息区域。
  4. 模拟进度与预览:构建 useEffect 清理定时器;预览区使用占位视频图 + 操作按钮。
  5. 集成首页:在 AiToolHomepage 中于 WanAnimateStudioSection 之前插入,以新段落分隔。
  6. 文案本地化:暂用英文/中文混合静态文本,待后期整合 next-intl 时抽离。

注意事项

  • 文件上传目前仅存内存 URL,不落盘;部署后需接入 R2 或其他存储。
  • 付费逻辑与信用点消耗仅展示文案;后端接口完成前需禁掉真实扣费。
  • 组件应保持 use client,并检查在 SSR 中的可用性(window/document 访问需守护)。
  • next-intl 体系中,若要翻译需添加命名空间 WanAnimateTool 的语言包。

后续扩展点

  • 接入真实生成 API:调用后端任务创建接口,返回 generationId,并通过 SSE 或轮询追踪进度。
  • 视频预览改为 <video> 元素,支持播放/暂停与封面截图。
  • 将高级设置拆分成 Collapsible,并提供工具提示解释信用点差异。
  • 添加生成历史时间线,与 WanAnimateStudioSection 的相册保持一致体验。