数字人形象生成:从零开始创造你的虚拟形象

这篇文章帮你创建数字人形象

数字人看起来好不好看,形象设计占了一半的功劳。这篇文章会介绍各种创建数字人形象的方法,从最简单的一句话生成,到需要专业技能的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一键安装(推荐新手)

  1. 去 GitHub 搜索 “AUTOMATIC1111 Stable Diffusion WebUI”
  2. 下载最新的整合包
  3. 解压后运行 webui-user.bat
  4. 等待下载模型(第一次会下载几个G的模型)
  5. 打开浏览器访问 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图像生成工具之一,但需要付费订阅。

使用步骤

  1. 加入 Discord 服务器
  2. 在频道里输入 /imagine 命令
  3. 输入提示词
  4. 等待生成,4张图
  5. 可以选择放大 (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 raw

1.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=1

2. 图片转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 ./output

3. 3D建模软件:从零做模型

3.1 3D建模软件对比

软件难度费用特点
Blender中等免费功能全面,开源社区活跃
Maya昂贵行业标准,影视级
ZBrush中等昂贵雕刻神器,高模专用
MetaHuman简单免费+UE授权快速生成写实数字人
VRoid Studio简单免费二次元风格专用

3.2 MetaHuman:5分钟生成写实数字人

MetaHuman是Epic Games出品的数字人创建工具,可以快速生成非常逼真的数字人:

使用流程

  1. 访问 MetaHuman Creator 网页 (metahuman.unrealengine.com)
  2. 用Epic账号登录(免费)
  3. 选择一个基础模板
  4. 调整参数:
    • 脸型
    • 肤色
    • 发型
    • 眼睛
    • 眉毛
    • 嘴巴
    • 体型
  5. 预览效果
  6. 下载到本地

参数调整建议

参数建议值说明
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是专门做二次元风格虚拟形象的免费工具:

  1. 下载 VRoid Studio (vroid.com)
  2. 创建新角色
  3. 调整:
    • 脸型
    • 眼睛
    • 头发
    • 服装
  4. 导出为 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 + 纹理修复
        pass

4.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 WebUI130k+功能全面、插件多
ComfyUI50k+节点式工作流
Fooocus25k+简化版MJ
SDXL Turbo15k+极速生成

6.2 形象克隆类

工具GitHub Stars特点平台
Roop45k+单张照片换脸Python
FaceChain20k+阿里开源数字人Python
InstantID新晋身份保持生成Python
IP-Adapter15k+一致性控制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 提升效率的技巧

  1. 使用模板:把常用的提示词保存为模板
  2. 批量生成:一次生成多张,挑选最好的
  3. 局部重绘:用inpaint只修改不满意的部分
  4. ControlNet:用骨骼图/深度图控制生成

相关文档


更新日志

日期版本修改内容
2026-04-18v1.0初版完成
2026-04-24v1.1深度改写,增加AI生成和建模实操