Story流程+本地化
This commit is contained in:
@@ -1,323 +0,0 @@
|
||||
# ChatGPT / Codex 辅助 UI 与美术资产工作流
|
||||
|
||||
> 文档状态:Active
|
||||
> 首次建立:2026-07-18
|
||||
> Scope 更新:2026-07-18 — Chapter 0 首发;Windows、Android、iOS;`en`、`zh-CN`、`ja`、`ko`、`vi-VN`
|
||||
> 适用项目:`ichni Official`
|
||||
> 关联路线图:`docs/release-readiness-roadmap.md` 的 `UI-001`–`UI-007`
|
||||
|
||||
## 1. 结论
|
||||
|
||||
**目前可以使用 ChatGPT/Codex 辅助 ichni 的 UI 优化和美术资产重制,并且不需要先雇佣其他人。** 当前工具可以根据文字或参考图生成、编辑 Raster Image,适合制作:
|
||||
|
||||
- 对话界面背景、章节背景、装饰性插画和氛围图。
|
||||
- UI Panel、Frame、Divider、Button Skin、Badge 和装饰层的视觉方案。
|
||||
- Icon 方向探索、Loading Illustration、Placeholder、Sprite Sheet 初稿。
|
||||
- 根据现有 Mockup 做局部替换、去除元素、改色、扩图、重新构图。
|
||||
- 从一个成熟页面提炼同系列视觉变体,建立统一风格。
|
||||
|
||||
它不能独立保证以下生产要求:
|
||||
|
||||
- 自动交付结构准确、命名规范且完全可编辑的 PSD/Figma Layer。
|
||||
- 像素级一致的多状态组件、精确 9-slice 边界、可靠 Vector/SVG。
|
||||
- 直接在图片中生成大量正确的中英日韩越正式文本。
|
||||
- 自动完成 Alpha Edge、Texture Compression、Sprite Slice、Prefab State 和多分辨率验证。
|
||||
- 自动判断每一项训练/参考/第三方素材的商业许可。
|
||||
|
||||
因此推荐“**AI 生成/定向编辑 + 免费图形工具清理 + Codex 自动化检查 + Unity 真机验证**”的混合流程。
|
||||
|
||||
本轮只服务 Chapter 0 首发。Chapter 1 的 UI/背景只能在不影响 Chapter 0 的设计、实现、LQA 和三平台性能验证时制作;`IchniCreatorStudio` 不在此工作流范围内。
|
||||
|
||||
OpenAI 当前官方说明支持在 Codex 中使用 `$imagegen`,也可以用 Image Generation API 做批量生产;官方建议使用少量参考图、短而具体的 Prompt、一次只做一个定向修改,并把复杂文字排版留到设计工具中完成:
|
||||
|
||||
- [OpenAI Image Generation in Codex](https://learn.chatgpt.com/docs/image-generation)
|
||||
- [OpenAI Image Generation API Guide](https://developers.openai.com/api/docs/guides/image-generation)
|
||||
|
||||
## 2. ichni 当前视觉基线
|
||||
|
||||
### 已有优势
|
||||
|
||||
- 已形成深蓝、青色高光、轨道/圆环/细线装饰、低饱和背景的可识别风格。
|
||||
- Start、Chapter Selection、Song Selection、Settings、Dialogue、Summary 都已有整屏视觉参考。
|
||||
- 多数页面已有拆分 Sprite 和 Prefab 基础,不需要从空白重新设计整个产品。
|
||||
- 视觉语言与音游、轨道、星空/轨道站意象相符,适合建立 Original Style Guide 后继续扩展。
|
||||
|
||||
### 当前风险
|
||||
|
||||
- 背景纹理和装饰层偏密集,小字号与低对比标签容易被吞没。
|
||||
- 多处 Icon-only Control,缺少 Hover/Focus/Disabled 和可访问性定义。
|
||||
- Scene 中混用 `1920×1080`、`2560×1440` Reference Resolution;移动端 Safe Area 尚未建立。
|
||||
- Runtime `Assets` 中同时存在大体积 PSD、整屏 Mockup 和拆分图,源文件与运行时导出没有清晰边界。
|
||||
- Scene 仍有硬编码/测试文本;如果文字继续烘焙进图片,会扩大本地化和返工成本。
|
||||
- 许多 UI Texture 的实际用途、状态和引用尚无 Manifest,批量重制容易产生孤儿资产或破坏 Prefab 引用。
|
||||
|
||||
## 3. 先建立的三条原则
|
||||
|
||||
1. **文字不进入背景图。** 所有会本地化、变化或显示数据的文字都使用 TMP/Localization;图片只包含不可读的抽象纹理和装饰。
|
||||
2. **先拆 UI 责任,再生成图片。** AI 不负责决定 Screen Flow、信息层级和 Interaction State;先完成 UI Inventory 和 Design Tokens。
|
||||
3. **每次只验证一个小批次。** 先做 Dialogue Pilot,进入 Unity 验证后,再扩到其他 Screen,避免批量生成一套无法切片或不可读的资产。
|
||||
|
||||
## 4. 免费工具组合
|
||||
|
||||
| 任务 | 推荐工具 | 用途 |
|
||||
|---|---|---|
|
||||
| 生成与定向修改 | ChatGPT/Codex `$imagegen` | Background、Illustration、Panel/Frame 方案、局部编辑 |
|
||||
| 批量生成 | OpenAI Image Generation API | 经 Pilot 批准后的受控批次与变体 |
|
||||
| Raster 清理 | Krita / GIMP / Photopea | Mask、Alpha、Layer、Color、Edge Cleanup、PSD 导出 |
|
||||
| Vector/Icon | Inkscape | 几何 Icon、SVG、可缩放线条和 Logo 形状 |
|
||||
| Unity 集成 | Unity Sprite Editor / SpriteAtlas | Slice、Border、Packing、Compression、Prefab State |
|
||||
| 自动验证 | Codex 编写 Editor Tool / CI Validator | Naming、Dimensions、Import Settings、Missing Reference、Build Size |
|
||||
|
||||
不雇佣其他人的可行性取决于 Scope:背景、Panel、装饰和有限 Icon 可以由现有团队完成;如果要求大量高精度角色立绘、复杂动画、Logo 品牌系统或多章节插画,仍应先缩小首发资产数量,而不是让 AI 无限制扩张内容。
|
||||
|
||||
## 5. 资产生产管线
|
||||
|
||||
### Stage A — UI Inventory
|
||||
|
||||
在生成任何新资产前,为每个 Screen 建立清单:
|
||||
|
||||
| Field | 示例 |
|
||||
|---|---|
|
||||
| Asset ID | `UI-DIALOG-BG-001` |
|
||||
| Screen | Dialogue |
|
||||
| Role | Background / Frame / Panel / Button / Icon / Decoration |
|
||||
| Current Path | `Assets/Sprites/UITextures/...` |
|
||||
| Prefab/Scene References | Dialogue Prefab、`MenuScene` |
|
||||
| State | Normal / Hover / Pressed / Selected / Disabled / Focused |
|
||||
| Size / Aspect | 2560×1440、9-slice、64×64 等 |
|
||||
| Locale Text | 必须为 `None`,文字由 TMP 承担 |
|
||||
| Replace / Keep | 要替换的层与必须保留的层 |
|
||||
| Owner / Status | TODO / REVIEW / APPROVED / IN UNITY / DONE |
|
||||
|
||||
Inventory 完成后,才能判断哪些整屏图片只是 Reference,哪些 Sprite 被 Runtime 真正引用。
|
||||
|
||||
### Stage B — Lightweight Art Bible
|
||||
|
||||
至少定义:
|
||||
|
||||
- Color Tokens:Background、Surface、Primary Cyan、Secondary Blue、Warning、Error、Disabled、Text Levels。
|
||||
- Typography:TMP Font、Size Scale、Line Height、CJK/Latin Fallback、数字样式。
|
||||
- Shape:Corner Radius、Line Width、Panel Border、Cut Corner、Orbit Motif 使用密度。
|
||||
- Spacing:4/8 px Grid 或项目选择的统一 Grid。
|
||||
- Lighting:高光方向、Glow 强度、是否允许 Bloom-like Edge。
|
||||
- Texture:Noise 粒度、背景对比、装饰透明度上限。
|
||||
- Motion:出现/消失时长、Easing、Focus/Selected 反馈。
|
||||
- Accessibility:最小文字尺寸、最低对比、状态不能只依赖颜色。
|
||||
|
||||
描述风格时使用原创特征,例如:
|
||||
|
||||
> Original dark navy and cyan sci-fi rhythm-game interface, restrained orbital-line motifs, layered translucent panels, precise geometric framing, quiet star-field ambience, high readability, no text, no logo, no imitation of any named artist or franchise.
|
||||
|
||||
不要要求模仿具体在世艺术家、品牌或游戏的独特风格。
|
||||
|
||||
### Stage C — Decompose Full-screen Mockup
|
||||
|
||||
整屏 UI 应拆成以下层:
|
||||
|
||||
1. `Background`:全屏、无文字、低信息密度,可按 Aspect Crop/Extend。
|
||||
2. `Atmosphere`:Glow、Dust、Stars、Fog,必要时独立以控制透明 Overdraw。
|
||||
3. `Structural Frame`:顶栏、底栏、边框、轨道线;优先 Vector 或 9-slice。
|
||||
4. `Panel Skin`:可重复使用的 9-slice Surface,不给每个 Screen 单独生成一张。
|
||||
5. `Decorative Overlay`:非交互性的角花、圆环、扫描线;数量要受性能预算约束。
|
||||
6. `Interactive Components`:Button、Tab、Slider、Toggle、Dropdown,每个状态明确。
|
||||
7. `Icons`:统一 Grid、Stroke、Padding、Optical Weight。
|
||||
8. `Text/Data`:全部由 TMP、Localization 和 Runtime Data 渲染。
|
||||
|
||||
AI 最适合负责 1、2、5 和部分 3/4 的视觉素材;6、7 最终应由规则化组件和 Vector/手工清理保证一致性。
|
||||
|
||||
### Stage D — Generate / Edit
|
||||
|
||||
每次请求必须包含四部分:
|
||||
|
||||
1. **Context**:它属于哪个 Screen、玩家在做什么。
|
||||
2. **Keep**:现有参考图中必须保留的构图、色彩或留白区域。
|
||||
3. **Change**:本轮只改变什么。
|
||||
4. **Output Contract**:尺寸、Aspect、Alpha、是否 Tileable、是否无文字、留白和导出用途。
|
||||
|
||||
示例:
|
||||
|
||||
```text
|
||||
Using the attached ichni dialogue mockup as a visual reference, create an original
|
||||
2560x1440 dialogue background layer only. Keep the dark navy/cyan palette, orbital
|
||||
line motifs, and the quiet sci-fi station atmosphere. Remove every panel, portrait,
|
||||
button, icon, logo, and all readable text. Reserve calm low-detail negative space in
|
||||
the lower 38% for the dialogue panel and on the left 28% for a character portrait.
|
||||
Avoid bright focal points behind future text. Full-bleed raster background, no frame,
|
||||
no watermark, no embedded typography.
|
||||
```
|
||||
|
||||
Panel Skin 示例:
|
||||
|
||||
```text
|
||||
Create one original transparent PNG UI panel skin for ichni: a dark navy translucent
|
||||
surface with a restrained cyan 2 px geometric border and subtle cut corners. Front
|
||||
view, perfectly rectangular, symmetrical, no perspective, no glow outside the canvas,
|
||||
no text, no icon, no logo, large clean center, designed for 9-slice use. Provide one
|
||||
normal-state asset; do not create a screen mockup.
|
||||
```
|
||||
|
||||
局部编辑示例:
|
||||
|
||||
```text
|
||||
Edit only the highlighted upper-right decoration. Reduce its brightness and visual
|
||||
density by about one third so it no longer competes with the title. Keep all other
|
||||
pixels, dimensions, palette, composition, and transparency unchanged.
|
||||
```
|
||||
|
||||
如果结果不理想,下一轮只提出一个具体修改,例如“扩大底部留白”“降低背景亮点”“保持边框不动,仅移除文字”,不要同时重新设计所有层。
|
||||
|
||||
### Stage E — Cleanup and Export
|
||||
|
||||
AI Output 进入 Unity 前必须经过:
|
||||
|
||||
- 删除假文字、Watermark-like Shape、脏边和随机不可解释细节。
|
||||
- 检查 Alpha Premultiplication、半透明边缘和深色背景 Halo。
|
||||
- 几何边框重新拉直;需要精确重复的形状用 Inkscape/Krita 重建。
|
||||
- 对 9-slice 资产保证四角固定、边缘可拉伸、中心无不可拉伸纹理。
|
||||
- 保留 Working Source(Krita/PSD/SVG)与最终 PNG;不要只保存聊天输出。
|
||||
- 生成时的 Prompt、Reference、Model/Date 和人工修改说明进入 Manifest。
|
||||
|
||||
推荐未来目录:
|
||||
|
||||
```text
|
||||
ArtSource/
|
||||
UI/
|
||||
Dialogue/
|
||||
Working/
|
||||
References/
|
||||
Prompts/
|
||||
Assets/
|
||||
Sprites/
|
||||
UITextures/
|
||||
Dialogue/
|
||||
Backgrounds/
|
||||
Panels/
|
||||
Icons/
|
||||
```
|
||||
|
||||
`ArtSource` 是否放在主 Git、Git LFS 或独立美术仓库应另行决定。在完成引用审计之前,不要直接移动当前 PSD/PNG;先复制、重新导出、替换引用,再删除旧资产。
|
||||
|
||||
### Stage F — Unity Import
|
||||
|
||||
推荐默认值需按目标平台复核:
|
||||
|
||||
| 类型 | Texture Type | Mip Maps | Alpha | Compression | 备注 |
|
||||
|---|---|---|---|---|---|
|
||||
| UI Background | Sprite (2D and UI) | Off | 按需 | 平台压缩 | 控制 Max Size,避免不必要的 Alpha |
|
||||
| Panel / Button | Sprite (2D and UI) | Off | On | 高质量/平台适配 | 配置 Border,验证 Pixel Edge |
|
||||
| Icon | Sprite (2D and UI) | Off | On | 高质量 | 统一 PPU、Padding、尺寸 |
|
||||
| Repeatable Pattern | Sprite / Default | 视 Shader | 按需 | 平台适配 | 验证 Wrap Mode 与 Seams |
|
||||
|
||||
集成检查:
|
||||
|
||||
- Sprite 引用落在 Prefab,而不是只在 Scene 内临时替换。
|
||||
- Button 的 Normal/Highlighted/Pressed/Selected/Disabled/Focused 状态齐全。
|
||||
- Dynamic Batching 不是透明 UI 性能解决方案;用 Canvas 分组、Atlas、覆盖面积和 Overdraw 实测。
|
||||
- 进入 SpriteAtlas 后检查 Padding、Alpha Bleed、Build Size 和首屏加载。
|
||||
- 目标 Locale 文本使用 TMP Overlay 验证,不得回到烘焙文字。
|
||||
|
||||
### Stage G — Review and Approve
|
||||
|
||||
只有同时通过四个 Gate 才能标记 `APPROVED`:
|
||||
|
||||
1. **Visual Gate**:符合 Art Bible、层级清楚、不抢文字、同系列一致。
|
||||
2. **UX Gate**:信息与交互优先级正确,所有状态可识别,Keyboard/Controller/Touch 可用。
|
||||
3. **Technical Gate**:尺寸、Alpha、9-slice、Import、Atlas、Memory、Overdraw、Safe Area 合格。
|
||||
4. **Rights Gate**:来源、Prompt、Reference 权限和人工修改有记录,没有未经授权的 Logo/角色/商标。
|
||||
|
||||
## 6. 推荐的 Dialogue Pilot
|
||||
|
||||
第一轮只制作以下资产:
|
||||
|
||||
- `UI-DIALOG-BG-001`:无文字 Dialogue Background。
|
||||
- `UI-PANEL-BASE-001`:通用 9-slice Panel Skin。
|
||||
- `UI-BUTTON-PRIMARY-001`:Normal、Highlighted/Focused、Pressed、Disabled 四个 State。
|
||||
- `UI-DIALOG-DECOR-001`:一组低密度装饰 Overlay。
|
||||
|
||||
Pilot 步骤:
|
||||
|
||||
1. 从现有 Dialogue Mockup 导出一张 Reference,并标记必须保留/删除区域。
|
||||
2. 为四个资产分别写 Asset Contract,不要求一次生成整屏成品。
|
||||
3. 用 `$imagegen` 生成 2–4 个方向,只选择一个继续。
|
||||
4. 在 Krita/GIMP/Inkscape 完成精确 Layer、Alpha、Border 和状态变体。
|
||||
5. 在一个复制的 Dialogue Prefab/测试 Scene 中集成,避免直接覆盖生产 Prefab。
|
||||
6. 用 `1920×1080`、`2560×1440`、16:10、Android 刘海/挖孔设备与 iOS Safe Area 截图对比;首发固定横屏。
|
||||
7. 对比旧版/新版的文字对比度、Draw Calls、Texture Memory、Overdraw 和加载时间。
|
||||
8. 只有通过 Review Gate 后,才扩展到 Start、Chapter、Song Selection、Settings、Summary。
|
||||
|
||||
## 7. Codex 可以进一步自动化的工作
|
||||
|
||||
在 Pilot 规格稳定后,可以让 Codex 实现以下 Unity Editor 工具:
|
||||
|
||||
- 扫描 UI Texture 的 Naming、尺寸、Texture Type、Mip Maps、Alpha、Compression、Max Size。
|
||||
- 输出“Sprite → Prefab/Scene”引用报告,辅助安全清理旧 PSD/PNG。
|
||||
- 读取 Asset Manifest,检查缺失 State、Locale Text 烘焙风险和未批准资产。
|
||||
- 批量创建/更新 SpriteAtlas 和平台 Override,但必须先由项目确认规范。
|
||||
- 生成多分辨率 Screenshot Matrix,辅助人工视觉回归。
|
||||
- 扫描 Scene/Prefab 中硬编码 TMP 文本和缺失 Localization Key。
|
||||
- 统计 Texture Memory、StreamingAssets 平台冗余与 Build Size 变化。
|
||||
|
||||
这些自动化应在 Pilot 确认后编写,否则工具会把尚未决定的美术规范固化到工程里。
|
||||
|
||||
## 8. AI Asset Manifest 模板
|
||||
|
||||
建议保存为 CSV/JSON,至少包含:
|
||||
|
||||
```text
|
||||
asset_id
|
||||
screen
|
||||
role
|
||||
source_path
|
||||
runtime_path
|
||||
dimensions
|
||||
alpha_required
|
||||
slice_border
|
||||
states
|
||||
prompt_version
|
||||
reference_ids
|
||||
reference_rights
|
||||
generation_date
|
||||
manual_edits
|
||||
unity_import_profile
|
||||
prefab_references
|
||||
review_status
|
||||
reviewer
|
||||
notes
|
||||
```
|
||||
|
||||
命名示例:
|
||||
|
||||
```text
|
||||
ui_dialog_bg_ch00_v001.png
|
||||
ui_panel_base_9s_v003.png
|
||||
ui_button_primary_normal_v002.png
|
||||
ui_button_primary_focused_v002.png
|
||||
ui_icon_settings_gear_v001.png
|
||||
```
|
||||
|
||||
不要把“final”写进文件名;版本和 Approval 状态由 Manifest 管理。
|
||||
|
||||
## 9. 质量与安全红线
|
||||
|
||||
- 不生成或保留可识别的第三方 Logo、角色、UI Trade Dress 或受保护品牌元素。
|
||||
- 不用具体艺术家/游戏名要求模仿;用颜色、构图、材质、密度、光线、形状等可验证特征描述。
|
||||
- 不让 AI 在资产里生成玩家会阅读的正式文本。
|
||||
- 不直接覆盖现有生产资产;先做新文件、替换引用、A/B 验证,再清理旧资源。
|
||||
- 不因为“看起来更精细”就接受更高的 Texture Memory、透明覆盖和 Loading 成本。
|
||||
- 不批量生成大量近似资产;优先复用 Panel、Icon Grid、Token 和 Shader。
|
||||
- 不把聊天记录当作唯一 Source;保存 Prompt、Reference、Working File 和 Export。
|
||||
|
||||
## 10. 何时可以开始
|
||||
|
||||
满足以下条件即可开始 Dialogue Pilot:
|
||||
|
||||
- [x] `release-readiness-roadmap.md` 的 `DEC-001`、`DEC-003` 已确认:Windows、Android、iOS,以及 `en`、`zh-CN`、`ja`、`ko`、`vi-VN`。
|
||||
- [ ] `UI-001` UI Inventory 至少完成 Dialogue Screen。
|
||||
- [ ] `UI-002` 有一版可用的 Color/Type/Spacing/Shape Token。
|
||||
- [ ] 选定一张现有 Dialogue Mockup 作为 Reference。
|
||||
- [ ] 明确 Pilot 的性能预算,并将 Windows、Android、iOS 横屏与 Safe Area 写入 Asset Contract。
|
||||
- [ ] 先建立复制的测试 Prefab/Scene,不直接覆盖生产资源。
|
||||
|
||||
满足后,可以直接让 Codex 执行:
|
||||
|
||||
> “按照 `docs/ai-assisted-ui-art-workflow.md`,为 Dialogue Pilot 创建 Asset Contract,并使用现有 Dialogue Mockup 生成 `UI-DIALOG-BG-001` 的候选图。”
|
||||
207
docs/localization-workflow.md
Normal file
207
docs/localization-workflow.md
Normal file
@@ -0,0 +1,207 @@
|
||||
# ichni Official 本地化工作流程(Unity Localization)
|
||||
|
||||
## 当前状态
|
||||
|
||||
- `LOC-001`:已完成。工作流、范围、命名规则与验收门已确定。
|
||||
- `LOC-002`:代码实现已完成,等待 Unity Play Mode / Use Existing Build 手工验证。
|
||||
- 后续阶段:未开始;在 `LOC-002` 验证通过前,不迁移 String Table、Prefab、场景或 I2。
|
||||
|
||||
## 1. 目标与边界
|
||||
|
||||
本流程用于将项目统一迁移到 Unity Localization,并保证首发版本完整支持下列七种语言:
|
||||
|
||||
| Locale Code | 语言 | 用途 |
|
||||
| --- | --- | --- |
|
||||
| `zh-CN` | 简体中文 | 原文与默认回退语言 |
|
||||
| `en` | 英文 | 首发语言 |
|
||||
| `zh-TW` | 繁体中文 | 首发语言 |
|
||||
| `ja` | 日文 | 首发语言 |
|
||||
| `ko` | 韩文 | 首发语言 |
|
||||
| `vi-VN` | 越南文 | 首发语言 |
|
||||
| `th` | 泰文 | 首发语言 |
|
||||
|
||||
范围包含菜单、设置、游戏内提示、结算、剧情树、Helper、Tutorial、歌曲元数据与当前 Chapter 0 的 Yarn 对话。
|
||||
|
||||
不在本轮范围内:配音、多语言图片资产、章节 1 的未完成剧情、CreatorStudio 的完整 UI 本地化。CreatorStudio 仅在 Theme `TextObject` 的共享数据契约受到影响时同步处理。
|
||||
|
||||
## 2. 不可违反的工作规则
|
||||
|
||||
1. **一次只执行一个阶段。** 每一阶段完成后,先进行代码构建和 Unity 手工验证,再批准下一阶段。
|
||||
2. **不直接手改 Unity 自动生成的 String Table `.asset`。** 表、Locale、Addressables 关系通过 Unity Localization Editor 或专用导入工具创建和更新;CSV/XLSX 是可审阅的文本源。
|
||||
3. **迁移期间不删除 I2。** 只有对应界面已切换、所有引用已扫描为零、并完成 Use Existing Build 回归后,才进入删除阶段。
|
||||
4. **稳定 ID 与显示文本分离。** 解锁 Key、`SongItemData.songName`、Yarn Node 名称、Story Block ID 永远不翻译;只为玩家可见文本配置 Localization Key。
|
||||
5. **动态文本不拼接。** 使用 Smart String 与命名参数,例如 `"已解锁歌曲:{song_name}"`;参数在弹窗实际显示时解析,以支持语言切换后的队列内容。
|
||||
6. **每条文本必须有上下文。** 导出给翻译使用的表要包含界面位置、用途、占位符说明、最大长度或布局注意事项。
|
||||
7. **字体与布局是验收项。** 虽然 TMP 通用字体已准备完成,仍必须在七种语言、PC 与移动端实机上检查字形、断行、溢出与字号。
|
||||
|
||||
## 3. 表结构与 Key 规范
|
||||
|
||||
### 3.1 目标 String Table Collections
|
||||
|
||||
| Collection | 内容 | 示例 Key |
|
||||
| --- | --- | --- |
|
||||
| `UI` | 所有静态菜单、设置、Gameplay 标签与通用按钮 | `ui_common_confirm` |
|
||||
| `Message` | 解锁、确认、错误及其它运行时动态消息模板 | `system_unlock_song_content` |
|
||||
| `Chapter0_Content` | Chapter 0 的歌曲显示名、章节元数据、Timeline、Helper 与教程文本 | `chapter0_song_world_for_white_lies_name` |
|
||||
| `Chapter0_Lines` | Yarn Spinner 自动生成的 Chapter 0 台词与选项 | Yarn `#line` ID |
|
||||
|
||||
这四张表按加载生命周期划分,而不是按每一个页面拆分。`Chapter0_Lines` 规模最大,必须保持独立;其它表保持小而稳定。后续章节只新增 `ChapterN_Content` 与 `ChapterN_Lines` 两张表。
|
||||
|
||||
`UI.csv` 同时保留当前仍被场景或 Prefab 使用的旧 Key,直至对应页面完成迁移;旧 Key 不得在确认没有引用前从 Unity Table 或 CSV 中删除。
|
||||
|
||||
### 3.2 Key 命名
|
||||
|
||||
- 仅使用小写英文、数字和下划线。
|
||||
- 格式为 `<域>_<模块>_<语义>`,不包含显示语言或版本号。
|
||||
- 不把原文、屏幕坐标、Prefab 名称写入 Key。
|
||||
- `*_title`、`*_content`、`*_desc` 成对出现时必须共享同一语义前缀。
|
||||
- 智能字符串只允许命名参数:`{song_name}`、`{count}`、`{chapter_name}`;禁止 `{0}` 和 C# 字符串拼接。
|
||||
|
||||
## 4. 执行阶段与验收门
|
||||
|
||||
### LOC-001:基线盘点与迁移冻结(当前阶段)
|
||||
|
||||
**操作**
|
||||
|
||||
- 保存本文件,并建立文本资产、I2 引用、硬编码文本、Yarn 表和现有 Locale 的清单。
|
||||
- 为每个待迁移对象标注目标 Collection、Key、上下文和责任阶段。
|
||||
- 确认 `zh-CN` 作为原文、七种 Locale 作为首发范围、TMP 通用字体作为字体基线。
|
||||
|
||||
**不得操作**
|
||||
|
||||
- 不改运行时代码、Prefab、场景、String Table、I2 文件或 Addressables。
|
||||
|
||||
**验收**
|
||||
|
||||
- 清单明确列出所有 I2 依赖入口和所有已存在的 Unity Localization Collection。
|
||||
- 后续阶段有明确的输入、输出、回滚边界与手工测试项。
|
||||
|
||||
### LOC-002:运行时本地化基础层
|
||||
|
||||
**操作**
|
||||
|
||||
- 将设置存档的语言选择从不稳定的 `languageIndex` 迁移为 `languageCode`,并保留旧索引到旧顺序的单次迁移逻辑。
|
||||
- 保留现有 Unity Localization 官方 `InitializationOperation` 流程;不得重新引入自定义 Bootstrap 或被阻塞的场景预加载。
|
||||
- 新增统一的异步文本解析入口,供动态 UI、Story 元数据与弹窗使用。
|
||||
|
||||
**验收**
|
||||
|
||||
- 删除 `SettingsSave` 后,系统语言和默认 `zh-CN` 均可稳定启动。
|
||||
- 七个代码可从设置界面切换,切换后 `LocalizedString` 自动刷新。
|
||||
- Windows/Android/iOS 的 Use Existing Build 均不出现 String Table 长时间 `0%` 加载。
|
||||
|
||||
### LOC-003:表与导入流水线
|
||||
|
||||
**操作**
|
||||
|
||||
- 由内容维护者在 Unity Localization Editor 中手动创建并维护四个 Collection,以及全部七个 Locale 的表。
|
||||
- 代码与内容侧只维护版本控制中的 UTF-8 CSV 源表;由内容维护者将 CSV 转录到对应的 Unity Table。
|
||||
- 每次转录前校验 Key、Yarn 行 ID、缺失翻译、重复 Key 与 Smart String 占位符。
|
||||
|
||||
**验收**
|
||||
|
||||
- 四张 CSV 与对应 Collection 同名,列顺序统一为七种首发 Locale。
|
||||
- CSV 校验可报告缺失翻译、额外 Key、占位符不一致和重复 Key。
|
||||
- `Message` 至少包含可验证的 Smart String 示例。
|
||||
|
||||
### LOC-004:静态 UI 与系统文本迁移
|
||||
|
||||
**操作**
|
||||
|
||||
- 分批迁移 `UI` 中的静态页面、系统按钮与 Gameplay 标签。
|
||||
- 静态 TMP 文本使用 `LocalizeStringEvent` 或等价的 Unity Localization 组件;动态生成的 Button / Settings 控件改为统一解析入口。
|
||||
- 迁移 Summary、Pause、确认框、设置项、选曲与章节页可见文本。
|
||||
|
||||
**验收**
|
||||
|
||||
- 每完成一个页面,I2 与 Unity Localization 不会同时驱动同一 TMP_Text。
|
||||
- 七语切换后页面不出现 Key、空文本、Missing Script 或旧 I2 文本。
|
||||
|
||||
### LOC-005:动态消息与内容元数据迁移
|
||||
|
||||
**操作**
|
||||
|
||||
- 将 `MessageUIPage` 队列改为保存 `LocalizedString` 和命名参数,而非已解析的裸字符串。
|
||||
- `unlock_song` 通过 `Chapter0_Content` 取歌曲显示名,并用 `system_unlock_song_title` / `system_unlock_song_content` 显示提示。
|
||||
- 迁移歌曲、章节、角色、难度、Timeline Marker、Helper 的可见元数据。
|
||||
|
||||
**验收**
|
||||
|
||||
- 解锁消息能正确代入任意歌曲名;消息排队期间切换语言后,实际显示时使用新语言。
|
||||
- ID、存档 Key、Story Block ID 和解锁行为不因翻译改变。
|
||||
|
||||
### LOC-006:剧情与对话迁移
|
||||
|
||||
**操作**
|
||||
|
||||
- 使用 Yarn Spinner 的 Unity Localization 导入/导出流程维护 `Chapter0_Lines`;不手写或复用错误的 `#line` ID。
|
||||
- 导出当前 Chapter 0 全部台词、选项与行 ID,填入七种测试翻译。
|
||||
- 将 StoryData 的标题、Marker、Helper 对话等非 Yarn 文本迁入 `Chapter0_Content`。
|
||||
|
||||
**验收**
|
||||
|
||||
- 每种语言均可打开所有已配置 TextBlock,选项、跳转、变量、回滚和历史记录正常。
|
||||
- Yarn 行 ID、节点名称和命令参数没有被翻译或改写。
|
||||
|
||||
### LOC-007:Theme TextObject 与 CreatorStudio 契约
|
||||
|
||||
**操作**
|
||||
|
||||
- 将 Official Theme `TextObject` 的 I2 调用替换为 Unity Localization,同时保留 `isLocalized` / `content` 的序列化含义。
|
||||
- 对应更新 CreatorStudio 的共享 `TextObject_BM` 读写契约,但不在 Creator 中维护第二套权威翻译表。
|
||||
- 重建 Windows、Android、iOS Theme AssetBundle。
|
||||
|
||||
**验收**
|
||||
|
||||
- 旧 BM / Bundle 可安全读取;本地化文字在三个目标 Bundle 中正确显示。
|
||||
- Bundle Manifest 与运行时日志均不存在 `I2.Loc` 类型引用。
|
||||
|
||||
### LOC-008:I2 清理
|
||||
|
||||
**操作**
|
||||
|
||||
- 先导出 I2 旧表作为只读迁移备份。
|
||||
- 逐项确认所有场景、Prefab、脚本、Theme Bundle 和 Creator 共享元素已无 I2 引用。
|
||||
- 删除 `Assets/I2`、根目录 I2 配置及依赖代码;将 `SimpleJSON` 用途迁至项目已有的 Newtonsoft JSON。
|
||||
|
||||
**验收**
|
||||
|
||||
- 全项目扫描 `I2.Loc`、`LocalizationManager`、`Localize` 均无业务引用。
|
||||
- 打开场景无 Missing Script,三平台构建通过。
|
||||
|
||||
### LOC-009:七语翻译完成与发布 QA
|
||||
|
||||
**操作**
|
||||
|
||||
- 完成当前 UI、系统消息、内容元数据、Chapter 0 测试剧情的七语翻译。
|
||||
- 执行占位符、字体、长度、断行、输入、回退、保存与 Addressables 回归。
|
||||
- 冻结当前字符串;新文本必须走 CSV -> Review -> Import 流程。
|
||||
|
||||
**验收**
|
||||
|
||||
- 每个 Collection 在七种语言中均无缺失条目和占位符错误。
|
||||
- PC、Android、iOS 依次验证默认语言、切换语言、重启持久化、剧情、解锁、选曲、结算、设置。
|
||||
- 文本溢出和文化语义问题归零或有明确的发布豁免记录。
|
||||
|
||||
## 5. 阶段执行模板
|
||||
|
||||
每一阶段均按以下顺序执行:
|
||||
|
||||
1. 只读复查相关代码、Prefab、场景和当前 String Table。
|
||||
2. 输出该阶段的精确文件清单、风险和回滚方法。
|
||||
3. 只修改该阶段授权范围内的文件。
|
||||
4. 执行 C# 构建与定向文本扫描。
|
||||
5. 提供 Unity 手工测试清单;在用户确认通过前,不进入下一阶段。
|
||||
|
||||
## 6. 关键回归场景
|
||||
|
||||
- 首次启动、系统语言匹配、默认 `zh-CN` 回退。
|
||||
- 设置页连续切换七种语言并立即关闭/重开游戏。
|
||||
- Use Asset Database 与 Use Existing Build 的 Menu -> Story -> Song -> Game 全路径。
|
||||
- MessageBox / SelectionBox 排队时切换语言;歌曲解锁时显示本地化歌曲名。
|
||||
- Story Timeline、Helper、TextBlock、TutorialBlock、SongBlock、Dialog History、回滚 Marker。
|
||||
- 结算页、暂停页、设置页、章节选择、选曲页在窄屏手机和 PC 窗口模式下的溢出检查。
|
||||
|
||||
## 7. 当前阶段后的下一步
|
||||
|
||||
LOC-001 完成后,先单独提交并评估 **LOC-002:运行时本地化基础层**。它只涉及语言存档契约、统一动态文本解析入口和初始化回归,不触碰 I2、Prefab 或现有 String Table 内容。
|
||||
667
docs/stable-diffusion-nova-anime-xl-illustration-workflow.md
Normal file
667
docs/stable-diffusion-nova-anime-xl-illustration-workflow.md
Normal file
@@ -0,0 +1,667 @@
|
||||
# Stable Diffusion / Nova Anime XL 剧情插画工作流
|
||||
|
||||
> 文档状态:Active
|
||||
> 建立日期:2026-07-24
|
||||
> Scope 更新:2026-07-24 — 用户确认商业使用权限;取消逐图许可 Gate;固定 ichni 通用生成参数
|
||||
> 适用项目:`ichni Official`
|
||||
> 当前范围:剧情与音乐相关的静态插画;主角“曦”的人物一致性;Stable Diffusion WebUI Prompt 编写与人工生产流程
|
||||
> 当前模型基线:`Nova Anime XL — IL v19.0`
|
||||
> 本轮验证边界:已核对 WebUI 官方用法、Civitai 模型/API 元数据、作者推荐参数和参考图技术属性;尚未在用户本地 WebUI 中实际生成图片
|
||||
|
||||
## 1. 结论
|
||||
|
||||
目前已经可以跑通“**用户提供画面 Brief → Codex 输出 Positive / Negative Prompt 与参数 → 用户在 WebUI 生成候选图 → 返回原始 PNG/PNG Info → Codex 单变量迭代**”的协作流程。
|
||||
|
||||
本工作流固定使用 `Nova Anime XL` 的 **Illustrious 分支**。截至 2026-07-24,模型页当前最新版本为 `IL v19.0`;不能只记录“Nova Anime XL”,也不能把 Pony 分支的 `score_9` Prompt 前缀混入本项目基线。
|
||||
|
||||
后续每次插画请求,Codex 应交付:
|
||||
|
||||
1. 可直接粘贴到 WebUI 的英文 Positive Prompt。
|
||||
2. 可直接粘贴到 WebUI 的英文 Negative Prompt。
|
||||
3. 完整参数表:Checkpoint、VAE、Sampler、Steps、CFG、尺寸、Seed、Hires、Denoising 等。
|
||||
4. 本轮“固定项 / 可变项 / 唯一实验变量”。
|
||||
5. 人物一致性、构图与后期处理风险。
|
||||
|
||||
正式资产不能只保留聊天中的 Prompt;必须保存原始 PNG、PNG Info、模型/Embedding 哈希、参考图和人工修改记录。
|
||||
|
||||
## 2. 证据与来源
|
||||
|
||||
本工作流使用以下一手资料:
|
||||
|
||||
- [Nova Anime XL 模型页](https://civitai.com/models/376130/nova-anime-xl)
|
||||
- [Civitai Model API:Model 376130](https://civitai.com/api/v1/models/376130)
|
||||
- [Civitai Model Version API:IL v19.0 / 2940478](https://civitai.com/api/v1/model-versions/2940478)
|
||||
- [Civitai:在 AUTOMATIC1111 中使用模型](https://github.com/civitai/civitai/wiki/How-to-use-models#automatic1111)
|
||||
- [AUTOMATIC1111 Stable Diffusion WebUI](https://github.com/AUTOMATIC1111/stable-diffusion-webui)
|
||||
- [AUTOMATIC1111 WebUI Features / SDXL / Hires. fix / PNG Info](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features)
|
||||
- [AUTOMATIC1111 Command Line Arguments and Settings](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Command-Line-Arguments-and-Settings)
|
||||
|
||||
用户已确认当前模型 Profile 的商业使用权限。后续不对每张图重复进行模型许可检查;只有更换 Checkpoint、Embedding、LoRA 或其他外部资源时,才重新建立对应的资源记录。
|
||||
|
||||
## 3. 模型基线
|
||||
|
||||
### 3.1 固定版本
|
||||
|
||||
| Field | Project Baseline |
|
||||
|---|---|
|
||||
| Model | `Nova Anime XL` |
|
||||
| Civitai Model ID | `376130` |
|
||||
| Branch / Version | `IL v19.0` |
|
||||
| Civitai Version ID | `2940478` |
|
||||
| Base Model | `Illustrious` |
|
||||
| Type | `Checkpoint` |
|
||||
| File | `novaAnimeXL_ilV190.safetensors` |
|
||||
| Format | `SafeTensor`, `pruned`, `fp16` |
|
||||
| Approx. Size | `6.46 GiB` |
|
||||
| AutoV2 / Model Hash | `FA486CAAFC` |
|
||||
| SHA256 | `FA486CAAFC330F133605D3C18B418D183812F14946631C6544BFB28730DB6D6F` |
|
||||
| Version Published | `2026-05-12` |
|
||||
|
||||
`IL v19.0` 的作者变更说明强调更高的对比度和更丰富的背景细节。它由 Illustrious / NoobAI 系谱组合而来,所以本项目采用 Illustrious Prompt 语法。
|
||||
|
||||
不要混用:
|
||||
|
||||
- Pony 分支的 `score_9, score_8_up...` 前缀。
|
||||
- 旧 `XL v1.0` 的 SDXL 1.0 基线参数。
|
||||
- 其他 Nova / Anima 模型的 Prompt 或哈希。
|
||||
|
||||
如果用户实际安装的不是 `IL v19.0`,必须先报告文件名与 Model Hash,再为该版本重新建立 Profile。
|
||||
|
||||
### 3.2 作者明确推荐
|
||||
|
||||
模型页给出的通用设置:
|
||||
|
||||
| Parameter | Author Recommendation |
|
||||
|---|---|
|
||||
| Sampler | `Euler a` |
|
||||
| Steps | `20–30` |
|
||||
| Clip Skip | `1–2` |
|
||||
| Denoising Strength | `0.65–0.8`,适用于 img2img 类流程,不是 txt2img 必填项 |
|
||||
| Illustrious CFG Scale | `4–6` |
|
||||
|
||||
作者给出的 Illustrious Positive 前缀:
|
||||
|
||||
```text
|
||||
masterpiece, best quality, amazing quality, 4k, very aesthetic,
|
||||
high resolution, ultra-detailed, absurdres, newest, scenery
|
||||
```
|
||||
|
||||
作者给出的 Illustrious Negative 方向包括:
|
||||
|
||||
```text
|
||||
modern, recent, old, oldest, cartoon, graphic, text, painting, crayon,
|
||||
graphite, abstract, glitch, deformed, mutated, ugly, disfigured, long body,
|
||||
lowres, bad anatomy, bad hands, missing fingers, extra digits, fewer digits,
|
||||
cropped, very displeasing, (worst quality, bad quality:1.2), sketch,
|
||||
jpeg artifacts, signature, watermark, username, simple background,
|
||||
conjoined, bad ai-generated
|
||||
```
|
||||
|
||||
这些词不是不可修改的咒语。比如角色设定表确实需要 `simple background` 时,就必须从 Negative 中移除它;Production Illustration 需要完整背景时再放回。
|
||||
|
||||
### 3.3 `IL v19.0` 作者样例的可复现参数
|
||||
|
||||
多个 `IL v19.0` 作者样例重复使用了以下组合:
|
||||
|
||||
| Parameter | Sample-derived Baseline |
|
||||
|---|---|
|
||||
| Base Width × Height | `768 × 1344` |
|
||||
| Sampler | `Euler a` |
|
||||
| Steps | `20` |
|
||||
| CFG Scale | `4.5` |
|
||||
| Clip Skip metadata | `2` |
|
||||
| Hires Upscale | `1.5` |
|
||||
| Hires Steps | `40` |
|
||||
| Hires CFG Scale | `4` |
|
||||
| Hires Denoising Strength | `0.4` |
|
||||
| Final Size | `1152 × 2016` |
|
||||
|
||||
注意:
|
||||
|
||||
- 作者说明样例由 Diffusers 加自定义 PNG tags 生成,因此不能假定每个字段都与 WebUI 控件一一对应。
|
||||
- 样例没有可靠记录 Hires Upscaler,项目不能擅自把某个 Upscaler 写成“作者推荐”。
|
||||
- AUTOMATIC1111 文档说明 SDXL 系模型本身已经按倒数第二层 CLIP 输出训练,`Clip Skip` 在 WebUI 中通常不是有效调参杠杆。为追踪作者样例可以记录 `2`,但不应把人物漂移归因于它。
|
||||
- 模型页没有要求额外 Refiner。项目基线为 `Refiner: None`,避免第二个模型改变角色风格。
|
||||
- 模型页没有要求外部 VAE。项目从 `VAE: Automatic` 开始;若出现黑图、颜色异常或 VAE NaN,再按 WebUI 文档诊断,不预先强制外部 VAE。
|
||||
|
||||
### 3.4 Project Pilot 尺寸
|
||||
|
||||
以下是项目测试起点,不是模型作者对全部构图的强制值:
|
||||
|
||||
| Use | Base Size | Notes |
|
||||
|---|---|---|
|
||||
| 角色全身 / 竖版插画 | `768 × 1344` | 与 `IL v19.0` 作者样例一致 |
|
||||
| 角色半身 / 常规竖版 | `832 × 1216` | 减少过长画幅,适合人物与环境并重 |
|
||||
| 横版剧情插画 | `1344 × 768` | 接近 16:9 的 SDXL 宽画幅;为最终裁切预留空间 |
|
||||
| 方形构图测试 | `1024 × 1024` | 适合快速观察人物与风格,不代表游戏最终比例 |
|
||||
|
||||
如果最终需要 `1920 × 1080`:
|
||||
|
||||
1. 优先在 `1344 × 768` 建立构图,不直接以超大尺寸做第一轮。
|
||||
2. 通过 Hires 或外部高质量 Upscale 得到更大母版。
|
||||
3. 人工裁切为精确 16:9,再 Downsample 到最终尺寸。
|
||||
4. 不能在未知 UI Safe Area 时默认 Center Crop。
|
||||
|
||||
WebUI 要求 Width / Height 为 8 的倍数。构图比例、最终像素和 UI 留白仍以每张图的 Asset Contract 为准。
|
||||
|
||||
### 3.5 ichni 通用生成设置
|
||||
|
||||
除非单张插画的 Brief 需要不同配置,使用以下 Project Preset:
|
||||
|
||||
| Parameter | General Preset |
|
||||
|---|---|
|
||||
| Checkpoint | `novaAnimeXL_ilV190.safetensors` |
|
||||
| Expected Model Hash | `FA486CAAFC` |
|
||||
| VAE | `Automatic` |
|
||||
| Refiner | `None` |
|
||||
| Sampling method | `Euler a` |
|
||||
| Schedule type | `Automatic` |
|
||||
| Sampling steps | `24` |
|
||||
| CFG Scale | `4.5` |
|
||||
| Clip Skip | `2`,仅用于记录与样例对齐;通常不作为 SDXL 调参变量 |
|
||||
| Seed | 探索阶段 `-1`;选图后锁定 |
|
||||
| Batch | 每轮共 `4` 张 |
|
||||
| Face restoration | `Off` |
|
||||
| Tiling | `Off` |
|
||||
| Hires. fix | 构图探索阶段 `Off` |
|
||||
| Hires Upscaler | `Latent (antialiased)` 作为项目起点 |
|
||||
| Hires upscale | `1.5` |
|
||||
| Hires steps | `20`;必要时与 `40` A/B |
|
||||
| Hires denoising strength | `0.4` |
|
||||
|
||||
参数调整顺序:
|
||||
|
||||
1. 先保持 `Euler a / 24 Steps / CFG 4.5` 不变,只改 Prompt。
|
||||
2. 选定构图并锁定 Seed 后再启用 Hires。
|
||||
3. Prompt 已正确但画面仍欠收敛时,Steps 可在 `20–30` 内调整。
|
||||
4. CFG 默认保持 `4.5`;提示词遵循不足时最多先试 `5.0`,过度锐化、颜色发硬或细节粘连时降到 `4.0`。
|
||||
5. 不同时改变 Sampling method、CFG、Steps 与 Prompt;否则无法判断改善来源。
|
||||
|
||||
## 4. WebUI 最小使用流程
|
||||
|
||||
本文以 `AUTOMATIC1111 Stable Diffusion WebUI` 为准。
|
||||
|
||||
### 4.1 安装 Checkpoint
|
||||
|
||||
1. 把 `novaAnimeXL_ilV190.safetensors` 放入:
|
||||
|
||||
```text
|
||||
stable-diffusion-webui/models/Stable-diffusion/
|
||||
```
|
||||
|
||||
2. 在 WebUI 刷新 Checkpoint 列表,必要时重启 WebUI。
|
||||
3. 在 `Stable Diffusion checkpoint` 中选择 `novaAnimeXL_ilV190`。
|
||||
4. 生成后在 PNG Info 中确认 Model Hash 为 `FA486CAAFC`,不能只看显示名称。
|
||||
|
||||
### 4.2 txt2img
|
||||
|
||||
`txt2img` 用于从文字建立新的场景、构图和镜头:
|
||||
|
||||
1. 粘贴 Positive Prompt 与 Negative Prompt。
|
||||
2. 使用本项目 Parameter Profile。
|
||||
3. 第一轮关闭 Hires,`Batch count` 或 `Batch size` 生成 4 个候选。
|
||||
4. 先评价人物、构图、情绪与音乐关系,不在这一轮追求最终像素细节。
|
||||
5. 选中候选并锁定 Seed。
|
||||
6. 每轮只改一个 Prompt Block 或一个参数。
|
||||
7. 构图批准后再开启 Hires。
|
||||
|
||||
### 4.3 img2img
|
||||
|
||||
`img2img` 用于保留参考图的部分构图、姿态或设计:
|
||||
|
||||
- `Denoising 0.25–0.45`:项目建议的角色/服装保守修订区间。
|
||||
- `Denoising 0.45–0.60`:允许姿态、光线和背景明显变化。
|
||||
- `Denoising 0.65–0.80`:接近作者通用建议,但会显著重绘,不适合承诺精确保留“曦”的脸和服装。
|
||||
|
||||
以上前两个区间是 **ichni Pilot 建议**,不是模型作者原文。必须用相同 Seed 做小范围 A/B Test。
|
||||
|
||||
### 4.4 Hires. fix
|
||||
|
||||
AUTOMATIC1111 的 `Hires. fix` 相当于低分辨率构图后再放大并做第二次 img2img。项目流程:
|
||||
|
||||
1. 低分辨率候选通过构图 Gate。
|
||||
2. 锁定 Seed。
|
||||
3. 先测试 `Upscale 1.5`、`Denoising 0.4`。
|
||||
4. `Hires Steps` 从 `20` 与作者样例的 `40` 做一次 A/B;不是越高越好。
|
||||
5. Upscaler 名称必须写入 Manifest;作者样例未提供该字段。
|
||||
6. 检查眼睛、手、发梢渐变、胸针、包带、裙褶与鞋带是否在第二次采样时改变。
|
||||
|
||||
### 4.5 PNG Info 与 Seed
|
||||
|
||||
WebUI 会把 Generation Parameters 写入 PNG metadata;PNG 可以拖入 `PNG Info` 恢复参数。每个候选必须保留:
|
||||
|
||||
- 原始未压缩 PNG。
|
||||
- Positive / Negative Prompt。
|
||||
- Checkpoint 与 Model Hash。
|
||||
- VAE、Embedding、LoRA 与各自哈希。
|
||||
- Sampler、Scheduler、Steps、CFG。
|
||||
- Width、Height、Seed。
|
||||
- Hires 全部字段。
|
||||
- WebUI 版本与必要 Extension 版本。
|
||||
|
||||
发到聊天软件、转成 JPG 或经过某些图像编辑器后 metadata 可能丢失,因此正式记录不能只依靠 PNG metadata。
|
||||
|
||||
## 5. “曦”的角色设计锚点
|
||||
|
||||
### 5.1 参考图技术状态
|
||||
|
||||
当前参考图:
|
||||
|
||||
```text
|
||||
C:\Users\soull\Downloads\ChatGPT Image 2026年7月23日 05_30_41.png
|
||||
```
|
||||
|
||||
已验证属性:
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Size | `941 × 1672` |
|
||||
| Format | PNG |
|
||||
| Color | sRGB, 3 channels |
|
||||
| Alpha | **None** |
|
||||
| Background | 棋盘格已经烘焙进 RGB 像素,不是真实透明背景 |
|
||||
|
||||
因此:
|
||||
|
||||
- 不要把这张图当透明立绘直接投入 Unity。
|
||||
- 不要直接用整张图做高权重 img2img;棋盘格可能进入新背景。
|
||||
- 若要做人物 Reference Conditioning,应先由人工或获批的图像编辑流程分离人物与棋盘格。
|
||||
- 本轮没有复制或修改该参考图;它仍位于 `Downloads`,不是可供全体成员长期访问的仓库资产。
|
||||
|
||||
### 5.2 视觉观察
|
||||
|
||||
参考图与用户描述共同确认:
|
||||
|
||||
- 少女,长而飘逸的金发,下段明显渐变为高饱和天蓝色。
|
||||
- 单根显著呆毛,天蓝色眼睛。
|
||||
- 灰色露肩上衣、米色背心、深绿色百褶裙。
|
||||
- 黑色颈链;胸前金色星形胸针。
|
||||
- 灰色斜挎包与深色包带。
|
||||
- 双腕黑色手镯/腕带。
|
||||
- 浅灰色过膝至大腿袜。
|
||||
- 棕色系带短靴。
|
||||
|
||||
“金发 → 蓝色发梢”与“金色星形胸针”是最强的快速识别点。发色不能生成成全蓝、平均双色或随机挑染。
|
||||
|
||||
### 5.3 Prompt 不变量
|
||||
|
||||
除非用户在某张插画 Brief 中明确批准变化,以下作为人物不变量:
|
||||
|
||||
```text
|
||||
1girl, solo, teenage girl,
|
||||
very long flowing blonde hair,
|
||||
(blonde hair fading into light blue at the ends:1.2),
|
||||
ahoge, sky blue eyes,
|
||||
gray off-the-shoulder shirt, beige vest,
|
||||
dark green pleated skirt,
|
||||
black choker, gold star-shaped brooch,
|
||||
gray crossbody satchel, black wrist bracelets,
|
||||
light gray thigh-high socks, brown lace-up ankle boots
|
||||
```
|
||||
|
||||
实际镜头如果只到上半身,仍应保留关键服装和配饰词,但不需要为了不可见的靴子与袜子过度拉长 Prompt。
|
||||
|
||||
### 5.4 每张图允许变化
|
||||
|
||||
以下应从剧情与音乐 Brief 中提供,而不是写死在人物标准里:
|
||||
|
||||
- 表情:`serene expression`、悲伤、警觉、惊讶等。
|
||||
- 姿态与动作。
|
||||
- 风向、头发运动幅度。
|
||||
- 镜头:全身、半身、特写、俯视、仰视、Dutch angle。
|
||||
- 光线:Warm / Cold、Rim Light、Backlight、Volumetric Lighting。
|
||||
- 背景清晰度与 Depth of Field。
|
||||
- 服装状态或剧情性变化,但必须得到用户明确批准。
|
||||
|
||||
用户原始标准 Prompt 中的 `serene expression`、`gentle smile`、`warm light`、`blurry background` 不应作为所有剧情插画的永久人物属性。
|
||||
|
||||
## 6. 用户原始 Prompt 与规范化
|
||||
|
||||
### 6.1 用户提供的原始版本
|
||||
|
||||
```text
|
||||
1girl, tennage girl, masterpiece, best quality, ultra detailed,
|
||||
cinematic lighting, soft light, warm light, volumetric lighting,
|
||||
light particles, blurry background, blonde hair, long hair,
|
||||
light blue gradient hair tips, flowing hair, ahoge, sky blue eyes,
|
||||
serene expression, gentle smile, gray off-the-shoulder shirt,
|
||||
beige vest, dark green pleated skirt, black choker, brooch,
|
||||
gray crossbody bag, black hand-bracelets, light gray thigh-high socks,
|
||||
brown lace-up boots, lazypos
|
||||
```
|
||||
|
||||
### 6.2 已识别问题
|
||||
|
||||
| Original | Adjustment |
|
||||
|---|---|
|
||||
| `tennage girl` | 拼写应为 `teenage girl` |
|
||||
| `black hand-bracelets` | 更自然、可识别的 tag 为 `black wrist bracelets` 或 `black wristbands` |
|
||||
| `brooch` | 参考图更明确:`gold star-shaped brooch` |
|
||||
| `blonde hair` + `light blue gradient hair tips` | 合并并适度加权,避免生成全蓝发 |
|
||||
| `warm light` | 移入场景/音乐 Block |
|
||||
| `blurry background` | 移入镜头 Block;完整剧情背景不应永久模糊 |
|
||||
| `serene expression, gentle smile` | 移入剧情表情 Block |
|
||||
| `lazypos` | 不是普通英文描述,而是外部 Textual Inversion 的 Trigger |
|
||||
|
||||
### 6.3 `lazypos` 依赖
|
||||
|
||||
`lazypos` 对应另一个 Civitai 资源,而不是 Nova Anime XL 自带词:
|
||||
|
||||
- [Civitai:Lazy Embeddings / Model 1302719](https://civitai.com/models/1302719)
|
||||
- [Civitai API:Lazy Embeddings / Model 1302719](https://civitai.com/api/v1/models/1302719)
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Resource | `Lazy Embeddings` |
|
||||
| Civitai Model ID | `1302719` |
|
||||
| Version | `lazypos` |
|
||||
| Version ID | `1833157` |
|
||||
| Base Model | `Illustrious` |
|
||||
| File | `lazypos.safetensors` |
|
||||
| SHA256 | `30866692653CB0063484DEC240BC7971ADC5767753B0CBBE072E2DDD7FF16B81` |
|
||||
| Trigger | `lazypos` |
|
||||
|
||||
若要继续使用:
|
||||
|
||||
1. 把文件放入 WebUI 的 `embeddings/`。
|
||||
2. 在 Prompt 开头写 `lazypos`。
|
||||
3. 在 Manifest 中记录 Version ID 与 SHA256。
|
||||
|
||||
若用户没有安装、没有批准或无法确认版本,应删除 `lazypos`,使用本文档的显式质量前缀。不能把未安装的 Trigger 当普通形容词继续保留。
|
||||
|
||||
## 7. Prompt 结构
|
||||
|
||||
每个 Positive Prompt 使用以下顺序:
|
||||
|
||||
```text
|
||||
[OPTIONAL_EMBEDDING],
|
||||
[MODEL_QUALITY_PREFIX],
|
||||
[SUBJECT_AND_IDENTITY],
|
||||
[COSTUME_AND_ACCESSORIES],
|
||||
[EXPRESSION_AND_ACTION],
|
||||
BREAK,
|
||||
[STORY_ENVIRONMENT_AND_MUSIC_VISUALIZATION],
|
||||
[COMPOSITION_AND_CAMERA],
|
||||
BREAK,
|
||||
[LIGHTING_ATMOSPHERE_AND_FINISH]
|
||||
```
|
||||
|
||||
推荐质量前缀:
|
||||
|
||||
```text
|
||||
masterpiece, best quality, amazing quality, 4k, very aesthetic,
|
||||
high resolution, ultra-detailed, absurdres, newest
|
||||
```
|
||||
|
||||
`BREAK` 用来区分人物、场景和灯光语义。需要强调时使用 WebUI 支持的 `(token:weight)`,优先保持在约 `1.1–1.3`;只有通过 A/B Test 后才继续加权。
|
||||
|
||||
Negative Prompt 分成四块:
|
||||
|
||||
```text
|
||||
[STYLE_EXCLUSIONS],
|
||||
[ANATOMY_AND_QUALITY],
|
||||
[LAYOUT_AND_TEXT],
|
||||
[XI_SPECIFIC_DRIFT]
|
||||
```
|
||||
|
||||
不要把所有见过的 Negative 词无限堆叠。Negative 过长会压制需要的特征,并让问题难以定位。
|
||||
|
||||
## 8. 可复制的 Smoke Test
|
||||
|
||||
这是对协作流程的非剧情、非正式资产测试。用途是确认 Checkpoint、Embedding、角色锚点和参数能正常工作,不锁定任何 Chapter 0 画面。
|
||||
|
||||
### 8.1 Positive Prompt — 使用 `lazypos`
|
||||
|
||||
```text
|
||||
lazypos, masterpiece, best quality, amazing quality, 4k, very aesthetic,
|
||||
high resolution, ultra-detailed, absurdres, newest,
|
||||
1girl, solo, teenage girl, full body, standing,
|
||||
very long flowing blonde hair,
|
||||
(blonde hair fading into light blue at the ends:1.2),
|
||||
ahoge, sky blue eyes, serene expression, gentle smile,
|
||||
gray off-the-shoulder shirt, beige vest, dark green pleated skirt,
|
||||
black choker, gold star-shaped brooch, gray crossbody satchel,
|
||||
black wrist bracelets, light gray thigh-high socks,
|
||||
brown lace-up ankle boots,
|
||||
BREAK,
|
||||
quiet original fantasy observatory terrace at night,
|
||||
subtle rhythmic ribbons of blue and gold light moving through the air,
|
||||
wind gently lifting her hair and skirt, calm distant star field,
|
||||
full body character illustration, centered composition,
|
||||
boots fully visible, eye-level camera,
|
||||
BREAK,
|
||||
cinematic lighting, soft rim light, warm and cool color contrast,
|
||||
volumetric lighting, fine light particles, detailed background,
|
||||
slight depth of field
|
||||
```
|
||||
|
||||
### 8.2 Positive Prompt — 无外部 Embedding
|
||||
|
||||
把第一行 `lazypos` 删除即可;其余质量词保持不变。
|
||||
|
||||
### 8.3 Negative Prompt
|
||||
|
||||
```text
|
||||
photorealistic, realistic, 3d, monochrome,
|
||||
multiple views, multiple angles, split view, grid view, two shot,
|
||||
outside border, picture frame, framed, letterboxed, pillarboxed,
|
||||
text, logo, signature, watermark, username,
|
||||
glitch, deformed, mutated, ugly, disfigured, long body, lowres,
|
||||
bad anatomy, bad hands, malformed hands, missing fingers, extra fingers,
|
||||
extra digits, fewer digits, extra arms, extra legs, conjoined fingers,
|
||||
cropped, out of frame, boots out of frame,
|
||||
very displeasing, (worst quality, bad quality:1.2), sketch,
|
||||
jpeg artifacts, simple background, bad ai-generated,
|
||||
short hair, bob cut, black hair, brown hair, fully blue hair,
|
||||
red eyes, green eyes, missing bag, missing brooch
|
||||
```
|
||||
|
||||
### 8.4 第一轮参数
|
||||
|
||||
| Parameter | Value |
|
||||
|---|---|
|
||||
| Checkpoint | `novaAnimeXL_ilV190.safetensors` |
|
||||
| Expected Model Hash | `FA486CAAFC` |
|
||||
| VAE | `Automatic` |
|
||||
| Refiner | `None` |
|
||||
| Sampler | `Euler a` |
|
||||
| Steps | `20` |
|
||||
| CFG Scale | `4.5` |
|
||||
| Width × Height | `768 × 1344` |
|
||||
| Seed | `-1`,先生成 4 个候选 |
|
||||
| Batch | 共 4 张;按显存选择 Batch count / size |
|
||||
| Hires. fix | 第一轮 `Off` |
|
||||
|
||||
### 8.5 选图后的 Hires 参数
|
||||
|
||||
| Parameter | Value |
|
||||
|---|---|
|
||||
| Seed | 锁定入选候选 Seed |
|
||||
| Hires Upscale | `1.5` |
|
||||
| Hires Steps | 先 `20`,再与 `40` A/B |
|
||||
| Hires Denoising | `0.4` |
|
||||
| Hires CFG | `4–4.5` |
|
||||
| Upscaler | 使用本机实际选项;必须记录,当前没有作者指定值 |
|
||||
|
||||
Smoke Test 的通过标准:
|
||||
|
||||
- 金发到蓝色发梢的方向正确,没有变成全蓝发。
|
||||
- 眼睛保持天蓝色。
|
||||
- 星形胸针、斜挎包、深绿色裙、灰袜与棕靴可辨认。
|
||||
- 没有棋盘格、文字、Logo 或双重画框。
|
||||
- Hires 后没有新增手指、断裂包带、错误鞋带或服装融合。
|
||||
|
||||
## 9. 正式插画 Brief
|
||||
|
||||
用户每次提供以下信息;不知道的字段可以写“由 Codex 提议”,但剧情事实不得擅自锁定:
|
||||
|
||||
```text
|
||||
Illustration ID:
|
||||
Chapter / Scene:
|
||||
Story moment:
|
||||
Music track:
|
||||
Music relationship:
|
||||
- timecode / section:
|
||||
- intensity:
|
||||
- rhythm:
|
||||
- dominant instrument or texture:
|
||||
- leitmotif / emotional turn:
|
||||
Characters:
|
||||
Xi emotional state:
|
||||
Action:
|
||||
Environment:
|
||||
Foreground / Midground / Background:
|
||||
Composition:
|
||||
Camera:
|
||||
Lighting:
|
||||
Color script:
|
||||
Must keep:
|
||||
May change:
|
||||
Must avoid:
|
||||
Output use:
|
||||
Aspect ratio / target pixels:
|
||||
UI text-safe area:
|
||||
Reference images and notes:
|
||||
```
|
||||
|
||||
“Music relationship”必须转译为可见信息,例如:
|
||||
|
||||
- Rhythm → 重复形状、光带间距、运动方向。
|
||||
- Intensity → 对比度、粒子密度、镜头距离。
|
||||
- Instrument texture → 材质、边缘锐度、光线扩散。
|
||||
- Harmonic tension → 冷暖冲突、构图失衡、阴影形状。
|
||||
- Leitmotif → 可重复但受控的原创视觉符号。
|
||||
|
||||
不要默认把音符、五线谱或歌词直接画进插画;这通常过于直白,也会产生错误文本。
|
||||
|
||||
## 10. 单变量迭代
|
||||
|
||||
每轮遵循:
|
||||
|
||||
1. 先生成 4 张低成本候选。
|
||||
2. 只选“最接近正确方向”的 Seed,不要求第一轮完美。
|
||||
3. 对照五项评分:
|
||||
- Character Identity
|
||||
- Costume Accuracy
|
||||
- Story Readability
|
||||
- Music-to-Visual Relationship
|
||||
- Composition / UI Safety
|
||||
4. 下一轮只改变一项:
|
||||
- 人物权重;
|
||||
- 表情;
|
||||
- 动作;
|
||||
- 镜头;
|
||||
- 背景;
|
||||
- 光线;
|
||||
- Denoising;
|
||||
- Hires。
|
||||
5. 记录变更前后 Prompt Diff 和参数 Diff。
|
||||
6. 构图批准后才做 Hires、Inpaint 和人工清理。
|
||||
|
||||
如果同一 Seed 连续两轮仍无法保持发色、脸、服装和配饰,不继续无限加权。升级到:
|
||||
|
||||
1. 清理后的人物参考图 + 保守 img2img;
|
||||
2. 可选的 IP-Adapter / ControlNet Reference 流程;
|
||||
3. 经批准后训练专用“曦” Character LoRA。
|
||||
|
||||
Prompt-only 能维持设计方向,但不能保证跨多张正式插画的精确人物一致性。
|
||||
|
||||
## 11. 已确认的模型使用权限
|
||||
|
||||
用户已确认当前 Nova Anime XL 模型允许:
|
||||
|
||||
- 不署名使用模型。
|
||||
- 销售生成的图片。
|
||||
- 在收费的图片生成服务上运行。
|
||||
- 在 Civitai 上运行。
|
||||
- 分享包含该模型的 Merge。
|
||||
- 分享 Merge 时使用不同的权限设置。
|
||||
|
||||
因此本项目不要求“额外实质编辑”作为商业使用或 Release Gate,也不对每张插画重复进行同一组商业权限检查。未来仍会根据视觉质量、人物一致性、构图和游戏集成需求正常编辑插画,但这属于生产流程,不是商业使用前置条件。
|
||||
|
||||
只有主动切换到未批准的 Checkpoint、Embedding、LoRA 或其他外部生成资源时,才需要建立新的资源 Profile;当前已批准组合不重复复核。
|
||||
|
||||
## 12. Asset Manifest
|
||||
|
||||
每张正式插画至少记录:
|
||||
|
||||
```text
|
||||
illustration_id
|
||||
chapter
|
||||
scene
|
||||
music_track
|
||||
music_timecode_or_section
|
||||
brief_version
|
||||
checkpoint_name
|
||||
civitai_model_id
|
||||
civitai_version_id
|
||||
model_sha256
|
||||
webui_version
|
||||
vae
|
||||
refiner
|
||||
embedding_names_and_hashes
|
||||
lora_names_weights_and_hashes
|
||||
positive_prompt
|
||||
negative_prompt
|
||||
sampler
|
||||
scheduler
|
||||
steps
|
||||
cfg_scale
|
||||
width
|
||||
height
|
||||
seed
|
||||
hires_upscaler
|
||||
hires_steps
|
||||
hires_scale
|
||||
hires_denoising
|
||||
reference_ids
|
||||
generation_date
|
||||
manual_edits
|
||||
working_file
|
||||
export_file
|
||||
unity_runtime_path
|
||||
review_status
|
||||
reviewer
|
||||
notes
|
||||
```
|
||||
|
||||
推荐状态:
|
||||
|
||||
```text
|
||||
BRIEF
|
||||
PROMPT_REVIEW
|
||||
GENERATED_DRAFT
|
||||
SELECTED
|
||||
EDITING
|
||||
TECH_REVIEW
|
||||
UNITY_REVIEW
|
||||
APPROVED
|
||||
REJECTED
|
||||
```
|
||||
|
||||
## 13. 进入 Unity 前的 Gate
|
||||
|
||||
最终插画必须同时通过:
|
||||
|
||||
1. **Narrative Gate**:符合批准的剧情事实与人物状态。
|
||||
2. **Music Gate**:视觉节奏与指定音乐段落有明确、可解释的对应。
|
||||
3. **Character Gate**:曦的发色、眼睛、服装、胸针、包和配饰满足 Brief。
|
||||
4. **Visual Gate**:没有 AI 假文字、坏手、重复肢体、断裂配件、脏边或随机 Logo。
|
||||
5. **Reproducibility Gate**:Checkpoint、Embedding、Prompt、Seed 与关键参数记录完整。
|
||||
6. **Technical Gate**:尺寸、裁切、Safe Area、色彩空间、压缩、Memory 和目标平台清晰度合格。
|
||||
|
||||
在以上 Gate 通过前:
|
||||
|
||||
- 不覆盖生产资产。
|
||||
- 不把图标记为 `final`。
|
||||
- 不写入 Unity Prefab、StoryData 或 Yarn。
|
||||
- 不批量生产同系列插画。
|
||||
|
||||
## 14. 后续协作入口
|
||||
|
||||
用户可以直接使用:
|
||||
|
||||
> 按照 `docs/stable-diffusion-nova-anime-xl-illustration-workflow.md`,为以下画面编写 Nova Anime XL IL v19.0 的 Positive Prompt、Negative Prompt 和完整 WebUI 参数。只改变本次 Brief 允许变化的部分,并列出唯一实验变量:
|
||||
> `[粘贴 Illustration Brief]`
|
||||
|
||||
Codex 收到 Brief 后应先输出可复制 Prompt 和参数,不擅自生成 Production Asset,也不修改 Unity / Yarn。用户返回候选图与 PNG Info 后,再进入下一轮单变量调整。
|
||||
Reference in New Issue
Block a user