DC 角色同人创作在 AI 绘画圈一直很活跃,尤其是“角色性转 + 族裔重设”这类二创方向。这次我们来看一个具体案例:夜翼(Nightwing)拉丁裔性转设定。简单说,就是把 DC 漫画里的迪克·格雷森(Dick Grayson)从形象、文化背景到服装细节都重新构想一遍,并借 AI 绘画工具把设想落地成视觉概念图。
这个案例的核心不是画技,而是一套可以复用的工作流:角色核心特征拆解、提示词工程、LoRA 与角色一致性控制、图生图迭代、批量出图。无论你关注的是 DC 同人创作,还是 AI 角色概念设计,这篇文章都能给你一套实操思路。
文章会按以下顺序展开:
- 先梳理夜翼拉丁裔性转的角色设定思路;
- 再列出 AI 绘画本地部署的环境要求;
- 然后给出文生图、图生图、多视图一致性三套完整提示词与参数;
- 接着演示批量出图与效果筛选流程;
- 最后补充常见问题排查与合规提醒。
1. 核心能力速览
先把这套创作流程的核心能力列成表格,方便你快速判断适不适合照做。
| 能力项 | 说明 |
|---|---|
| 创作主题 | 夜翼(Nightwing)拉丁裔性转角色概念设计 |
| 角色核心 | 基于 DC 漫画角色迪克·格雷森,保留角色辨识度进行性别转换和族裔重设 |
| 主要工具 | Stable Diffusion WebUI / ComfyUI,可选 LoRA 模型 |
| 推荐显卡 | 6GB 显存起步,8GB 显存体验更稳 |
| 支持平台 | Windows / Linux / Mac(M 系列可跑 CPU 推理,速度较慢) |
| 启动方式 | 一键启动包或命令行启动 WebUI |
| 输出内容 | 角色概念图、正面/侧面多视图、表情差分图 |
| 接口能力 | WebUI 自带 API,可批量提交任务 |
| 批量任务 | 支持,通过 API 或脚本批量生成多套设定图 |
| 适合场景 | 同人角色设计、插画草稿、角色设定集、AI 辅助原画预研 |
从材料看,这种角色设定类创作更依赖“提示词 + 角色一致性控制”,对显卡的要求并不高。6GB 显存跑 SD 1.5 模型完全够用,SDXL 则需要 8GB 以上。如果你手头只有普通配置,用 SD 1.5 系列模型也能完成大部分工作。
2. 适用场景与使用边界
2.1 适合谁用
这套工作流适合以下人群:
- DC 同人创作者:想给夜翼做一个不同文化背景和性别表达的二创版本;
- 角色概念设计师:需要快速产出多套角色设定图,给甲方或团队做方向参考;
- AI 绘画进阶玩家:想系统学习提示词拆解、角色一致性控制、批量出图流程;
- 图文自媒体作者:需要为文章、视频配差异化角色插图。
2.2 使用边界与合规提醒
同人创作属于二次创作,要注意几个边界:
- DC 旗下角色(夜翼、迪克·格雷森)是华纳兄弟 / DC 的版权角色。个人学习、同人展示、非商用创作一般属于合理使用范畴,但如果你要拿去做商业项目、印刷售卖、NFT 发售,需要先确认版权授权。
- 角色性转或族裔重设属于创作者对原角色的再诠释,本身是常见的同人创作方式,但宣传时不要声称这是官方设定,避免误导。
- 使用 AI 生成角色图,在社交平台发布时应标注“AI 生成 / AI 辅助创作”。
- 不得将生成结果用于任何色情、低俗、歧视性内容。夜翼虽然是紧身衣角色,性转设计时也应保持正面、健康的造型表达。
3. 角色设定思路:先拆解,再生成
AI 绘画最忌讳直接扔一句“画一个夜翼性转拉丁裔”就出图,生成结果会很飘。正确做法是先拆解角色元素。
3.1 夜翼的标志性元素
夜翼的经典视觉识别点包括:
- 头发:黑色微卷短发;
- 面具:黑色多米诺面具,露出下颌和嘴;
- 战衣:黑蓝配色紧身战衣,胸口有蓝色飞翼标志;
- 武器:两条可折叠的“护卫棒”(Eskrima sticks);
- 身材:体操选手级别的匀称肌肉线条,灵巧敏捷。
3.2 拉丁裔重设的含义
“拉丁裔(Latina)”在这里更多指视觉和文化符号上的转换。参考方向:
- 肤色:更深的小麦色或暖棕色;
- 发色:深黑或深棕,可带自然卷度;
- 五官轮廓:融入拉丁裔特征的眉眼结构;
- 服装元素:可以在战衣上增加拉丁文化风格的装饰纹样,例如几何图腾、暖色线条点缀;
- 场景背景:可以换成拉美城市街景、夏日黄昏、热带植物环境。
3.3 性转后的角色气质
迪克·格雷森原作是阳光、敏捷、略带俏皮的男性角色。性转后,建议保留这些气质:
- 身形:女性体操运动员式的修长肌肉线条,不要夸张身材比例;
- 动态:轻盈、跃动感强,突出灵敏而非力量压制;
- 表情:自信带一点调皮,符合夜翼一贯的气场。
这个拆解过程会直接决定后面的提示词怎么写。建议写在自己笔记里,每一条都想清楚,再进 WebUI 操作。
4. 本地部署环境准备
4.1 硬件要求
先看显卡和显存。以 Stable Diffusion WebUI 为例:
| 配置项 | 最低要求 | 推荐配置 |
|---|---|---|
| 显卡 | NVIDIA GTX 1660 6GB | NVIDIA RTX 3060 12GB 及以上 |
| 显存 | 6GB | 12GB |
| 内存 | 16GB | 32GB |
| 磁盘空间 | 20GB(模型 + 缓存) | 50GB(多模型 + 训练素材) |
| 操作系统 | Windows 10 / Ubuntu 20.04 | Windows 11 / Ubuntu 22.04 |
如果你的显卡是 AMD 或 Intel 核显,也能跑,但需要安装 DirectML 或 OpenVINO 版本,速度会明显慢一些。
4.2 部署方式
最省事的方式是用整合包,比如秋叶大佬的 SD WebUI 整合包,内置 Python 环境和 Git,解压即用。也可以手动部署:
# 克隆官方仓库 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git cd stable-diffusion-webui # Windows 直接运行启动脚本 webui-user.bat # Linux / macOS 运行启动脚本 ./webui.sh启动后浏览器打开http://127.0.0.1:7860就能看到 WebUI 界面。默认端口如果被占用,可以在启动参数里改:
# Linux / macOS 示例 ./webui.sh --port 78614.3 模型选择
角色概念设计建议准备两个模型:
- 基础模型:
anything-v5或Counterfeit-V3.0,动漫风格表现好,对角色设定类任务友好; - 写实模型:
Realistic Vision V5.1,如果想做偏写实的真人化设计。
本次案例建议先用动漫底模,因为性转 + 族裔重设这类概念图,动漫风格更容易控制角色辨识度,不会因为写实细节偏离角色原型太多。
模型文件下载后放到目录:
stable-diffusion-webui/models/Stable-diffusion/如果是 LoRA 模型,放到:
stable-diffusion-webui/models/Lora/5. 提示词工程:文生图核心测试
进入 WebUI 后,第一件事不是直接出最终图,而是跑通一次文生图流程,确认环境没问题,再逐项调参数。
5.1 基础提示词
这里是一套针对“夜翼拉丁裔性转”的文生图提示词,可以复制到 WebUI 的 Prompt 输入框:
(high detailed illustration:1.2), best quality, masterpiece, (1girl:1.1), latina woman, tan skin, dark brown hair, wavy hair, black hair, athletic female body, gymnast build, toned abs, wearing black and blue superhero suit, bird emblem on chest, domino mask, holding eskrima sticks, dynamic pose, jumping, acrobatic action, city street background, sunset lighting, realistic proportions, shallow depth of field, vibrant color palette反向提示词:
lowres, bad anatomy, bad hands, missing fingers, extra digits, worst quality, low quality, jpeg artifacts, watermark, signature, nsfw, naked, oversized breasts, distorted face需要说清楚:这不是 DC 官方名称,生成出来的是一个“基于夜翼灵感”的拉丁裔女性超级英雄概念。为了降低版权敏感度,模型提示词里可以不直接写nightwing的专属词,而用“蓝色的飞翼勋章”“黑蓝战衣”“护卫棒”这些视觉特征组合。这样既保留辨识度,也减少模型误判。
5.2 关键参数设置
建议第一轮用保守参数测试:
| 参数项 | 建议值 | 备注 |
|---|---|---|
| 采样器 | DPM++ 2M Karras | 稳定,出图快 |
| 步数 | 25 | 和采样器匹配 |
| 宽高 | 512x768 | 竖构图,适合角色设定 |
| CFG Scale | 7.0 | 太高容易过锐化 |
| 种子 | -1(随机) | 找到好构图后固定种子 |
| 批量张数 | 4 | 第一轮多出几张看方向 |
点击 Generate 后,4 张图通常在几十秒内出完。这一步的目的是核对构图、风格和角色辨识度,不建议第一轮就追求完美。
5.3 判断输出是否达标
从三个维度判断:
- 角色辨识度:能不能看出这是夜翼?蓝色飞翼标志、黑蓝配色、多米诺面具、护卫棒至少出现三项;
- 拉丁裔方向:肤色、发色、五官是否偏离设定;
- 构图质量:动态是否轻盈,背景是否压得过强。
如果第一轮结果方向不对,优先调整描述性提示词,而不是盲目换模型。比如觉得“不够拉丁裔”,就把tan skin改成warm brown skin tone,再添加brazilian / mexican inspired facial features这类更具体的描述。
6. 角色一致性控制:图生图与 LoRA 调优
文生图随机性大,同一个人物换一个角度就完全不像。角色设定类任务必须解决一致性问题。
6.1 固定种子 + 微调提示词
最简单的办法是找到一张满意的图,记下种子号,然后保持种子不变,只调整提示词中的朝向、表情或服装细节。
# 固定种子示例 seed=123456789 # 只改变表情描述 happy expression -> confident smirk这样做的好处是构图和人物基本不变,只改局部。缺点是种子固定后改动空间有限,适合小修。
6.2 图生图 / img2img 迭代
更常用的方式是图生图。把第一轮最满意的一张图上传到 img2img 面板,设置较低的重绘幅度:
| 参数项 | 建议值 | 说明 |
|---|---|---|
| 重绘幅度 Denoising | 0.4 - 0.55 | 太低几乎不变,太高会重置人物 |
| 宽高 | 与原图一致 | 避免比例被拉伸 |
| 采样器和步数 | 同上 | 保持一致 |
| 参考图 | 原图 | 通过反推提示词生成新变体 |
图生图适合做“同一角色多姿势”“同一角色不同表情”这类扩展。操作时把参考图拖进操作区,点 Interrogate CLIP 或 DeepDanbooru 自动反推提示词,再手动补充变化项。
6.3 LoRA 训练
如果要做 10 张以上长期设定,建议直接训练一个角色 LoRA。训练素材 20 到 30 张图即可,要求:
- 图里人物角度多样(正面、侧面、半侧、背面);
- 服饰尽量统一,不要一会儿泳装一会儿西装;
- 背景简单,突出人物主体;
- 图像分辨率统一,建议 512x512。
训练 LoRA 的目标是教会模型“这个人物的长相和特征”,而不是“这个人物的动作”。所以在素材里,人物的脸和体型要一致,动作可以多样。
训练完成后,生成时在提示词里加:
<lora:nightwing_latina_v1:0.8>权重系数建议从 0.7 开始测试。太高会让角色脸型完全锁死,太低则看不到 LoRA 效果。
6.4 多视图设定图
角色设定集通常需要正面、背面、侧面三视图。WebUI 里可以安装ControlNet插件,用姿态控制图固定身体骨架,再套用角色 LoRA。
ControlNet 安装后在 WebUI 的扩展管理里搜索sd-webui-controlnet,安装后重启服务。姿态参考图可以是自己画的简笔骨架,也可以用 OpenPose 编辑器生成。生成时控制权重设为 0.7 到 0.9,让模型在保持姿态的同时保留角色特征。
7. 批量出图:一次生成多套设定方案
单个角色设定往往需要多套服装、多组表情、多个背景。手工一张张生成效率太低,这部分需要依赖 WebUI 的 API 接口。
7.1 开启 API
WebUI 默认启动后 API 就是开启状态,地址为http://127.0.0.1:7860/sdapi/v1/txt2img。不需要额外装插件。
7.2 批量调用脚本
下面的 Python 脚本可以批量生成多组角色设定图,每组使用不同提示词组合:
import requests import json import base64 import os # 定义函数:调用 txt2img 接口生成图片 def generate_image(prompt, negative_prompt, output_path, seed=-1): url = "http://127.0.0.1:7860/sdapi/v1/txt2img" payload = { "prompt": prompt, "negative_prompt": negative_prompt, "steps": 28, "width": 512, "height": 768, "cfg_scale": 7.0, "sampler_name": "DPM++ 2M Karras", "seed": seed, "batch_size": 1, "n_iter": 1 } response = requests.post(url, json=payload, timeout=300) response_data = response.json() if "images" in response_data: img_data = base64.b64decode(response_data["images"][0]) with open(output_path, "wb") as f: f.write(img_data) print(f"已保存: {output_path}") else: print(f"生成失败: {response_data}") # 定义多组提示词,每组的角色特征一致,只改场景和服装描述 scene_variants = [ "city rooftop at night, blue neon lights", "latin american street, warm sunset, colorful buildings", "training gym interior, bright fluorescent lights", "beach boardwalk, golden hour, palm trees" ] outfit_variants = [ "classic black and blue suit, bird emblem", "casual streetwear, leather jacket, blue scarf", "training outfit, tank top and cargo pants", "traditional latin american inspired vest, geometric patterns" ] negative_prompt = ( "lowres, bad anatomy, bad hands, missing fingers, extra digits, " "worst quality, low quality, jpeg artifacts, watermark, signature, " "nsfw, naked, oversized breasts, distorted face" ) base_prompt = ( "high detailed illustration, best quality, masterpiece, " "1girl, latina woman, tan skin, dark brown wavy hair, athletic female body, " "gymnast build, domino mask, holding eskrima sticks, " "dynamic pose, acrobatic action, " "blue bird emblem on chest, black and blue color scheme" ) os.makedirs("outputs", exist_ok=True) # 批量循环生成 index = 0 for scene in scene_variants: for outfit in outfit_variants: prompt = f"{base_prompt}, {outfit}, {scene}" output_file = f"outputs/nightwing_latina_{index:04d}.png" generate_image(prompt, negative_prompt, output_file, seed=1000 + index) index += 1 print(f"批量任务完成,共生成 {index} 张图片")每次生成后,建议立即在脚本里记下种子和提示词。否则后面想复现某一张图,就要重新翻日志,很麻烦。
7.3 批量任务失败重试
批量任务最怕中途断掉。建议脚本里加 try-except 和重试逻辑,单个失败不影响后续任务:
import time def generate_image_with_retry(prompt, negative_prompt, output_path, seed=-1, max_retry=3): for attempt in range(max_retry): try: generate_image(prompt, negative_prompt, output_path, seed) return True except Exception as e: print(f"第 {attempt + 1} 次尝试失败: {e}") time.sleep(5) return False如果是大批量任务(几十上百张),建议把任务拆成多个小批次,每批 10 张左右,输出到不同子目录,避免中断后全部重跑。
8. 资源占用与性能观察
8.1 显存占用观察方法
生成图片时,打开任务管理器(Windows)或nvidia-smi(Linux),可以实时观察显存占用。
# Linux 下每 2 秒刷新显存状态 watch -n 2 nvidia-smiSD 1.5 模型在 512x768 分辨率、batch size 为 1 的情况下,6GB 显存可以流畅运行。如果 batch size 调到 4,显存占用会翻倍,8GB 显存也会紧张。
8.2 不同参数对性能的影响
| 参数 | 影响 |
|---|---|
| 分辨率 | 512x768 约占用 5-6GB;1024x1024 占用 8-10GB |
| 步数 | 步数越多生成时间越长,显存基本不变 |
| batch_size | 每增加 1 张,显存占用明显上升 |
| ControlNet | 开启 ControlNet 会增加约 1-2GB 显存 |
| 面部修复 | 开启面部修复会增加后处理时间,显存占用小幅上升 |
8.3 降低显存占用的方法
- 使用 SD 1.5 模型而非 SDXL;
- 分辨率控制在 768 以下;
- 生成后需要大图,可以用“高清修复 / Hires Fix”,先出小图再放大;
- 关闭 WebUI 里不必要的扩展插件;
- Linux 下加启动参数
--medvram(8GB 显存)或--lowvram(6GB 以下)。
# 8GB 显存建议启动参数示例 ./webui.sh --medvram --xformers9. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 启动后页面打不开 | 端口被占用或服务未启动 | 查看命令行日志,检查端口占用 | 换端口启动,如--port 7861 |
| 提示词输入后生成的图完全无关 | 模型没切换,还在用默认的 pruned 模型 | WebUI 左上角检查当前模型 | 切换到动漫底模或写实底模 |
| 生成的人脸崩坏 | 步数太低或分辨率太小 | 检查步数和分辨率 | 步数提到 28,分辨率提到 768 |
| 显存不足,直接生成失败 | 模型太大或 batch 太多 | 查看nvidia-smi确认现有显存 | 换 SD 1.5 模型,降低 batch 到 1 |
| 提示词出现关键词但画面没有体现 | 权重不够 | 把关键词权重调整到 1.1 - 1.3 | 用(keyword:1.2)格式加权重 |
| 角色在不同图中长得不像 | 未做角色一致性控制 | 回顾是否用了固定种子、LoRA | 改用图生图 + LoRA 工作流 |
| 批量脚本报错连接失败 | WebUI 未开启或 API 地址错误 | 浏览器访问 API 地址,看是否返回 JSON | 确认 WebUI 已启动,检查端口号 |
9.1 模型文件缺失
生成时报错提示模型文件不存在,通常是因为模型没有放到正确的目录。检查:
stable-diffusion-webui/models/Stable-diffusion/确保文件名不带.txt后缀,文件格式应为.safetensors或.ckpt。
9.2 CUDA / 显卡驱动问题
启动日志中出现CUDA is not available时,先确认显卡是否为 NVIDIA 显卡,再检查驱动。更新驱动后,重新安装对应版本的 PyTorch:
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu1189.3 API 调用超时
批量生成时,如果单张图生成耗时较长,可能出现请求超时。在脚本中把 timeout 参数调大:
response = requests.post(url, json=payload, timeout=600)10. 效果筛选与后续迭代
批量生成后,你会得到几十张图,但真正能用的可能只有几张。筛选建议分三轮:
10.1 第一轮:构图筛选
快速翻看所有图,排除构图歪斜、人物截断、背景抢戏的图。把构图达标的图选出,放进selected/文件夹。
10.2 第二轮:角色辨识度筛选
放大图片查看细节:
- 面具是否遮住大半张脸;
- 蓝色飞翼标志是否清晰;
- 黑蓝配色是否统一;
- 是否握着护卫棒。
缺少核心元素的图,即使构图好看,也要淘汰。角色设定图第一优先级是“像这个角色”,不是“好看”。
10.3 第三轮:细节修复
选中的图可能还有手部崩坏、脸型不稳定等问题。用图生图的局部重绘功能(Inpaint)修复:
- 手部崩坏:涂抹手部区域,提示词写
hands, five fingers; - 眼睛变形:涂抹眼部,提示词写
detailed eyes; - 面具不对称:涂抹面具区域,提示词写
black domino mask, symmetrical.
打开 WebUI 的 img2img 页面,切换到 Inpaint 模式,上传图片,用画笔涂抹需要修复的区域,重绘幅度建议 0.5 左右。
10.4 迭代方法
筛选后如果整体方向正确但细节还不够,会进入第二轮迭代:把“筛选后的最佳图”作为新参考图,重新走图生图流程,微调权重和提示词。每轮只改一个变量,不要同时改三个东西,否则无法判断是哪个改动起了作用。
11. 版权提示与创作边界
最后这一点很重要,重提一次。
夜翼是 DC 漫画公司版权角色,迪克·格雷森的原型设定来自 DC 官方作品。本次创作“夜翼拉丁裔性转”属于同人二次创作范畴。个人学习、练习、交流展示没有问题,但需要注意:
- 不要删除或伪造官方版权标注;
- 使用 AI 生成的图建议在发布时标注“AI 生成,基于 DC 角色夜翼的同人设定”;
- 不要将同人设定说成官方设定;
- 如果作品被平台要求标注“AI 参与创作”,按平台要求执行;
- 涉及商业授权、出版物、联名合作时,先联系版权方确认授权路径。
12. 总结与下一步
这次我们完成了一个比较完整的“夜翼拉丁裔性转”AI 角色概念设计流程。
值得优先尝试的是提示词拆解思路:先拆角色核心特征,再翻译成 AI 能理解的视觉描述,最后通过多轮图生图迭代逼近自己想要的设计方向。这个过程不局限于夜翼,任何 DC 或超级英雄角色的二创概念设计都能复用同样的方法论。
最容易踩的坑有两个:一是跳过角色特征拆解直接生成,出来的图“好看但不认识”;二是不做种子固定和一致性控制,角色每张图都不同,无法形成设定集。这两点建议第一次尝试时重点注意。
后续可以继续扩展的方向:
- 用 ControlNet 制作三视图设定集,输出成完整的角色设定文档;
- 针对拉丁裔特征训练一个专用 LoRA,减少提示词中的人种特征描述波动;
- 用批量 API 脚本生成多表情、多姿势、多服装的设定矩阵;
- 结合 ComfyUI 工作流,把“文生图 - 图生图 - 局部重绘 - 放大”串成一条流水线,一键出终稿。
如果你手头有一张满意的初稿,建议先把种子固定,再做一轮 Img2Img 和 Inpaint 测试。这两步跑通之后,你的角色设定图质量会立刻上一个台阶。