Elytra
Blog其他

VaM 角色管线解析:从资产文件到渲染与物理交互

从 Genesis 2 人体、VAR 与人物预设出发,梳理 VaM 1.x 的角色加载、Morph、蒙皮、关节驱动、软组织、衣发模拟和皮肤渲染,理解可交互人物的制作与交付流程。

观察一个实时人物,可以做三个逐渐严格的检查:先看它静止时的脸和皮肤,再让它抬手、转身,最后拉动它的手腕,或者让衣服与身体发生接触。每增加一步,都会暴露一类静态截图无法回答的问题。

Virt-A-Mate(VaM)值得研究的地方,是它把人物外观编辑和身体交互放在了同一个系统里。角色既是一张需要渲染的表面,也是一个需要保持姿态、接受外力、管理穿戴资产的动态对象。理解这套系统,需要沿着数据流追问:人物由什么定义,保存在哪里,怎样被装配,又怎样在每次动作中形成最终画面?

下文按这条数据流组织:先说明角色由哪些数据定义,再解释 VAR 里实际存什么、典型有多大;随后是加载与组装、形变与物理、渲染,最后是创作者交付经验。

1VaM 的人物为什么显得真实而生动?

1.1静态外观、运动形变与交互反馈

“真实”至少包含三个不同维度。

观察方式主要检验什么典型破绽
静态近看比例、轮廓、皮肤和光照塑料感、贴图接缝、眼睛缺少层次
播放动作关节形变、体积保持、次级运动肩部塌陷、肘部折叠、头发像头盔
施加外力接触位置、牵连关系、恢复过程隔空碰撞、穿透、肢体突然弹回

一个角色可能在第一项表现很好,却在另外两项失败。增加毛孔贴图不能修复肘部塌陷;增加软组织晃动,也不能修正眼神始终盯着错误位置的问题。

因此,本文把写实感理解为多个层次的一致性:看到的轮廓应当与接触位置相符,动作应当与关节结构相符,晃动应当与身体的加速和停止相符。

1.2从资产数据到实时人物的整体管线

下面的图表示概念依赖,不表示 VaM 源码中每帧的执行顺序。

Loading diagram…

这张图也提供了一条排错路线。人物长得不对,先检查资源和 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

可以把磁盘上的角色理解为:

VaM Character=共享 Genesis 2 Base+Morph 参数/自定义 Morph+Skin+Hair+Clothing+Physics/Material 参数\text{VaM Character} = \text{共享 Genesis 2 Base} + \text{Morph 参数/自定义 Morph} + \text{Skin} + \text{Hair} + \text{Clothing} + \text{Physics/Material 参数}

而不是每一个角色都复制一份完整 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

meta.json (~5–50 KB)

体积的大致比例可以理解为:

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,而是相对基础人体的稀疏位移:

Δvi=vcharacter,i−vbase,i\Delta \mathbf{v}_i = \mathbf{v}_{\text{character},i} - \mathbf{v}_{\text{base},i}

只记录“第 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 能打开 ≠ 资源已齐全

文件能够打开,只能证明入口存在,不能证明所有资源都已经解析成功。依赖缺失可能造成“部分成功”:场景打开了,人物也出现了,但脸型、头发或服装与预览不一致。检查依赖应当先于重新调整外观,否则容易用一组补偿参数掩盖缺失资源。

Loading diagram…

可以把这套设计粗略类比为 共享基础资产 + 每人一份 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_016.4 MB
Runa23.95 MB
vamsun look30.55 MB
#22964.58 MB
Kumi86.15 MB
某 Male Look98.83 MB
Yvette117.1 MB
Anna150.16 MB
HT17Free171.28 MB
Hina205.98 MB
Mimi253.94 MB

更实用的经验分类如下:

类型常见自身 .var 大小
纯 preset / 大量依赖不足 1~10 MB
Morph + 少量自定义资源10~50 MB
自带一套高质量 Skin50~200 MB
Skin + Hair + 多套纹理100~300 MB
Skin + Hair + Clothing + Scene200~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 目录(保留压缩包,不必手动解压)。
在运行中的 VaM 里执行 Rescan Packages,让 Package Manager 索引新包与依赖。
按内容类型选择加载入口:场景浏览器、Appearance Presets、Clothing、Hair 等。
内容对应操作
场景从场景浏览器加载
人物外观预设选中 Person,在 Appearance Presets 中加载
单件衣物在 Clothing 中选择资产
衣物组合预设在 Clothing Presets 中加载
头发或发型预设在 Hair 或对应预设入口加载

