Mac 上从零搭虚拟数字人:一条能直接录课的完整链路

Mac 桌面工作环境
图片来源:Unsplash

这套流程跑完能出什么样的视频

主画面讲内容,右下角放一个跟着你表情动的虚拟角色——这就是整套流程跑通后的产出。

具体来说,你的摄像头会实时捕捉表情、头部动作和嘴型,驱动一个 3D 角色同步运动,再通过 OBS 把这个角色叠到课件、浏览器或屏幕录制画面上。最终视频的结构是中间区域展示你要讲的内容(代码编辑器、AI 工具界面、PPT),角落里有一个虚拟人在”讲课”。

这个方案适合几类场景:AI 工具教程、软件操作教学、产品功能演示、知识型视频。共同点是你暂时不想真人出脸,但又需要视频里有一个”人”在讲。

摘要: 摄像头动捕驱动 3D 角色,OBS 合成到课程画面上,形成”主内容 + 角色讲解”的视频结构。

开始前要装哪些东西

四个软件:OBS、Steam、VRoid Studio、Webcam Motion Capture。

Webcam Motion Receiver 不用单独装,它和 Webcam Motion Capture 是一起的。建议全部放到 Applications 目录下,或者固定在 Dock 栏。调试阶段你要在几个窗口之间来回切,放散了找起来烦。

软件 干什么用的
OBS 录屏、合成画面、色键抠图
Steam 运行 Webcam Motion Capture 的平台
VRoid Studio 创建和导出 3D 虚拟角色
Webcam Motion Capture 摄像头捕捉脸部和上半身动作
Webcam Motion Receiver 加载角色模型,接收动捕数据并驱动

摘要: 四个软件一条线,提前归整到同一目录省得后面找。

为什么别一上来就捏角色

我见过不少人一打开 VRoid Studio 就开始调脸型、换发型,两小时过去了,导入到 Receiver 发现角色不动,又分不清是建模的问题还是动捕的问题。

反过来做更稳:先用 Receiver 自带的默认角色把动捕链路跑通。确认摄像头能追踪、角色能响应之后,再回去花时间做自己的形象。这样后面出任何问题,你至少知道动捕这一环是没毛病的。

摘要: 先验证动捕可用再做角色,排查故障时不用在两个环节之间猜。

怎么让默认角色先动起来

打开 Webcam Motion Capture,第一次启动系统会弹窗要摄像头权限,点允许。预览区里应该能看到你的画面,脸上标着眼睛、鼻子、嘴巴的追踪点。

先做这几个设置:

  • Camera:选你当前在用的那个摄像头
  • Resolution:从 1280×720 起,别直接上 1080p
  • Hide Webcam:不勾

分辨率我建议先低后高。720p 跑稳了再提分辨率,直接 1080p 会给机器加负担,万一卡了你可能以为是软件有问题,其实是性能扛不住。

然后打开 Webcam Motion Receiver,它会加载一个默认的 3D 角色。

Webcam Motion Receiver 默认角色界面

别管这个默认角色长什么样。测试五个动作:左右转头、抬头低头、张嘴说话、眨眼、左右轻微歪头。都有响应的话,动捕链路就通了。

还有一个设置要注意——勾选 Upper Body,不要勾 Full Body。录课场景下你基本坐在电脑前,摄像头拍到脸和肩膀,不一定能覆盖到全身。开了 Full Body 但镜头画面不够,角色反而容易出奇怪偏移,我一开始就犯了这个问题,调了半天才发现是模式选错了。

摘要: 设好摄像头参数后用默认角色验证五个基本动作,选 Upper Body 模式更匹配坐姿录课。

第一版角色做到什么程度就够

打开 VRoid Studio,点”新建”从基础模板开始。

VRoid Studio 主界面

第一版改这几项就够:发型、脸型、眉毛、眼睛、肤色、衣服,想区分度高一点可以加个眼镜或其他明显饰品。目标不是做出一个游戏级别的建模作品,是得到一个能代表你、能立刻拿去录课的形象。

VRoid Studio 角色编辑界面

真的别一上来就花几小时调每一根头发。我在这个阶段卡过,后来想明白了:第一版粗糙没关系,先跑通流程录出第一条视频,后面想改随时改。很多人死在建模阶段,连动捕都没测试过就放弃了,挺可惜的。

角色调好后,点右上角的”导出 VRM”。

选择导出为 VRM 格式,弹出的保存窗口里选一个你能找到的位置。

VRM 导出保存对话框

文件名起清楚一点。我建议带版本号,比如 my-avatar-v1.vrmcourse-avatar-v1.vrm。等你以后做了第二版第三版,不会在文件夹里一堆 vrm 文件里找不到哪个是最新的。

摘要: 第一版只调关键外观特征,能识别就行,导出 VRM 时用带版本号的文件名。

导入后角色只剩一个大头怎么调

