VaM 角色管线解析:从资产文件到渲染与物理交互
从 Genesis 2 人体、VAR 与人物预设出发,梳理 VaM 1.x 的角色加载、Morph、蒙皮、关节驱动、软组织、衣发模拟和皮肤渲染,理解可交互人物的制作与交付流程。
观察一个实时人物,可以做三个逐渐严格的检查:先看它静止时的脸和皮肤,再让它抬手、转身,最后拉动它的手腕,或者让衣服与身体发生接触。每增加一步,都会暴露一类静态截图无法回答的问题。
Virt-A-Mate(VaM)值得研究的地方,是它把人物外观编辑和身体交互放在了同一个系统里。角色既是一张需要渲染的表面,也是一个需要保持姿态、接受外力、管理穿戴资产的动态对象。理解这套系统,需要沿着数据流追问:人物由什么定义,保存在哪里,怎样被装配,又怎样在每次动作中形成最终画面?
下文按这条数据流组织:先说明角色由哪些数据定义,再解释 VAR 里实际存什么、典型有多大;随后是加载与组装、形变与物理、渲染,最后是创作者交付经验。
1VaM 的人物为什么显得真实而生动?
1.1静态外观、运动形变与交互反馈
“真实”至少包含三个不同维度。
| 观察方式 | 主要检验什么 | 典型破绽 |
|---|---|---|
| 静态近看 | 比例、轮廓、皮肤和光照 | 塑料感、贴图接缝、眼睛缺少层次 |
| 播放动作 | 关节形变、体积保持、次级运动 | 肩部塌陷、肘部折叠、头发像头盔 |
| 施加外力 | 接触位置、牵连关系、恢复过程 | 隔空碰撞、穿透、肢体突然弹回 |
一个角色可能在第一项表现很好,却在另外两项失败。增加毛孔贴图不能修复肘部塌陷;增加软组织晃动,也不能修正眼神始终盯着错误位置的问题。
因此,本文把写实感理解为多个层次的一致性:看到的轮廓应当与接触位置相符,动作应当与关节结构相符,晃动应当与身体的加速和停止相符。
1.2从资产数据到实时人物的整体管线
下面的图表示概念依赖,不表示 VaM 源码中每帧的执行顺序。
这张图也提供了一条排错路线。人物长得不对,先检查资源和 Morph;抬手后变形不对,检查绑定和修正;触碰不对,检查碰撞与驱动;轮廓正常但观感不对,再检查材质和灯光。
1.3本文范围:VaM 1.x、原生功能与社区插件
本文讨论 VaM 1.x 的 Genesis 2 人物体系。官方 Person Atom 文档明确说明其男性和女性人物模型基于 DAZ Genesis 2。这里的文件组织和工作流不应直接套用到 VaM 2。1
如何阅读实现说明
本文区分三种依据:官方文档确认的功能、插件作者描述的扩展,以及解释这些功能的通用图形学原理。公式与流程图用于建立概念模型;没有公开规范支持的二进制布局、求解器细节和调度顺序,不作确定断言。资料整理时间为 2026 年 9 月 26 日。
2一个角色由哪些数据定义?
2.1Person Atom:人物各系统的组织入口
在 VaM 中,Person Atom 是场景里一个人物的操作入口。可以把它理解为角色实例:它关联外观、控制节点、物理设置、穿戴和行为,而不是只代表一张人体网格。添加 Person 会创建默认人物,之后再通过不同面板改变它。1
这种组织方式适合交互编辑。换皮肤不应要求重新制作动作;换姿势也不应抹掉脸型。系统需要让这些数据能够独立保存,又能在同一个人物实例上共同生效。
2.2基础人体:网格、拓扑与 UV
网格顶点决定表面的位置,面之间的连接关系构成拓扑,UV 则把表面位置对应到二维贴图。
拓扑不仅影响轮廓细腻程度,还规定了后续资产可以依赖什么。假设某个 Morph 记录“把第 1200 个顶点向外移动”,它必须知道这个顶点始终代表身体上的同一位置。重新拓扑或重排顶点后,即使模型外观几乎不变,原来的位移数据也可能失效。
UV 具有类似的约定作用。一张画好了眼睑和嘴唇的贴图,只有在对应 UV 上才会落到正确位置。于是,标准人体同时提供了几何和纹理的共同坐标基础。
2.3外形与动作:Morph、骨架与蒙皮
三个概念分别回答三个问题:
- Morph:基础形体要改成什么样?
- 骨架:身体各部分现在处于什么姿态?
- 蒙皮权重:每个表面顶点如何跟随骨架?
例如,手臂粗细可以由 Morph 改变,肘部角度由骨架决定,肘部皮肤怎样在上臂和前臂之间过渡则由蒙皮参与决定。实际系统还可能通过姿态修正补充这种过渡,因此一个漂亮的静态 Morph 并不能保证全部动作都漂亮。
2.4物理表示:碰撞体、关节与软组织区域
可见表面擅长描述轮廓,物理表示则需要高效回答“哪里接触、怎样阻止穿透、如何传递运动”。两者不必使用完全相同的几何。
从工程上看,碰撞代理可以用较少的形状近似身体区域,关节约束负责维持连接,局部动态节点负责让某些区域偏离基础形状。VaM 的软组织文档确实区分硬碰撞体与关联皮肤顶点的软物理碰撞体。2
这解释了一种常见现象:皮肤看起来没有接触,物理却已经把物体推开。此时应检查代理形状与可见表面的关系,不能只增加渲染网格细分。
2.5外观组成:皮肤、服装、头发与材质
人物身份通常由体型、脸型、肤色和发型共同建立;这些信息没有必要全部合成一个文件。服装和头发尤其需要保留独立性,因为它们各自有材质、几何和运动规则。
这种拆分使资源可以组合,也带来适配责任:适合一种体型的衣服,换到另一种体型后可能需要调整。共享基础人体降低了重复制作成本,但不会自动消除所有差异。
3角色如何保存在文件中?
角色包通常不包含完整 Genesis 2 人体
标准 VaM 1.x 的角色 Look .var 通常不会包含一份完整 Genesis 2 人体 Mesh。Genesis 2 Female/Male 是 VaM 本体已有的基础 Person 模型;角色包更多是在这个共同基础上保存“这个人应该长成什么样”的差异数据。1
可以把磁盘上的角色理解为:
而不是每一个角色都复制一份完整 Genesis 2 Mesh。参数本身可以很便宜;像素和独立几何才容易把包撑大。
3.1VAR:资源容器与典型目录
.var 是 VaM 的资源分发容器,可以按 ZIP 归档读取。包内的 meta.json 记录内容以及对其他 .var 的依赖;资源目录用于组织实际文件。社区资产管理器也是通过归档目录和元信息建立索引。34
读包时首先要确定资源身份和路径,而不是一看到 .var 就寻找“主模型”。一个包可能只提供一组 Morph 和外观 preset,也可能自带皮肤纹理、场景和穿戴资产。
下面是人为简化的目录示意,表示一个自包含较多资源的角色包;括号内为典型体积区间,仅供估算。许多高质量 Look 恰恰不自带 Skin、Hair 或 Clothing,而是通过 meta.json 依赖外部包,因此自身只有 1~10 MB 也很常见。35
体积的大致比例可以理解为:
Preset / Morph ██ < 1~10 MB
Scene █ < 几 MB
Textures ██████████████████████████
Hair / Clothing ███████参数几乎不占空间,像素才占空间。
3.2Preset_Character.vap:外观 preset
官方把预设列为内容为 JSON 的 .vap;Person 的预设进一步分成外观、服装、头发、姿势等类型。场景与子场景则多为 .json。6
Preset_Character.vap 本质上是一个 Appearance Preset:记录使用哪些 Morph 及数值、哪套 Skin、皮肤材质参数、眼睛参数,以及对其他资源的引用。概念上类似一组滑块取值,例如 FaceWidth = 0.21、NoseSize = -0.13;实际数据结构要复杂得多。
场景着眼于多个对象及其共同状态;预设着眼于某个对象的一组可复用配置。扩展名只是入口线索——不能把任意 .json 当成人物,也不能把任意 .vap 当作完整场景。
.vap 本身通常只有 几十 KB~数百 KB。
3.3VMI、VMB 与 DSF:Morph 的 delta 存储
如果作者只用 VaM 已有的 Morph 调出一张脸,.vap 记录各 Morph 的权重即可,甚至不需要自定义 Morph 文件。
若作者在 Blender / ZBrush 中雕刻了新形体,就必须把几何差异保存下来。VaM 自定义 Morph 常见 .vmi 与 .vmb 配对:前者是描述信息,后者是压缩后的顶点位移数据。官方文件说明把 .vmi/.vmb/.dsf 列为人物 Morph 文件;社区工具 Vkit 也把两者作为 Morph 配对文件读写。67
.vmb 并不是另一份完整 Genesis 2 Mesh,而是相对基础人体的稀疏位移:
只记录“第 1537 个顶点向前移动 2.1 mm”这类 delta,因此统一拓扑至关重要。一对 Face/Body 的 .vmi/.vmb 合计往往只有 0.1~5 MB;纯人物形状数据完全可能落在 1 MB 以内~数 MB。
DAZ 的 .dsf 是 DSON Support File,属于可引用资产定义;.duf 是面向用户的顶层 DSON 文件。DSF 在 DAZ 中不只用于 Morph,还要查看内部对象类型。8 对 Morph 本身,DAZ 官方规范给出了 vertex_count 与稀疏 deltas 结构。9
以下是按该结构编写的教学示例,仅表示一个 Morph 对象片段:
{
"vertex_count": 4,
"deltas": {
"count": 2,
"values": [
[0, 0.01, 0.0, 0.0],
[3, 0.0, 0.02, 0.0]
]
}
}它表示只有编号 0 和 3 的顶点发生位移。读取端必须拥有匹配的基础几何和坐标约定。
3.4VAM、VAJ、VAB 与贴图:衣物、头发与纹理
官方将 .vam、.vaj、.vab 列为自定义衣物与头发文件。社区项目 vam-backstage 把它们进一步描述为元信息清单、材质绑定和二进制网格。64 服装和头发是新的几何,不能像 Morph 那样只靠参数表达,因此可能各自带来 几 MB~几十 MB。
Hair 与 Clothing 也常常不打进角色包本身,而在 meta.json 里声明对 Creator.Hair.xxx.var、Creator.Dress.xxx.var 的依赖。
真正让人物包从几 MB 跳到上百 MB 的,通常是 Skin 纹理。高质量皮肤往往按 Face、Torso、Limbs、Genitals 分区,每区又有 Diffuse、Normal、Specular、Gloss 等贴图;4K 甚至 8K 的 PNG 几十张叠加,很容易达到 100~500 MB。PNG 对皮肤细节和 Normal Map 的压缩效果也远不如纯色 UI 图惊人。
图片的用途由引用决定:同样是 PNG,可能是缩略图,也可能是法线或颜色贴图。.assetbundle 属于 Unity 编译资源路径;官方 VaM 1.x 文档指定使用 Unity 2018.1.9f2 制作相应 AssetBundle。.cs 与 .cslist 则属于脚本和脚本列表。6 这些路径与原生衣物、人物 preset 不能互换。
文件类型表不是二进制规范
本文引用的官方页面说明了文件用途,没有提供完整的 VAB 字节布局。读取几何、绑定或模拟数据时,需要针对目标版本检查实际样本和实现;未经验证,不应给出固定偏移、记录长度或完整兼容性的承诺。
3.5Dependencies:自身大小与实际 footprint
meta.json 会记录对其他 .var 的依赖,Package Manager 可以发现缺失包。3 因此要区分两个数字:
| 口径 | 含义 |
|---|---|
角色 .var 自身大小 | 下载这一个包占用的磁盘空间 |
| 完整显示所需总大小 | 自身包 + 所有依赖包(若本地尚未安装) |
例如一个 Look 自身只有 6 MB,却可能依赖 180 MB 的皮肤包、35 MB 的发型包和 70 MB 的衣物包——实际 footprint 可达 300 MB 量级。但这些依赖可以被许多角色共享,这正是 VaM 包管理的设计意图。
VAR 能打开 ≠ 资源已齐全
文件能够打开,只能证明入口存在,不能证明所有资源都已经解析成功。依赖缺失可能造成“部分成功”:场景打开了,人物也出现了,但脸型、头发或服装与预览不一致。检查依赖应当先于重新调整外观,否则容易用一组补偿参数掩盖缺失资源。
可以把这套设计粗略类比为 共享基础资产 + 每人一份 delta + 模块化依赖:100 个角色不必复制 100 份 Genesis 2,Skin 和 Hair 也可以继续通过 .var 复用。
3.6典型体积:Hub 样本与经验区间
Hub 上 Look 的自身 .var 大小跨度很大。以下为 2026 年 9 月查阅时可见的 Hub 页面样本,不是统计学中位数,仅供建立量级直觉:5
| Look | 自身 .var |
|---|---|
| 大量依赖外部资源的 Look | 不足 1 MB |
| Free Access HTs2_01 | 6.4 MB |
| Runa | 23.95 MB |
| vamsun look | 30.55 MB |
| #229 | 64.58 MB |
| Kumi | 86.15 MB |
| 某 Male Look | 98.83 MB |
| Yvette | 117.1 MB |
| Anna | 150.16 MB |
| HT17Free | 171.28 MB |
| Hina | 205.98 MB |
| Mimi | 253.94 MB |
更实用的经验分类如下:
| 类型 | 常见自身 .var 大小 |
|---|---|
| 纯 preset / 大量依赖 | 不足 1~10 MB |
| Morph + 少量自定义资源 | 10~50 MB |
| 自带一套高质量 Skin | 50~200 MB |
| Skin + Hair + 多套纹理 | 100~300 MB |
| Skin + Hair + Clothing + Scene | 200~500 MB+ |
| 超重型整合包 | 500 MB~1 GB+ |
若问“下载一个比较完整的高质量 VaM 人物,通常是什么量级”,大约 50~200 MB/Look 是常见区间;大量依赖外部 Skin 的 Look 会把自身包压到极低,但总 footprint 仍可能很大。
交付时要写清两个大小
向用户交付角色时,最好同时说明 Look 自身 .var 大小 和 首次加载所需的依赖包。只报前者,容易让人误以为“这个角色只有 6 MB”。
4从资产文件到运行时角色:加载过程
4.1在 VaM 内加载:场景、人物外观与服饰入口
正常安装与加载可以按以下步骤操作;衣物指南也说明了将 VAR 放入 AddonPackages 并 Rescan Packages 的流程。10
.var 放入 VaM 的 AddonPackages 目录(保留压缩包,不必手动解压)。| 内容 | 对应操作 |
|---|---|
| 场景 | 从场景浏览器加载 |
| 人物外观预设 | 选中 Person,在 Appearance Presets 中加载 |
| 单件衣物 | 在 Clothing 中选择资产 |
| 衣物组合预设 | 在 Clothing Presets 中加载 |
| 头发或发型预设 | 在 Hair 或对应预设入口加载 |
保留资源包并由 VaM 管理即可,不必为了使用内容把每个包都手动解压。需要分析文件时,可以只读查看归档。
4.2解析资源引用与补齐依赖
上文已经区分了角色 .var 的自身大小与完整显示 footprint。加载阶段要做的,就是把 meta.json、.vap 和各类 preset 里的引用逐一解析到实际文件——无论目标在本地目录还是另一个 .var 里。
对于外部工具,较好的起点是建立统一资源解析层:上层请求一个资源,解析层负责判断它来自本地目录还是资源包,并返回内容或明确的缺失信息。这样,网格加载器不需要反复处理包版本,材质加载器也不需要自己寻找跨包贴图。
依赖信息可以用来预检,但仍要检查配置中的实际引用是否能够解析。元信息存在,并不等于包内每个目标文件都存在。
4.3组装基础人体、Morph、材质与穿戴资产
一个外部静态预览器至少要完成以下概念步骤:
“匹配”不只是人物名字相同,还涉及顶点对应、UV、坐标空间和绑定信息。将文件里的数值读入数组,只解决了语法问题;把这些数组作用到正确对象,才解决了语义问题。
4.4初始化动画、物理与行为
静态形体组装完成后,动态系统还需要合理的初始状态。关节目标、实际骨架、碰撞体和衣发的初始位置如果相差过大,第一步求解就可能面对巨大的误差。
从实现设计看,应当在资源和形体准备好之后协调恢复动态状态,必要时重置或让模拟稳定下来。这是通用初始化原则,不是对 VaM 内部加载函数顺序的断言。
还要区分“人物能运动”和“场景行为已恢复”。一个外观预设未必包含展示场景里的动作、灯光与插件状态;完整还原取决于入口保存了什么。
4.5外部加载器:浏览资产、还原外观与复现交互的区别
| 目标 | 必须理解的内容 | 不能据此声称什么 |
|---|---|---|
| 资源浏览器 | ZIP、元信息、路径、预设和缩略图 | 已经能渲染人物 |
| 静态预览器 | 基础几何、Morph、穿戴适配和材质映射 | 已经能正确播放动作 |
| 可动人物导入器 | 骨架、蒙皮、表情和姿态修正 | 已经复现 VaM 物理 |
| 交互运行时 | 驱动、碰撞、软组织、衣发与行为 | 与原运行时完全一致 |
研究包管理可参考 vam-backstage;研究外部 Morph、皮肤和头发读写可参考 Vkit。后者自述从用户自己的 VaM 安装读取基础资产,属于实验性社区工具,其兼容性需通过样本验证。47
若目标只是让现有资源在 VaM 中运行,优先使用其加载入口。若目标是迁移到其他引擎,则应把材质与物理的重新映射纳入工作量,而不只是计算文件解码成本。
5人体如何改变外形并随动作变形?
5.1体型与表情:Morph 如何改变顶点?
上一节说明了磁盘上 Morph 多以稀疏 delta 保存;运行时则把这些 delta 叠加到共享 Genesis 2 Base 上。设基础顶点为 ,第 个 Morph 对它的位移为 ,权重为 ,最简单的形变组合是:
体型滑块和表情滑块都可以使用这种表示;区别在于它们移动哪些区域,以及权重由谁控制。体型往往由用户设定,表情可以由动画或行为系统随时间改变。这个公式描述顶点增量层,不涵盖所有可能的骨架联动和参数公式。9
线性叠加也不保证组合后的形体仍然合理。两个分别设计的嘴角 Morph 同时开到很大,可能把同一位置推得过远。可组合是一种数据能力,组合质量仍需要检查。
5.2关节运动:骨架与蒙皮如何配合?
用通用的线性混合蒙皮作解释:一个顶点分别跟随几根骨骼变换,再按权重混合。将骨骼变换和逆绑定变换合并为 ,有:
其中 是齐次坐标。逆绑定变换用于把基础姿态的点带入正确的骨骼参考空间;否则骨骼当前位置正确,皮肤仍可能整体偏移。Khronos 的蒙皮教程给出了这种通用关系。11
这里用线性混合解释蒙皮职责,不据此断言 VaM 在所有区域都只采用这一种算法。真正重要的是:蒙皮规定了皮肤如何随关节运动,但它本身不理解肌肉应该怎样鼓起。
5.3弯曲修正:如何处理塌陷与体积损失?
肩膀、肘部和髋部很难只靠权重获得所有姿态下的理想形状。一个常用补充是 JCM,即关节修正 Morph:读取关节姿态,逐渐加入预先制作的修正形体。
若肘部弯曲角度为 ,修正权重可以概念化为 。这意味着“在这个角度补多少形状”,并不意味着系统解出了肱二头肌内部的力学。
VaM 原生 Auto Behaviors 中有腿部弯曲修正等自动 Morph;社区 Joint Correct 则提供另一套修正系统。其作者明确提醒,某些姿势可能比原生效果更差,因此不应无条件叠加全部修正。1213
5.4肌肉感来自哪里:造型、形变修正与动态效果
看到上臂有肌肉感,可能同时包含四类线索:基础造型的隆起、法线与光照强化的明暗、随关节改变的修正,以及随运动出现的细微动态。
这些技术的成本和能力不同。法线不能改变侧面轮廓,静态雕刻不能自动随关节收缩,关节修正也不能单独处理任意位置的外物挤压。
因此,应按现象寻找机制:轮廓改变看几何,弯曲改变看姿态修正,接触凹陷看局部形变,表面细纹看贴图与着色。不能把所有效果统称为“肌肉物理”。
5.5大幅改变体型为何会影响绑定与物理?
把前臂拉长,却保留原来的肘腕位置,就会让关节转动中心偏离外形;把身体变宽,却保留原来的碰撞范围,接触位置也会失真。
这说明外形编辑和动态配置之间存在契约。Morph 可以表达表面变化,但骨架中心、穿戴适配和碰撞代理需要继续与形体一致。某些系统能自动调整部分数据,不代表全部关系都能自动恢复。
6肢体与软组织如何响应外力?
6.1目标姿态与实际姿态:动画如何与物理共存?
对于直接播放的动画,“手应当在这里”可以立刻成为最终坐标;对于可交互身体,这个位置更适合看作目标。实际手部还会受关节连接、碰撞和外力限制。
VaM 的关节控制面板提供保持位置与旋转的弹簧、阻尼,以及 Comply 等控制选项;关闭全部关节控制可让人物失去这些控制提供的支撑。14
从功能上,可以把这种系统理解为带物理反馈的姿态跟随器。动画提供意图,物理决定在约束下能达到什么状态。
6.2关节驱动、运动限制与肢体拉扯
下面用一个通用位置驱动模型解释参数职责:
和 是目标位置与速度, 控制恢复力度, 控制相对运动的衰减。它只是教学模型;实际关节还可能有旋转驱动、力限制和离散求解规则。
拉动手腕时,手腕不能无限脱离前臂。连接约束把影响传向肘部、肩部与躯干,而其他部位的保持驱动又可能抵抗移动。于是,同样的拖动,在强保持和弱保持的设置下会有不同结果。
这也意味着“有物理”不等于会主动保持人体平衡。没有合适的支撑与控制目标,物理身体完全可能倒下。
6.3碰撞代理如何连接触碰与身体响应?
这是一条概念链。它强调两件事:交互首先需要接触检测;接触结果还需要映射回用户看见的表面。缺少前者会穿透,后者不匹配则可能出现“物理碰到了,但皮肤没跟上”的感觉。
有关碰撞形状、接触约束和求解器的背景,可结合本站的三维碰撞检测阅读。
6.4软组织的整体晃动与局部形变
整体晃动关注一个区域如何滞后于躯干;局部形变关注该区域内部不同位置如何相对移动。
单个辅助骨骼可以带来整体运动,却难以独立表达接触点凹陷。要表现局部变化,需要更多自由度,或者额外的形变场与修正。
VaM 的软物理文档明确描述了关联乳房顶点的多个碰撞体,并提供不同区域的弹簧和阻尼调节。它也提供开销更低的硬碰撞方案。2 这些资料支持“局部物理代理驱动表面形变”的理解,但不足以证明它进行了完整的组织体积有限元模拟。
6.5以乳房和臀部为例理解质量、弹簧与阻尼
对一个理想化局部自由度,恢复运动可以写成:
| 参数 | 在这个简化模型里的作用 | 只调这一项的局限 |
|---|---|---|
| 质量 | 决定相同力下的加速度 | 增大质量不等于自动获得合理体积 |
| 刚度 | 抵抗偏离参考形状 | 太低可能失去形状,太高可能暴露数值问题 |
| 阻尼 | 衰减相对运动 | 太高会显得迟滞,不能用来修复错误碰撞 |
| 参考状态 | 决定向哪里恢复 | 参考形状不合适时,调速度也无济于事 |
在单自由度线性模型中,自然角频率为 ,阻尼比为 。因此,同时改变质量和刚度,会改变响应节奏;“柔软”“有重量”“晃得久”并不是同一个参数。
这些公式不是 VaM 滑块的单位换算表。VaM 将乳房整体物理、局部软物理和臀部物理分别提供设置,应该结合具体区域理解。1516
6.6插件增强,以及穿透、抖动和失稳的原因
Naturalis 作者文档提供软硬、响应速度和质量偏移等控制,可作为插件进一步组织身体物理参数的例子。它属于扩展层,不能把其全部表现归入 VaM 原生功能。17
从通用约束系统看,常见问题可以按原因分开:
| 现象 | 应优先排查的关系 |
|---|---|
| 隔空接触 | 碰撞代理是否大于或偏离可见表面 |
| 快速运动穿透 | 运动跨度、检测方式、碰撞厚度与时间步 |
| 接触处持续抖动 | 驱动目标和碰撞约束是否互相冲突 |
| 局部突然拉长 | 初始状态、位移限制和参数尺度是否合理 |
| 加插件后异常 | 是否有多个系统同时写入同一组参数 |
这张表是诊断方向,不是 VaM 的故障判定清单。求解器迭代可以改善部分误差,却不能让互相矛盾的目标同时成立。
7服装与头发如何附着、变形和运动?
7.1服装如何适配体型并跟随动作?
衣物面对两个不同问题:人物变胖时,衣服的基础形状要适配;人物抬手时,袖子要跟随动作。解决其中一个,并不自动解决另一个。
通用实现可以使用人体与衣物之间的表面对应、权重转移或包裹关系。这里列的是设计方法,不把其中某一种未经核实的方法指定为全部 VaM 衣物的实现。
外部读取服装时,除了得到三角形,还需要确认资产保存了什么对应信息、哪些信息由导入器生成。把静态网格直接挂到骨架上,通常不足以恢复完整穿戴行为。
7.2固定区域、自由区域与布料模拟
一条裙子的腰部需要跟着身体走,裙摆则需要保留自由度。因此,布料配置本质上在定义:哪些区域由身体约束,哪些区域可以离开贴合状态,以及移动后怎样维持衣物结构。
VaM 的历史更新记录确认了模拟服装、抓取功能、用于保持形状的 Fiber 系统,以及通过模拟贴图指定附着区域的工作流。18
从原理上看,可以把布料约束理解为三类职责:保持相邻区域的距离、限制过度弯折、处理与身体的接触。这里不据此指定其使用 PBD、XPBD 或某种具体积分算法。
肩部或腰部的附着应服务于衣服的穿着方式。如果整件衣服都强制贴身,就没有多少自由摆动;如果全部自由,又缺少合适的支撑,衣服可能滑落。固定与自由之间的过渡,是制作工作的重要部分。
7.3头发的发根、发型保持与动态弯曲
头发既需要运动,也需要记住“这是一种什么发型”。完全自由的链条容易垂成相似形状,完全固定的几何则容易像头盔。
VaM 更新记录提到发型保持用的 Cling、抗弯折的 Bend Resistance,以及根部到发梢的刚性控制。18 这些控制分别限制不同变化,不应合并理解成一个“物理强度”。
从设计上说,发根承担附着,基本形状提供恢复参考,沿长度的弯曲自由度允许摆动。渲染密度和模拟自由度也属于不同预算:画面中的细发数量不必等于需要独立求解的动态单元数量。具体 VaM 资产采用怎样的生成与插值关系,应按资产和实现检查。
7.4衣物、头发与身体之间的碰撞
长发落到肩膀上,需要知道肩部表面在哪里;衣服覆盖大腿,也需要随腿部姿态更新碰撞位置。这里再次出现多个表示之间的同步问题。
物理代理过厚,头发会悬空;代理过薄或覆盖不足,则可能穿入身体。提高发丝数量只能增加视觉细节,不能直接修复代理位置错误。
7.5单向跟随、双向反馈与模拟边界
“衣服会碰到身体”只说明某种接触参与了衣物更新。它不保证衣物受到的作用会以相等精度反馈给身体,也不保证存在完整的衣物自碰撞、衣物互碰或发丝互碰。
单向跟随适合成本有限的视觉效果;双向耦合能表达更多相互作用,但要求协调质量、约束和求解时序。分析具体资产时,应逐项检查能力,不能从一个成功的碰撞演示推导出全部接触都受支持。
8从人体表面到最终画面:写实渲染
8.1几何与贴图分别负责哪些细节?
几何改变真实轮廓和空间位置,法线贴图改变着色所使用的局部方向。这是理解人物细节预算的关键。
鼻子的侧面轮廓需要几何,细小毛孔通常可以通过着色表现。法线能让光照看起来有凹凸,却不会自动在碰撞系统中产生同样的凹凸,也不会让平滑边缘长出真实轮廓。
因此,角色的几何、着色和物理细节可以处于不同尺度。让所有细节都进入同一个高精度表示,既昂贵,也未必改善最终观感。
8.2皮肤的颜色、法线、反光与光泽
皮肤真实感依赖区域差异。鼻尖、脸颊和嘴唇不应只有颜色不同,它们的高光范围和强度也可能不同。
VaM 的皮肤材料面板提供 Specular、Gloss、Fresnel,以及法线对漫反射和高光影响的独立强度。19 对这些参数的正确使用,比一味提高贴图分辨率更能解释“为什么某个部位看起来油亮”。
| 信息 | 主要回答的问题 |
|---|---|
| 颜色贴图 | 表面有哪些颜色变化? |
| 法线贴图 | 微小表面朝向怎样变化? |
| 反光强度 | 高光有多明显? |
| 光泽分布 | 高光更集中还是更分散? |
迁移到其他渲染器时,应做材质语义转换。名称相近不保证数值相通,尤其不能把 VaM 的 Gloss 值原样复制成另一个着色器的 Roughness。
8.3皮肤散射与原生着色能力的边界
真实皮肤允许光进入表面,在内部传播后从附近位置离开。次表面散射因此具有空间范围,不能完全等同于“给阴影染上一点红色”。PBRT 对表面反射和次表面光传输的区分提供了理论背景;更完整的渲染方程讨论见渲染方程与路径追踪。20
VaM 原生面板有 Subsurface Color。21 这能确认它暴露了相关着色控制,但仅凭面板无法断言其采用哪一种散射算法,更不能将其等同于完整的多层皮肤光谱模型。
判断渲染能力时,应分开问:有没有相关参数,采用什么近似,以及该近似在当前灯光下是否足够可信。
8.4眼睛、头发和服装的材质线索
从视觉设计看,眼睛需要让虹膜层次和外层高光共同成立;头发需要方向一致的细线结构和明暗变化;服装则需要让材质与褶皱尺度相符。
这些是不同的观察线索,不适合统一套用“更亮、更光滑”的调节方式。眼睛过亮会失去深度,头发高光不随方向组织会像塑料条,布料过度镜面化则会改变读者对材料的判断。
在整套人物中,这些小面积区域可能承担很大的识别权重。皮肤已经足够细致时,继续提高皮肤细节,可能不如修正眼神和发际线有效。
8.5光照、镜头与渲染插件如何改变观感?
材质描述如何响应光,画面还取决于实际提供了什么光。大面积柔光更容易形成连续明暗,侧光更容易暴露轮廓和表面起伏;镜头距离与视角又会改变面部比例的投影。
因此,评价一个角色最好同时看展示灯光和中性灯光。前者说明创作者希望呈现什么,后者更适合检查资产本身是否存在接缝、异常反光或形体问题。
社区还可能替换或增强皮肤着色。例如 DeepSkin 作者描述了散射与微细节扩展。22 展示场景中的灯光、镜头和插件共同影响结果,外观预设本身未必承载这些条件。
9把各系统接起来:一次动作如何形成活人感?
9.1案例:转身时身体、软组织、衣物与头发的响应
设想人物先转身,再停下来。动画或控制器改变姿态目标,身体追随目标运动;姿态修正随关节状态改变表面形状;自由度较高的衣摆和发梢在惯性作用下继续运动,再逐渐稳定。
这些变化通常是连续耦合的,不应理解为刻意把各层延迟几帧。真正需要的是各层具有与其约束相符的响应:发根牢固,发梢灵活;紧贴区域跟随身体,自由区域保留摆动。
身体已经停止而衣摆仍在衰减的少量运动,提供了重量和材料的线索;如果所有部分在同一时刻硬停,动作会显得缺少惯性。
9.2案例:手腕受拉时的关节与身体反馈
拖动手腕控制点,改变的是该控制点的目标;用物体推手臂,则先产生碰撞。两者的输入路径不同,即使画面里都像“手被移动了”。
后续响应取决于身体的约束:肩部是否保持位置,躯干是否允许转动,脚是否得到支撑。不能要求同一组强固定约束既牢牢锁住人物,又允许整个身体自然跟随手腕移动。
从调校角度看,先明确希望哪些部位保持、哪些部位让步,往往比盲目增加物理质量更有效。
9.3呼吸、眨眼、视线与细微姿态变化
静止的身体也需要表达注意力。VaM 原生 Auto Behaviors 文档包含自动眨眼、表情与视线控制,并说明某些自动行为会占用对应 Morph 的控制。12
呼吸和小幅姿态变化可以通过动画或插件组织。它们的价值在于提供有节奏的内部活动,而不是让所有关节永远随机晃动。一个有明确注视对象、偶尔眨眼的人物,可能比满身随机动作的人物更容易被理解为有意图。
9.4为什么单个系统逼真,整体仍可能不自然?
假设手臂被拉向一侧,身体却没有任何牵连;或者头转向说话者,眼睛仍锁定相反方向。即使皮肤渲染和局部物理都很好,动作含义仍然互相矛盾。
协调的关键是控制权。哪一层决定目标,哪一层负责修正,哪一层允许覆盖,都需要明确。如果两个插件持续写入同一 Morph,最终出现的抖动可能是控制冲突,而不是形变算法不够精确。
10创作者如何制作并交付一个角色?
10.1两类工作流:组合现有外观与制作新资产
组合式工作流从已有基础人物、Morph、皮肤、发型和衣物出发,重点是审美选择与适配。新资产工作流则要进入雕刻、贴图和穿戴制作。
两者都需要动态验证。区别在于发现问题后能够修改到哪一层:组合者主要调配置,资产作者还能回到网格、贴图和绑定本身。
10.2基础人物、雕刻与 Morph 制作
典型的新形体流程是:选择匹配的基础人体,以保留顶点对应的方式导出,在雕刻工具中修改,再回到 DAZ 制作 Morph。DAZ 的 Morph Loader Pro 工作流允许通过导入修改后的几何生成 Morph。23
这一步最重要的是保持对应关系和尺度。重拓扑、合并顶点或应用改变顶点数量的操作,可能让结果不再适合作为原基础网格的 Morph。高分辨率雕刻细节需要另外考虑烘焙到贴图,不能默认全部可以作为基础顶点位移导入。
VaM 的 Morph 导入位置和支持文件类型见官方文件说明。具体导入时应区分人物类别,并保留配套文件。6
10.3骨架校正与关节形变检查
大幅改动四肢长度、肩宽或头部比例后,应检查转动中心与形体的关系。不要只看默认站姿:抬手、屈肘、深蹲和转头更容易暴露问题。
修正顺序应从基础关系开始。骨架位置不对时,先处理骨架;蒙皮过渡不对时,处理权重或对应流程;基础绑定已经合理,再用姿态修正补充局部形状。用大量修正 Morph 掩盖错误转动中心,会增加后续姿态的维护成本。
10.4皮肤、材质、服装与头发制作
皮肤制作要同时检查贴图接缝和材质分区,不只检查单张颜色图。衣服制作则需要让模型适合穿戴和变形,而不仅是在静态人体外面包一层表面。
社区有从 Blender 衣物经过导入步骤进入 VaM、再打包为 VAR 的教程,可作为操作流程参考;不同来源的衣物仍需按基础人物适配。24 头发制作则要同时检查发型轮廓、发根附着和运动后的形状保持。
此时就应使用预期的动作检查资产。直到最后才测试抬手,可能需要返工肩部衣物结构;直到打包前才测试转头,也可能才发现长发碰撞不合适。
10.5导入 VaM:动态验证与物理调校
建议用一组重复使用的检查场景,而不是每次凭印象观看。
| 检查 | 观察重点 |
|---|---|
| 中性灯光下静止 | 比例、接缝、反光与眼部层次 |
| 抬手与屈肘 | 肩肘体积、修正形变与袖子适配 |
| 下蹲与起身 | 髋部形变、衣物穿透与局部碰撞 |
| 转头与转身后停止 | 发根稳定、发梢响应与衣摆衰减 |
| 缓慢拖动手腕 | 控制强度、关节限制和身体牵连 |
| 重新加载场景 | 资源引用、初始状态和参数恢复 |
调节时尽量一次改变一类因素。先让碰撞位置合理,再调响应速度;先确认原生行为,再加入插件。这能保留可解释的因果关系。
10.6保存预设、整理依赖与 VAR 打包
交付前要回答:用户需要得到一套外观,还是一个带灯光和动作的完整场景?据此选择预设和场景的保存范围。
随后检查资源引用,明确哪些素材在包内、哪些通过依赖提供。若 Skin、Hair 或 Clothing 走外部依赖,应在说明里写清 Look 自身 .var 大小 与 首次加载所需依赖包,避免用户只看到一个 6 MB 的 Look 却意外需要再下数百 MB 资源。保留作者与许可信息,并在一个不依赖私人散文件的环境中重新加载,才能发现“只在作者电脑上正常”的隐含依赖。
完成标志不应只是打包按钮执行成功,而应是另一个加载环境能还原预期内容,并知道哪些效果依赖插件或场景条件。
11这套角色管线的优势与代价
11.1标准人体体系带来的资产复用
共同的顶点对应、骨架语义和资源组织,让一个新外观可以复用大量已有能力。创作者不必每次从零制作整套互动身体,而能够集中精力改变身份特征和表现风格。
标准化的价值因此不只在于格式统一,还在于多个系统共享了稳定的假设:Morph 知道顶点是谁,服装知道要适配什么,动作知道关节代表什么。
11.2极端体型与复杂接触的适配成本
这些假设也界定了适用范围。当体型远离基础人体,或者动作产生大量挤压与交叠,原先有效的代理、修正和穿戴关系更容易失效。
增加自由度可以提高表达能力,同时会增加制作、求解和验证成本。一个可在任意体型、任意姿态、任意接触下正确工作的角色系统,比一个针对有限范围调校良好的角色困难得多。
11.3画面质量、模拟精度与实时性能的取舍
渲染与物理不消耗同一种预算。贴图和着色复杂度主要影响图形资源;更多接触、约束与动态区域则增加模拟工作,具体瓶颈仍取决于实现和场景。
因此,优化要针对问题。降低贴图分辨率未必改善关节求解瓶颈,提高碰撞精度也未必改善皮肤质感。应先找出限制,再决定把精度放在哪些最影响观察结果的地方。
11.4哪些经验可以迁移到其他实时角色系统?
可以迁移的首先是数据契约:基础网格、Morph、骨架、穿戴和碰撞之间要有明确对应。其次是职责分层:几何、着色、动作与物理各自解决合适尺度的问题。最后是交付标准:资产不仅需要看起来正确,还需要在运动、交互和重新加载后继续正确。
把一个角色从静态预览推进到可信交互,往往不缺某个单独的高级效果,缺的是这些层次之间可靠的连接。VaM 角色管线提供的启发,正是在可复用的人体结构上,把外观制作与动态反馈持续接合起来。
注释
-
VaM 官方 Wiki,AshAuryn,Person Atom Basics,2024。说明 Person Atom 的创建入口,以及 VaM 1.x 男女人物基于 Genesis 2。 ↩ ↩2 ↩3
-
VaM 官方 Wiki,AshAuryn,F Breast Physics 2,2024。说明与顶点关联的软物理碰撞体、区域参数,以及硬碰撞体的成本差异;不提供完整组织求解算法。 ↩ ↩2
-
VaM Hub,anatomy of a VAR,查阅于 2026-09-26。说明
.var可按 ZIP 读取、meta.json记录依赖,以及包内目录组织方式。 ↩ ↩2 ↩3 -
cyberpunk2073,vam-backstage Implementation,社区项目实现文档,查阅于 2026-09-26。说明 VAR 的 ZIP 索引、元信息、资源分类与衣发配套文件的概括分工;不是官方二进制规范。 ↩ ↩2 ↩3
-
Virt-A-Mate Hub Looks 资源页,查阅于 2026-09-26。表中各 Look 的自身
.var大小取自当时 Hub 页面显示的下载体积,用于说明常见量级区间,不代表官方统计中位数。 ↩ ↩2 -
VaM 官方 Wiki,AshAuryn,File Types and Presets,2024,页面后续有修订。支撑主要扩展名、目录、VAP 的 JSON 性质,以及 VaM 1.x AssetBundle 的 Unity 制作版本要求。 ↩ ↩2 ↩3 ↩4 ↩5
-
yass3d,Vkit,实验性社区工具,查阅于 2026-09-26。作者说明其读取用户本地 VaM 基础资产,读写 Morph 配对文件和头发资源;本文不把作者的兼容性描述当作独立验证结果。 ↩ ↩2
-
DAZ 3D,DSON File Types。官方定义 DSF 与 DUF 的资产引用职责,支撑“DSF 不等于单一 Morph 格式”的区分。 ↩
-
DAZ 3D,DSON morph。官方定义目标顶点数量和稀疏顶点位移,支撑 Morph 数据解释;文中 JSON 为按规范改写的教学片段。 ↩ ↩2
-
VaM Hub,VAM - Using Clothing for Beginners,社区教程。说明将 VAR 放入 AddonPackages、运行中重扫包,以及服装和预设的使用入口。 ↩
-
Khronos Group,glTF Tutorial: Skins。用于解释通用骨骼、权重与逆绑定变换,不作为 VaM 特定蒙皮算法的证据。 ↩
-
VaM 官方 Wiki,AshAuryn,Auto Behaviors,2024。说明原生自动眨眼、表情、视线与部分自动修正 Morph;页面也注明不同版本的面板组织变化。 ↩ ↩2
-
FallenDancer,Joint Correct,2020 起发布的社区插件。作者描述关节修正 Morph 系统,并明确指出部分姿势可能不如原生效果。 ↩
-
VaM 官方 Wiki,AshAuryn,Control & Physics 2,2024。确认关节控制、Comply、保持弹簧与阻尼等功能;文中的驱动力公式是通用教学模型。 ↩
-
VaM 官方 Wiki,AshAuryn,F Breast Physics 1,2024。支撑乳房整体物理有独立参数面板这一事实。 ↩
-
VaM 官方 Wiki,AshAuryn,F Glute Physics,2024。支撑臀部物理具有独立设置,不应与其他区域的参数无条件等同。 ↩
-
everlaster,Naturalis v1.1 Documentation。插件作者对软硬、响应速度和质量偏移控制的说明;这里作为扩展机制示例,不作当前版本推荐。 ↩
-
MeshedVR,VaM Patch Notes。历史更新记录确认衣物 Fiber、模拟抓取、附着贴图,以及头发 Cling、抗弯折和刚性控制;本文没有据此推断具体数值求解算法。 ↩ ↩2
-
VaM 官方 Wiki,AshAuryn,Skin Materials 2,2024。确认光泽、高光、Fresnel 与法线影响强度控制,不代表这些数值与其他渲染器直接兼容。 ↩
-
Matt Pharr、Wenzel Jakob、Greg Humphreys,Physically Based Rendering: Surface Reflection,第三版在线版。解释光从不同表面位置进入和离开的次表面传输,与局部表面反射的区别。 ↩
-
VaM 官方 Wiki,AshAuryn,Skin Materials 1,2024。确认 Skin Color、Specular Color 和 Subsurface Color 等原生参数。 ↩
-
Mxx,DeepSkin 更新说明,2026,查阅于 2026-09-26。插件作者描述散射和微细节扩展,本文仅以此说明展示效果可能包含第三方着色增强。 ↩
-
ManFriday,Mesh Grabber 2.0 手册,2020。作者说明可导出修改后的 OBJ 并通过 Morph Loader Pro 生成 Morph;用于支持制作原理,不是 VaM 全流程教程。 ↩
-
Re-visions_VAM,How to bring your blender clothes in-game and save them as a .var file,2024。衣物作者发布的导入与打包教程,供具体操作参考。 ↩
CONTINUE EXPLORING