保留资源包并由 VaM 管理即可,不必为了使用内容把每个包都手动解压。需要分析文件时,可以只读查看归档。

4.2解析资源引用与补齐依赖

上文已经区分了角色 .var 的自身大小与完整显示 footprint。加载阶段要做的,就是把 meta.json、.vap 和各类 preset 里的引用逐一解析到实际文件——无论目标在本地目录还是另一个 .var 里。

对于外部工具,较好的起点是建立统一资源解析层:上层请求一个资源,解析层负责判断它来自本地目录还是资源包,并返回内容或明确的缺失信息。这样,网格加载器不需要反复处理包版本,材质加载器也不需要自己寻找跨包贴图。

依赖信息可以用来预检,但仍要检查配置中的实际引用是否能够解析。元信息存在,并不等于包内每个目标文件都存在。

4.3组装基础人体、Morph、材质与穿戴资产

一个外部静态预览器至少要完成以下概念步骤:

Loading diagram…

“匹配”不只是人物名字相同,还涉及顶点对应、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 上。设基础顶点为 vi0\mathbf{v}_i^0,第 kk 个 Morph 对它的位移为 Δvik\Delta\mathbf{v}_{ik},权重为 aka_k,最简单的形变组合是:

vi=vi0+∑kakΔvik\mathbf{v}_i = \mathbf{v}_i^0 + \sum_k a_k\Delta\mathbf{v}_{ik}

体型滑块和表情滑块都可以使用这种表示;区别在于它们移动哪些区域,以及权重由谁控制。体型往往由用户设定,表情可以由动画或行为系统随时间改变。这个公式描述顶点增量层,不涵盖所有可能的骨架联动和参数公式。9

线性叠加也不保证组合后的形体仍然合理。两个分别设计的嘴角 Morph 同时开到很大,可能把同一位置推得过远。可组合是一种数据能力,组合质量仍需要检查。

5.2关节运动:骨架与蒙皮如何配合?

用通用的线性混合蒙皮作解释:一个顶点分别跟随几根骨骼变换,再按权重混合。将骨骼变换和逆绑定变换合并为 TjT_j,有:

vi′=∑jwijTjv~i,∑jwij=1\mathbf{v}'_i = \sum_j w_{ij} T_j\widetilde{\mathbf{v}}_i, \qquad \sum_j w_{ij}=1

其中 v~i\widetilde{\mathbf{v}}_i 是齐次坐标。逆绑定变换用于把基础姿态的点带入正确的骨骼参考空间;否则骨骼当前位置正确,皮肤仍可能整体偏移。Khronos 的蒙皮教程给出了这种通用关系。11

这里用线性混合解释蒙皮职责,不据此断言 VaM 在所有区域都只采用这一种算法。真正重要的是:蒙皮规定了皮肤如何随关节运动,但它本身不理解肌肉应该怎样鼓起。

5.3弯曲修正:如何处理塌陷与体积损失?

肩膀、肘部和髋部很难只靠权重获得所有姿态下的理想形状。一个常用补充是 JCM,即关节修正 Morph:读取关节姿态,逐渐加入预先制作的修正形体。

若肘部弯曲角度为 θ\theta,修正权重可以概念化为 a=f(θ)a=f(\theta)。这意味着“在这个角度补多少形状”,并不意味着系统解出了肱二头肌内部的力学。

VaM 原生 Auto Behaviors 中有腿部弯曲修正等自动 Morph;社区 Joint Correct 则提供另一套修正系统。其作者明确提醒,某些姿势可能比原生效果更差,因此不应无条件叠加全部修正。1213

5.4肌肉感来自哪里:造型、形变修正与动态效果

看到上臂有肌肉感,可能同时包含四类线索:基础造型的隆起、法线与光照强化的明暗、随关节改变的修正,以及随运动出现的细微动态。

这些技术的成本和能力不同。法线不能改变侧面轮廓,静态雕刻不能自动随关节收缩,关节修正也不能单独处理任意位置的外物挤压。