回到 Webcam Motion Receiver,点右上角 Load VRM,选中你导出的 .vrm 文件。

Load VRM 文件选择

没报错就是成功了。但这时候你大概率会看到角色特别大,画面里基本只有一张脸。

导入后角色过大的情况

模型没坏,导入也没问题。就是镜头太近、位置不对。你要调的是 Receiver 左侧的四个参数:

参数 管什么
Distance 人物离镜头远近,太大就拉远
Field of View 画面视野宽度,太挤就调大
Height 人物在画面里的上下位置
Side 人物偏左还是偏右

调的时候有个顺序,别四个同时拧:先固定 Upper Body,再调 Distance 把人物拉到合适远近,接着调 Field of View 让画面不那么挤,最后微调 Side 和 Height 把人居中。

你要调到的状态是:头顶完整、肩膀完整、胸口露一点、人物居中、左右留一点背景。录课的话角色没必要占满屏幕,太近了像怼脸直播,跟知识内容的调性不搭。稍微远一点,观众能看清你的”主播”在讲什么,同时注意力还在主画面上。

摘要: 导入后”过大”是镜头参数问题,按 Distance → FOV → Height → Side 顺序调到上半身构图。

背景为什么要换成纯色

这一步不做,后面在 OBS 里很难把角色从背景里干净地分离出来。

在 Receiver 右侧找到 Background 设置,从 Image 切成 Color。

切换为纯色背景

选纯绿或纯蓝。原则就一条:别选跟角色头发、衣服、皮肤接近的颜色。如果你打算给角色穿绿色衣服,背景就用蓝的;模型上蓝色面积大,就换别的纯色。这里选错了后面抠图会非常痛苦,边缘会坑坑洼洼怎么调都不干净。

摘要: Receiver 背景切纯色为 OBS 色键抠图做准备,颜色必须避开角色身上的主色。

怎么把角色接进 OBS 并抠干净

打开 OBS,在”来源”区域点 + 号,选 macOS 屏幕采集,如果有子选项就选窗口采集。

OBS 添加窗口采集来源

弹出设置窗口后,目标窗口选 Webcam Motion Receiver。

OBS 选择 Receiver 窗口

这时候 OBS 里抓到的是”角色 + 绿色背景”。要给这个来源加滤镜把背景去掉。操作是:在来源列表里右键你的虚拟人来源 → 选”滤镜” → 在”效果滤镜”里点 + → 选”色键” → 选中你之前设的背景色。

如果用的是绿底就调绿幕相关参数。抠不干净的话别急,慢慢调相似度、平滑度和边缘锐化,这三个参数互相牵扯,需要一点一点试。最终效果是只剩角色、背景变透明,然后把这个来源拖到画面右下角。

摘要: OBS 用窗口采集抓 Receiver 画面,色键滤镜把纯色背景抠透明,角色即可自由叠放。

角色和主画面怎么摆

抠图完成后布局就灵活了。最常见的做法:中间放浏览器、AI 工具、PPT 或代码编辑器,右下角放虚拟数字人。

这样比纯录屏多了一个”人”的存在感。观众看到的不只是一份操作录像,而是一个有”人”在讲的课程。这个差异对知识型内容来说比很多创作者意识到的要大——纯录屏很容易让人觉得在看一份带操作的文档,加了角色之后至少有了”上课”的感觉。

角色不要太大。右下角一个小窗就够,主角永远是你要讲的内容。

摘要: 主内容居中、角色小窗放角落,形成有人讲课的视觉结构,角色不要抢主画面的注意力。

为什么一定要录个 10 秒测试

别跳过这步直接开录。你只需要录 10 秒,做几个转头、张嘴、眨眼的动作,然后立刻回放。

回放时看四件事:

  • 嘴型跟不跟得上你说话
  • 表情自不自然,有没有扭曲
  • 背景抠得干不干净,有没有残留色块
  • 角色边缘有没有异常锯齿或光晕

这四个大体没问题,工作流就可以用了。我之前跳过测试直接录了半小时,回放才发现嘴型完全没跟上,那种返工的成本比多花 10 秒高太多了。10 秒测试是整条链路里性价比最高的一步。

摘要: 10 秒测试能快速暴露嘴型同步、表情、抠图和边缘四个核心问题,防止长内容录完才发现硬伤。

几个一定会踩到的坑

角色导入后特别大

不是模型坏了,也不是导入出了错。按 Distance → Field of View → Height 的顺序调。

角色动作不稳或乱飘

检查这几个地方:摄像头位置是不是太低了(这是我踩过最大的坑,垫高一点就稳了)、光线是不是只从头顶打下来导致脸部阴影太重、脸和肩膀有没有完整进镜头、有没有误开 Full Body。通常调一下摄像头高度就能解决大半问题。

OBS 里能看到人但背景抠不干净

