数字人形象生成:从零开始创造你的虚拟形象
这篇文章帮你创建数字人形象
数字人看起来好不好看,形象设计占了一半的功劳。这篇文章会介绍各种创建数字人形象的方法,从最简单的一句话生成,到需要专业技能的3D建模。读完你就能知道什么场景该用什么方法,怎么生成一个好看的数字人形象。
先搞清楚:你想做什么样的数字人?
在开始之前,先问问自己:你想做什么样的数字人?
| 类型 | 特点 | 适合场景 | 技术难度 |
|---|---|---|---|
| 2D卡通 | 二次元风格,Q版形象 | VTuber、游戏 | ⭐ |
| 2D写实 | 像真人的照片 | 短视频、新闻 | ⭐⭐ |
| 3D风格化 | 卡通但有立体感 | 虚拟主播、社交 | ⭐⭐⭐ |
| 3D写实 | 非常逼真 | 高端直播、影视 | ⭐⭐⭐⭐⭐ |
不同类型需要完全不同的工具和方法,我们先从最简单的方法开始讲。
1. AI生成图片:躺着就能出图
1.1 什么是AI图像生成?
AI图像生成就是:你给AI一段文字描述,AI就能画出一张图。比如你说”一个微笑着的女孩”,AI就能生成一张符合描述的图片。
现在最火的AI图像生成工具有:
- Midjourney:效果最好,但收费
- Stable Diffusion:免费开源,效果也很好
- DALL-E:OpenAI出品,质量稳定
1.2 Stable Diffusion:免费生成数字人
Stable Diffusion是免费开源的AI图像生成模型,任何人都可以本地部署使用。
安装Stable Diffusion WebUI
方法一:Windows一键安装(推荐新手)
- 去 GitHub 搜索 “AUTOMATIC1111 Stable Diffusion WebUI”
- 下载最新的整合包
- 解压后运行
webui-user.bat - 等待下载模型(第一次会下载几个G的模型)
- 打开浏览器访问 http://127.0.0.1:7860
方法二:Python手动安装
# 1. 克隆仓库
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui
# 2. 安装Python依赖
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt
# 3. 下载模型
# 从 huggingface.co 下载 SD 1.5 或 SDXL 模型
# 4. 启动
python launch.py生成数字人图片
打开WebUI后,你会看到这样的界面:
┌──────────────────────────────────────────────────────────────┐
│ Stable Diffusion WebUI │
├──────────────────────────────────────────────────────────────┤
│ │
│ Prompt: │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ 1girl, beautiful woman, portrait, digital human, │ │
│ │ detailed skin, realistic photo, studio lighting │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
│ Negative Prompt: │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ blurry, low quality, watermark, text, ugly │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
│ Sampling method: [Euler a ▼] │
│ Steps: [20----●------] 20 │
│ CFG scale: [7----●-------] 7 │
│ Width: [512---●------] 512 Height: [512---●------] 768 │
│ │
│ [Generate] │
│ │
│ ┌─────────────┐ │
│ │ │ │
│ │ 生成结果 │ │
│ │ │ │
│ └─────────────┘ │
│ │
└──────────────────────────────────────────────────────────────┘
生成数字人的提示词模板:
# 正面提示词(Prompt)
(masterpiece, best quality, ultra-detailed),
realistic photo of a beautiful young woman,
detailed skin texture, natural lighting,
half body portrait, professional photography,
(digital human:1.3), (virtual avatar:1.2),
clean background, 8k uhd, dslr quality
# 负面提示词(Negative Prompt)
blurry, low quality, watermark, text, ugly,
deformed, bad anatomy, bad hands, extra fingers,
mutated, disfigured, poorly drawn face,
(3d render, cartoon, anime:1.5)进阶:使用LoRA定制风格
LoRA(Low-Rank Adaptation)是一种轻量级的模型微调技术,可以让你生成特定风格的人物。
# 1. 下载LoRA模型(比如写实风格的)
# 从 Civitai 或 Hugging Face 下载 .safetensors 文件
# 2. 将LoRA文件放到 models/Lora 目录
# 3. 在WebUI中点击 "Show Extra Networks"
# 然后选择你的LoRA
# 4. 在提示词中添加LoRA引用
# <lora:my_lora_name:0.7>
# 0.7 是强度,0-1之间,越高越像LoRA的风格1.3 Midjourney:效果更好的在线工具
Midjourney是目前效果最好的AI图像生成工具之一,但需要付费订阅。
使用步骤:
- 加入 Discord 服务器
- 在频道里输入
/imagine命令 - 输入提示词
- 等待生成,4张图
- 可以选择放大 (U) 或生成变体 (V)
Midjourney数字人提示词:
/imagine prompt: photorealistic portrait of a beautiful woman,
digital human, detailed skin texture, subsurface scattering,
studio lighting, 8k, octane render,
--ar 3:4 --v 6 --style raw1.4 一致性生成:保持人物一致
AI生成最大的问题是:每次生成的人物都不一样。如果你想生成”同一个人”的不同角度或表情,需要用以下方法:
方法一:img2img + 参考图
# 使用Stable Diffusion的img2img保持一致性
# 1. 先生成一张满意的图
# 2. 上传作为参考图
# 3. 用不同的提示词生成变体
# 4. 调整重绘幅度(Denoising Strength),0.3-0.5比较稳定方法二:IP-Adapter
IP-Adapter是腾讯开源的一致性控制方案:
# IP-Adapter使用示例
from diffusers import StableDiffusionInflatedImg2ImgPipeline
pipe = StableDiffusionInflatedImg2ImgPipeline.from_pretrained(
"stabilityai/stable-diffusion-2-1",
torch_dtype=torch.float16,
)
# 加载IP-Adapter
pipe.load_ip_adapter("h94/IP-Adapter", weight_name="ip-adapter_sd15.bin")
# 使用参考图生成新图
image = pipe(
prompt="digital human in formal suit, professional pose",
ip_adapter_image=reference_image, # 参考图
generator=generator,
).images[0]方法三:训练自己的LoRA
如果你想长期做某个角色的数字人,可以训练专属的LoRA:
# 使用Kohya训练LoRA
# 1. 准备15-30张同一人物的不同照片
# 2. 安装 kohya_ss
git clone https://github.com/kohya-ss/sd-scripts.git
cd sd-scripts
# 3. 准备训练数据
# 将照片放到同一个文件夹
# 创建重复次数文件
# 4. 开始训练
python train_network.py \
--pretrained_model=sd-model.safetensors \
--train_data_dir=training_data \
--output_dir=output \
--network_module=locon \
--max_train_steps=1000 \
--learning_rate=1e-4 \
--batch_size=12. 图片转3D:让2D变3D
2.1 什么时候需要3D模型?
| 场景 | 推荐格式 | 原因 |
|---|---|---|
| 静态图片/短视频 | 2D图片 | 足够了 |
| 实时互动/直播 | 3D模型 | 需要多角度渲染 |
| VR/元宇宙 | 3D模型 | 需要立体空间 |
| 需要换装/换发型 | 3D模型 | 需要骨骼系统 |
2.2 TripoSR:图片转3D
TripoSR是 Stability AI 开源的图片转3D模型,可以从一张图片生成3D模型:
"""
TripoSR 图片转3D示例
"""
import torch
from PIL import Image
import numpy as np
# 方式1:使用在线API
import requests
def image_to_3d_api(image_path, api_key):
"""使用TripoSR在线API"""
# 上传图片
with open(image_path, 'rb') as f:
response = requests.post(
'https://api.tripo3d.ai/v2/openapi/tripostudio',
headers={'Authorization': f'Bearer {api_key}'},
files={'image': f}
)
task_id = response.json()['data']['task_id']
# 轮询结果
while True:
result = requests.get(
f'https://api.tripo3d.ai/v2/openapi/tripostudio/{task_id}',
headers={'Authorization': f'Bearer {api_key}'}
)
if result.json()['data']['status'] == 'success':
model_url = result.json()['data']['model']['url']
return model_url
import time
time.sleep(5)
# 方式2:本地部署(需要GPU)
"""
# 安装
pip install triposr
# 使用
from triposr import TripoSR
model = TripoSR()
result = model(image_path='input.jpg')
result.export_mesh('output.obj')
result.export_texture('output.png')
"""2.3 3D Gaussian Splatting
3D Gaussian Splatting是最近很火的技术,可以从多张照片重建3D场景或人物:
# 安装COLMAP(用于多视角重建)
pip install colmap
# 安装3D Gaussian Splatting工具
git clone https://github.com/graphdeco-inria/gaussian-splatting.git
cd gaussian-splatting
# 处理多视角图片
# 1. 用COLMAP估算相机位姿
colmap automatic_reconstructor \
--workspace_path ./workspace \
--image_path ./images \
--quality high
# 2. 训练Gaussian Splatting模型
python train.py \
--source_path ./workspace \
--model_path ./output3. 3D建模软件:从零做模型
3.1 3D建模软件对比
| 软件 | 难度 | 费用 | 特点 |
|---|---|---|---|
| Blender | 中等 | 免费 | 功能全面,开源社区活跃 |
| Maya | 难 | 昂贵 | 行业标准,影视级 |
| ZBrush | 中等 | 昂贵 | 雕刻神器,高模专用 |
| MetaHuman | 简单 | 免费+UE授权 | 快速生成写实数字人 |
| VRoid Studio | 简单 | 免费 | 二次元风格专用 |
3.2 MetaHuman:5分钟生成写实数字人
MetaHuman是Epic Games出品的数字人创建工具,可以快速生成非常逼真的数字人:
使用流程:
- 访问 MetaHuman Creator 网页 (metahuman.unrealengine.com)
- 用Epic账号登录(免费)
- 选择一个基础模板
- 调整参数:
- 脸型
- 肤色
- 发型
- 眼睛
- 眉毛
- 嘴巴
- 体型
- 预览效果
- 下载到本地
参数调整建议:
| 参数 | 建议值 | 说明 |
|---|---|---|
| Age | 根据需求调整 | 影响皮肤质感 |
| Facial Structure | 参考真人照片 | 确保符合人种特征 |
| Skin Tone | 参考真实肤色 | 不要过于夸张 |
| Hair Style | 简洁款优先 | 太复杂的发型效果差 |
3.3 Blender建模入门
Blender是免费开源的3D软件,非常强大,但学习曲线较陡。
Blender界面介绍
┌─────────────────────────────────────────────────────────┐
│ Blender 界面 │
├────────┬──────────────────────────────────────────────┤
│ │ │
│ 3D │ │
│ 视图 │ │
│ │ │
│ │ │
├────────┼──────────────────────────────────────────────┤
│ 属性 │ 时间线 / 关键帧 │
│ 面板 │ │
└────────┴──────────────────────────────────────────────┘
| 区域 | 功能 |
|---|---|
| 3D视图 | 主要工作区,编辑模型 |
| 属性面板 | 调整材质、渲染设置 |
| 时间线 | 动画控制 |
Blender基础操作
# Blender Python脚本示例
# 可以直接复制到Blender的Scripting工作区运行
import bpy
# 删除默认立方体
bpy.data.objects['Cube'].select_set(True)
bpy.ops.object.delete()
# 添加球体(头部基础)
bpy.ops.mesh.primitive_uv_sphere_add(
segments=32,
ring_count=16,
size=1,
location=(0, 0, 1.5) # 位置
)
head = bpy.context.object
head.name = "Head"
# 进入编辑模式
bpy.ops.object.mode_set(mode='EDIT')
# 添加多级别细分
bpy.ops.mesh.subdivide(number_cuts=2)
# 返回对象模式
bpy.ops.object.mode_set(mode='OBJECT')
# 添加材质
mat = bpy.data.materials.new(name="SkinMaterial")
mat.use_nodes = True
# 设置基础颜色
bsdf = mat.node_tree.nodes["Principled BSDF"]
bsdf.inputs["Base Color"].default_value = (0.87, 0.72, 0.59, 1.0) # 肤色
bsdf.inputs["Roughness"].default_value = 0.5
# 应用材质
head.data.materials.append(mat)
print("头部模型创建完成!")Blender雕刻模式创建头部
# Blender雕刻模式 - 创建面部细节
import bpy
# 确保在雕刻模式
bpy.ops.object.mode_set(mode='SCULPT')
# 添加多精度修饰器
bpy.ops.object.modifier_add(type='MULTIRES')
bpy.context.object.modifiers['Multires'].levels = 4
bpy.context.object.modifiers['Multires'].sculpt_levels = 4
# 切换到雕刻工具
# 使用Draw笔刷
bpy.ops.sculpt.brush_stroke(
stroke=bpy.context.tool_settings.sculpt.brush_stroke
)
# 雕刻提示:
# - 按住Ctrl是减,按住Shift是平滑
# - 滚轮切换笔刷大小
# - 数字键1-9调整笔刷强度3.4 VRoid Studio:快速做二次元角色
VRoid Studio是专门做二次元风格虚拟形象的免费工具:
- 下载 VRoid Studio (vroid.com)
- 创建新角色
- 调整:
- 脸型
- 眼睛
- 头发
- 服装
- 导出为 VRM 格式
# VRM格式转换
# 安装VRM插件
# Blender: VRM Add-on for Blender
# Unity: UniVRM
# 在Unity中使用VRM
# 1. 导入VRM文件
# 2. 使用UniVRM进行骨骼绑定
# 3. 应用动画4. 照片生成数字人
4.1 Reallistic数字人创建
使用单张照片生成数字人的流程:
"""
照片生成数字人流程
"""
import cv2
import numpy as np
from PIL import Image
class PhotoToDigitalHuman:
"""照片转数字人"""
def __init__(self):
# 需要的模型
self.models = {
'face_detection': 'yolov8n-face.pt',
'face_landmark': 'face_landmarker.task',
'face_parsing': 'face_parsing.onnx',
'depth_estimation': 'depth_anything_vitb.onnx'
}
def process(self, photo_path, output_path='output'):
"""
照片处理流程
Args:
photo_path: 输入照片路径
output_path: 输出目录
"""
# 1. 人脸检测
face_box = self.detect_face(photo_path)
# 2. 提取关键点
landmarks = self.extract_landmarks(photo_path, face_box)
# 3. 深度估计(用于3D重建)
depth_map = self.estimate_depth(photo_path)
# 4. 生成3D模型
mesh = self.reconstruct_3d(face_box, landmarks, depth_map)
# 5. 生成纹理图
texture = self.generate_texture(photo_path, face_box)
return mesh, texture
def detect_face(self, image_path):
"""检测人脸区域"""
# 使用YOLOv8或MTCNN
# 返回人脸边界框
pass
def extract_landmarks(self, image_path, face_box):
"""提取面部关键点"""
# 使用MediaPipe或Dlib
# 返回468个或68个关键点
pass
def estimate_depth(self, image_path):
"""估计深度图"""
# 使用MiDaS或Depth Anything
pass
def reconstruct_3d(self, face_box, landmarks, depth_map):
"""3D重建"""
# 使用PCA或Neural Radiance Fields
pass
def generate_texture(self, image_path, face_box):
"""生成UV纹理"""
# 展UV + 纹理修复
pass4.2 InstantID:新一代照片数字人
InstantID是2024年的新技术,可以用一张照片生成保持身份特征的数字人形象:
# 安装
pip install insightface diffusers accelerate
# 使用
from instantid import InstantID
import torch
# 加载模型
instantid = InstantID()
# 生成
result = instantid.generate(
image=input_photo, # 参考照片
prompt="professional headshot, digital human", # 提示词
style="photorealistic", # 风格
id_strength=0.8 # 身份保持强度
)
result.save("output.png")5. 形象定制完整流程
5.1 从需求到成品
┌──────────┐ ┌────────────┐ ┌───────────┐ ┌──────────┐
│ 需求分析 │ ──▶ │ 概念设计 │ ──▶ │ 形象生成 │ ──▶ │ 技术整合 │
└──────────┘ └────────────┘ └───────────┘ └──────────┘
│ │ │ │
▼ ▼ ▼ ▼
确定角色定位 绘制草图 AI生成 骨骼绑定
明确使用场景 确定风格 或3D建模 表情系统
预算评估 参考素材 材质贴图
5.2 需求分析checklist
| 项目 | 内容 | 示例 |
|---|---|---|
| 角色名称 | 给数字人起个名字 | ”小雅” |
| 人设定位 | 性格特征 | 温柔、活泼、专业 |
| 外形特征 | 年龄、性别、风格 | 25岁女性、甜美风格 |
| 使用场景 | 直播、视频、客服 | 抖音直播 |
| 品牌契合 | 与企业VI的匹配 | 品牌色:蓝色 |
| 输出规格 | 分辨率、格式 | 1080P、PNG |
5.3 风格选择建议
| 如果你是… | 推荐风格 | 推荐工具 |
|---|---|---|
| VTuber新手 | 二次元卡通 | VRoid Studio |
| 短视频创作者 | 2D写实 | Midjourney/SD |
| 企业品牌 | 3D风格化 | MetaHuman调优 |
| 高端直播 | 超写实 | 3D扫描+MetaHuman |
| 游戏开发者 | 风格化写实 | Blender自建 |
6. 开源工具汇总
6.1 图像生成类
| 工具 | GitHub Stars | 特点 | 难度 |
|---|---|---|---|
| Stable Diffusion WebUI | 130k+ | 功能全面、插件多 | 中 |
| ComfyUI | 50k+ | 节点式工作流 | 高 |
| Fooocus | 25k+ | 简化版MJ | 低 |
| SDXL Turbo | 15k+ | 极速生成 | 低 |
6.2 形象克隆类
| 工具 | GitHub Stars | 特点 | 平台 |
|---|---|---|---|
| Roop | 45k+ | 单张照片换脸 | Python |
| FaceChain | 20k+ | 阿里开源数字人 | Python |
| InstantID | 新晋 | 身份保持生成 | Python |
| IP-Adapter | 15k+ | 一致性控制 | ComfyUI |
6.3 3D建模类
| 工具 | 类型 | 费用 | 特点 |
|---|---|---|---|
| Blender | 建模软件 | 免费 | 全功能3D套件 |
| MakeHuman | 角色生成 | 免费 | 快速生成基础人形 |
| VRoid Studio | 角色生成 | 免费 | 二次元专用 |
| MetaHuman | 角色生成 | 免费 | 超写实数字人 |
6.4 推荐组合方案
| 场景 | 推荐方案 | 说明 |
|---|---|---|
| 快速原型 | SD + Roop | 最快出效果 |
| 中等品质 | Midjourney + 人工微调 | 效果好 |
| 高端品质 | MetaHuman + 3D建模师 | 效果顶级 |
| 二次元 | VRoid + Live2D | 成本低 |
| 完全定制 | Blender自建 | 自由度最高 |
7. 常见问题与技巧
7.1 生成效果不理想?
问题:脸型扭曲、不自然
解决:
- 使用更高质量的参考图
- 降低CFG强度(6-7)
- 添加更多负面提示词
- 尝试不同的采样器(Euler a, DPM++ 2M Karras)
问题:多次生成的人物不一致
解决:
- 固定随机种子(点击右边的骰子图标)
- 使用参考图(img2img)
- 训练专属LoRA
问题:手部畸形
解决:
- 手部是AI的弱点,添加手部提示词:
(perfect hands:1.2), (five fingers:1.1), no extra limbs- 或者专门处理手部:先生成身体,后期手动P图
7.2 提升效率的技巧
- 使用模板:把常用的提示词保存为模板
- 批量生成:一次生成多张,挑选最好的
- 局部重绘:用inpaint只修改不满意的部分
- ControlNet:用骨骼图/深度图控制生成
相关文档
- TTS语音合成 - 数字人声音生成
- 口型同步技术 - 数字人唇形动画
- 动作捕捉技术 - 数字人动作驱动
- 数字人交互系统 - 数字人智能交互
- 实时渲染技术 - 数字人视觉呈现
- 数字人平台工具 - 工具链与平台对比
更新日志
| 日期 | 版本 | 修改内容 |
|---|---|---|
| 2026-04-18 | v1.0 | 初版完成 |
| 2026-04-24 | v1.1 | 深度改写,增加AI生成和建模实操 |
版权声明
本文档为归愚知识库原创内容,采用CC BY-NC-SA 4.0协议授权。