因此,应按现象寻找机制:轮廓改变看几何,弯曲改变看姿态修正,接触凹陷看局部形变,表面细纹看贴图与着色。不能把所有效果统称为“肌肉物理”。

5.5大幅改变体型为何会影响绑定与物理?

把前臂拉长,却保留原来的肘腕位置,就会让关节转动中心偏离外形;把身体变宽,却保留原来的碰撞范围,接触位置也会失真。

这说明外形编辑和动态配置之间存在契约。Morph 可以表达表面变化,但骨架中心、穿戴适配和碰撞代理需要继续与形体一致。某些系统能自动调整部分数据,不代表全部关系都能自动恢复。

6肢体与软组织如何响应外力?

6.1目标姿态与实际姿态:动画如何与物理共存?

对于直接播放的动画,“手应当在这里”可以立刻成为最终坐标;对于可交互身体,这个位置更适合看作目标。实际手部还会受关节连接、碰撞和外力限制。

VaM 的关节控制面板提供保持位置与旋转的弹簧、阻尼,以及 Comply 等控制选项;关闭全部关节控制可让人物失去这些控制提供的支撑。14

从功能上,可以把这种系统理解为带物理反馈的姿态跟随器。动画提供意图,物理决定在约束下能达到什么状态。

6.2关节驱动、运动限制与肢体拉扯

下面用一个通用位置驱动模型解释参数职责:

Fdrive=k(xt−x)+c(vt−v)\mathbf{F}_{\mathrm{drive}} = k(\mathbf{x}_{t}-\mathbf{x}) + c(\mathbf{v}_{t}-\mathbf{v})

xt\mathbf{x}_t 和 vt\mathbf{v}_t 是目标位置与速度,kk 控制恢复力度,cc 控制相对运动的衰减。它只是教学模型;实际关节还可能有旋转驱动、力限制和离散求解规则。

拉动手腕时,手腕不能无限脱离前臂。连接约束把影响传向肘部、肩部与躯干,而其他部位的保持驱动又可能抵抗移动。于是,同样的拖动,在强保持和弱保持的设置下会有不同结果。

这也意味着“有物理”不等于会主动保持人体平衡。没有合适的支撑与控制目标,物理身体完全可能倒下。

6.3碰撞代理如何连接触碰与身体响应?

Loading diagram…

这是一条概念链。它强调两件事:交互首先需要接触检测;接触结果还需要映射回用户看见的表面。缺少前者会穿透,后者不匹配则可能出现“物理碰到了,但皮肤没跟上”的感觉。

有关碰撞形状、接触约束和求解器的背景,可结合本站的三维碰撞检测阅读。

6.4软组织的整体晃动与局部形变

整体晃动关注一个区域如何滞后于躯干;局部形变关注该区域内部不同位置如何相对移动。

单个辅助骨骼可以带来整体运动,却难以独立表达接触点凹陷。要表现局部变化,需要更多自由度,或者额外的形变场与修正。

VaM 的软物理文档明确描述了关联乳房顶点的多个碰撞体,并提供不同区域的弹簧和阻尼调节。它也提供开销更低的硬碰撞方案。2 这些资料支持“局部物理代理驱动表面形变”的理解,但不足以证明它进行了完整的组织体积有限元模拟。

6.5以乳房和臀部为例理解质量、弹簧与阻尼

对一个理想化局部自由度,恢复运动可以写成:

mx¨+cx˙+k(x−x0)=Fexternalm\ddot{x}+c\dot{x}+k(x-x_0)=F_{\mathrm{external}}
参数在这个简化模型里的作用只调这一项的局限
质量 mm决定相同力下的加速度增大质量不等于自动获得合理体积
刚度 kk抵抗偏离参考形状太低可能失去形状,太高可能暴露数值问题
阻尼 cc衰减相对运动太高会显得迟滞,不能用来修复错误碰撞
参考状态 x0x_0决定向哪里恢复参考形状不合适时,调速度也无济于事

在单自由度线性模型中,自然角频率为 ωn=k/m\omega_n=\sqrt{k/m},阻尼比为 ζ=c/(2km)\zeta=c/(2\sqrt{km})。因此,同时改变质量和刚度,会改变响应节奏;“柔软”“有重量”“晃得久”并不是同一个参数。

这些公式不是 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 角色管线提供的启发,正是在可复用的人体结构上,把外观制作与动态反馈持续接合起来。