先确认背景色是不是太接近角色身上的某个颜色。然后检查色键的相似度、平滑度参数有没有认真调。最后看是不是不小心叠了多个相同来源——我见过有人加了两次窗口采集,导致底层那个带背景的一直露出来。

画面中间有试用版提示和 Subscribe 按钮

这不是你操作的问题。Webcam Motion Receiver 有试用模式,画面中间会出现 trial 提示和订阅入口。试用模式不影响你测试追踪和走通流程,但最终成片里会带着这层提示。所以试用版适合验证链路,正式发布前需要处理授权或者换方案。这一点要提前知道,别录到最后才发现。

摘要: 四个高频问题——角色过大调镜头、动作不稳查摄像头位置和模式、抠不干净查颜色和滤镜、试用水印需正式授权解决。

按什么顺序执行最不容易翻车

完全从零开始的话,我推荐这个顺序:

  1. 安装并打开 Webcam Motion Capture
  2. 安装并打开 Webcam Motion Receiver
  3. 用默认角色验证五个动作(转头、张嘴、眨眼、抬头低头、歪头)
  4. 打开 VRoid Studio,快速做第一版角色
  5. 导出 VRM 文件,文件名带版本号
  6. 在 Receiver 中 Load VRM
  7. 按 Distance → FOV → Height → Side 调到上半身构图
  8. 背景切换为纯色,颜色避开角色主色
  9. OBS 中添加窗口采集,选 Receiver 窗口
  10. 加色键滤镜把背景抠透明
  11. 把角色拖到右下角,和主画面叠好
  12. 录 10 秒测试视频,回放检查

12 步走完,你就有一套能用的 Mac 虚拟数字人录课工作流了。

后续可以慢慢升级——更像自己的角色、更好的收音、更精致的灯光、更自然的构图。但第一步是把第一条能用的视频录出来,这个比什么都重要。

摘要: 12 步标准流程,从动捕验证到最终测试,按序执行最小化返工风险。


实用摘要 / 操作清单

  • [ ] 安装 OBS、Steam、VRoid Studio、Webcam Motion Capture,归整到同一目录
  • [ ] 打开 Motion Capture,允许摄像头权限,分辨率设 720p
  • [ ] 打开 Motion Receiver,用默认角色验证五个基本动作
  • [ ] VRoid Studio 新建角色,只调发型/脸型/眼睛/肤色/衣服/饰品
  • [ ] 导出 VRM,文件名带版本号如 my-avatar-v1.vrm
  • [ ] Receiver 中 Load VRM,确认导入无报错
  • [ ] 按 Distance → FOV → Height → Side 调到上半身构图
  • [ ] 背景从 Image 切为 Color,选纯绿或纯蓝,避开角色主色
  • [ ] OBS 添加窗口采集来源,目标选 Webcam Motion Receiver
  • [ ] 给该来源加色键滤镜,调相似度/平滑度/边缘锐化
  • [ ] 角色拖到右下角,和主画面叠好位置
  • [ ] 录 10 秒测试,回放检查嘴型/表情/抠图/边缘

一页速览

工具链:VRoid Studio(建模)→ Webcam Motion Capture(动捕)→ Webcam Motion Receiver(驱动角色)→ OBS(合成录制)

核心原则:先跑通动捕再做角色;先 720p 再提分辨率;先 Upper Body 再试 Full Body

构图目标:上半身、头顶完整、居中、留背景空间、角色别太大

抠图方法:Receiver 背景设纯色 → OBS 色键滤镜抠透明

必做检查:10 秒测试视频回看嘴型同步、表情自然度、抠图干净度、边缘质量

已知限制:试用版画面中有 trial 提示和 Subscribe 按钮,正式发布前需处理授权

FAQ

这套方案在 Mac 上能跑吗?
能,整套工具链都支持 macOS,本文步骤基于 Mac 环境写。

一定要装 Steam 吗?
Webcam Motion Capture 通过 Steam 运行,所以 Steam 是必须的。

需要买物理绿幕布吗?
不需要。背景色在 Receiver 软件里直接设置,不依赖实体绿幕。

第一版角色做得粗糙有关系吗?
没关碍。第一版的目标是跑通流程录出第一条视频,不是做出完美模型,后面随时可以改。

为什么开了 Full Body 角色反而乱动?
Full Body 需要摄像头拍到足够多的身体区域。坐姿录课时镜头通常只覆盖脸和肩膀,追踪数据不够反而导致角色偏移。

OBS 抠图边缘有毛刺怎么办?
调色键滤镜里的平滑度和边缘锐化参数。另外检查背景色是不是和角色身上某个颜色太接近了。

试用版的水印能去掉吗?
试用模式下的 trial 提示和 Subscribe 按钮是软件自带的,不影响流程测试但会出现在成片里。正式发布前需要购买授权或换方案。

能用别的软件做的 VRM 模型吗?
可以,只要导出的是 VRM 格式,Receiver 就能加载。VRoid Studio 只是其中一个建模选择。