注释

  1. VaM 官方 Wiki,AshAuryn,Person Atom Basics,2024。说明 Person Atom 的创建入口,以及 VaM 1.x 男女人物基于 Genesis 2。 ↩ ↩2 ↩3

  2. VaM 官方 Wiki,AshAuryn,F Breast Physics 2,2024。说明与顶点关联的软物理碰撞体、区域参数,以及硬碰撞体的成本差异;不提供完整组织求解算法。 ↩ ↩2

  3. VaM Hub,anatomy of a VAR,查阅于 2026-09-26。说明 .var 可按 ZIP 读取、meta.json 记录依赖,以及包内目录组织方式。 ↩ ↩2 ↩3

  4. cyberpunk2073,vam-backstage Implementation,社区项目实现文档,查阅于 2026-09-26。说明 VAR 的 ZIP 索引、元信息、资源分类与衣发配套文件的概括分工;不是官方二进制规范。 ↩ ↩2 ↩3

  5. Virt-A-Mate Hub Looks 资源页,查阅于 2026-09-26。表中各 Look 的自身 .var 大小取自当时 Hub 页面显示的下载体积,用于说明常见量级区间,不代表官方统计中位数。 ↩ ↩2

  6. VaM 官方 Wiki,AshAuryn,File Types and Presets,2024,页面后续有修订。支撑主要扩展名、目录、VAP 的 JSON 性质,以及 VaM 1.x AssetBundle 的 Unity 制作版本要求。 ↩ ↩2 ↩3 ↩4 ↩5

  7. yass3d,Vkit,实验性社区工具,查阅于 2026-09-26。作者说明其读取用户本地 VaM 基础资产,读写 Morph 配对文件和头发资源;本文不把作者的兼容性描述当作独立验证结果。 ↩ ↩2

  8. DAZ 3D,DSON File Types。官方定义 DSF 与 DUF 的资产引用职责,支撑“DSF 不等于单一 Morph 格式”的区分。 ↩

  9. DAZ 3D,DSON morph。官方定义目标顶点数量和稀疏顶点位移,支撑 Morph 数据解释;文中 JSON 为按规范改写的教学片段。 ↩ ↩2

  10. VaM Hub,VAM - Using Clothing for Beginners,社区教程。说明将 VAR 放入 AddonPackages、运行中重扫包,以及服装和预设的使用入口。 ↩

  11. Khronos Group,glTF Tutorial: Skins。用于解释通用骨骼、权重与逆绑定变换,不作为 VaM 特定蒙皮算法的证据。 ↩

  12. VaM 官方 Wiki,AshAuryn,Auto Behaviors,2024。说明原生自动眨眼、表情、视线与部分自动修正 Morph;页面也注明不同版本的面板组织变化。 ↩ ↩2

  13. FallenDancer,Joint Correct,2020 起发布的社区插件。作者描述关节修正 Morph 系统,并明确指出部分姿势可能不如原生效果。 ↩

  14. VaM 官方 Wiki,AshAuryn,Control & Physics 2,2024。确认关节控制、Comply、保持弹簧与阻尼等功能;文中的驱动力公式是通用教学模型。 ↩

  15. VaM 官方 Wiki,AshAuryn,F Breast Physics 1,2024。支撑乳房整体物理有独立参数面板这一事实。 ↩

  16. VaM 官方 Wiki,AshAuryn,F Glute Physics,2024。支撑臀部物理具有独立设置,不应与其他区域的参数无条件等同。 ↩

  17. everlaster,Naturalis v1.1 Documentation。插件作者对软硬、响应速度和质量偏移控制的说明;这里作为扩展机制示例,不作当前版本推荐。 ↩

  18. MeshedVR,VaM Patch Notes。历史更新记录确认衣物 Fiber、模拟抓取、附着贴图,以及头发 Cling、抗弯折和刚性控制;本文没有据此推断具体数值求解算法。 ↩ ↩2

  19. VaM 官方 Wiki,AshAuryn,Skin Materials 2,2024。确认光泽、高光、Fresnel 与法线影响强度控制,不代表这些数值与其他渲染器直接兼容。 ↩

  20. Matt Pharr、Wenzel Jakob、Greg Humphreys,Physically Based Rendering: Surface Reflection,第三版在线版。解释光从不同表面位置进入和离开的次表面传输,与局部表面反射的区别。 ↩

  21. VaM 官方 Wiki,AshAuryn,Skin Materials 1,2024。确认 Skin Color、Specular Color 和 Subsurface Color 等原生参数。 ↩

  22. Mxx,DeepSkin 更新说明,2026,查阅于 2026-09-26。插件作者描述散射和微细节扩展,本文仅以此说明展示效果可能包含第三方着色增强。 ↩

  23. ManFriday,Mesh Grabber 2.0 手册,2020。作者说明可导出修改后的 OBJ 并通过 Morph Loader Pro 生成 Morph;用于支持制作原理,不是 VaM 全流程教程。 ↩

  24. Re-visions_VAM,How to bring your blender clothes in-game and save them as a .var file,2024。衣物作者发布的导入与打包教程,供具体操作参考。 ↩

CONTINUE EXPLORING

沿着这篇文章继续

在地图中查看

On this page

1VaM 的人物为什么显得真实而生动?1.1静态外观、运动形变与交互反馈1.2从资产数据到实时人物的整体管线1.3本文范围:VaM 1.x、原生功能与社区插件2一个角色由哪些数据定义?2.1Person Atom:人物各系统的组织入口2.2基础人体:网格、拓扑与 UV2.3外形与动作:Morph、骨架与蒙皮2.4物理表示:碰撞体、关节与软组织区域2.5外观组成:皮肤、服装、头发与材质3角色如何保存在文件中?3.1VAR:资源容器与典型目录3.2Preset_Character.vap:外观 preset3.3VMI、VMB 与 DSF:Morph 的 delta 存储3.4VAM、VAJ、VAB 与贴图:衣物、头发与纹理3.5Dependencies:自身大小与实际 footprint3.6典型体积:Hub 样本与经验区间4从资产文件到运行时角色:加载过程4.1在 VaM 内加载:场景、人物外观与服饰入口4.2解析资源引用与补齐依赖4.3组装基础人体、Morph、材质与穿戴资产4.4初始化动画、物理与行为4.5外部加载器:浏览资产、还原外观与复现交互的区别5人体如何改变外形并随动作变形?5.1体型与表情:Morph 如何改变顶点?5.2关节运动:骨架与蒙皮如何配合?5.3弯曲修正:如何处理塌陷与体积损失?5.4肌肉感来自哪里:造型、形变修正与动态效果5.5大幅改变体型为何会影响绑定与物理?6肢体与软组织如何响应外力?6.1目标姿态与实际姿态:动画如何与物理共存?6.2关节驱动、运动限制与肢体拉扯6.3碰撞代理如何连接触碰与身体响应?6.4软组织的整体晃动与局部形变6.5以乳房和臀部为例理解质量、弹簧与阻尼6.6插件增强,以及穿透、抖动和失稳的原因7服装与头发如何附着、变形和运动?7.1服装如何适配体型并跟随动作?7.2固定区域、自由区域与布料模拟7.3头发的发根、发型保持与动态弯曲7.4衣物、头发与身体之间的碰撞7.5单向跟随、双向反馈与模拟边界8从人体表面到最终画面:写实渲染8.1几何与贴图分别负责哪些细节?8.2皮肤的颜色、法线、反光与光泽8.3皮肤散射与原生着色能力的边界8.4眼睛、头发和服装的材质线索8.5光照、镜头与渲染插件如何改变观感?9把各系统接起来:一次动作如何形成活人感?9.1案例:转身时身体、软组织、衣物与头发的响应9.2案例:手腕受拉时的关节与身体反馈9.3呼吸、眨眼、视线与细微姿态变化9.4为什么单个系统逼真,整体仍可能不自然?10创作者如何制作并交付一个角色?10.1两类工作流:组合现有外观与制作新资产10.2基础人物、雕刻与 Morph 制作10.3骨架校正与关节形变检查10.4皮肤、材质、服装与头发制作10.5导入 VaM:动态验证与物理调校10.6保存预设、整理依赖与 VAR 打包11这套角色管线的优势与代价11.1标准人体体系带来的资产复用11.2极端体型与复杂接触的适配成本11.3画面质量、模拟精度与实时性能的取舍11.4哪些经验可以迁移到其他实时角色系统?注释