【New】SkinTransfer服装蒙皮
发布于:2024-10-18
功能简介
SkinTransfer 可以将源网格体的权重转移到目标网格体上,并导出转换权重后的网格。
比如复制角色蒙皮权重到服装上。
使用步骤
打开SkinTransfer面板
注意:企业版账号具有SkinTransfer权限
参数介绍
Input | |
Target Mesh | 填入Style3D服装资产(SMD或通用网格服装) |
Source Mesh | 角色骨骼网格体(Avatar骨骼网格体的骨骼均不应含有缩放。) |
Config | |
Radius Percentage | 搜索半径比率,以源网格轴包围盒的对角线长度作为基数,超出搜索半径的顶点被认为不匹配。搜索半径内的顶点会继续根据匹配法线阈值再次判断 |
Normal Threshold | 匹配法线阈值,超出此值的顶点被认为不匹配。表示目标网格顶点与源网格顶点的法线的夹角。 |
Per vertex max ref bones | 最大参考骨骼数,同一顶点受影响骨骼的数量 |
UseInpainting | 使用InPainting算法计算不匹配区域。关闭则设置所有顶点为匹配。此选项关闭时,Use Match Lock Map选项不生效。 |
Use Thick | 导出的网格的服装部分使用厚度。关闭则采用单面网格。 |
SaveAvatarMesh | 导出的网格包含角色的网格体。关闭则仅导出服装网格体。 |
Use InPaint Mask | 使用匹配锁定贴图。勾选则使用自定义的匹配图锁定一部分顶点的匹配状态。 |
Output | |
Output Directory | 导出网格的路径 |
Skeletal Mesh Name | 导出网格的名称 |
InPainting的设置
Inpainting区域
使用Inpainting算法时,需要调整不匹配区域(仅不匹配区域执行InPainting算法,重新计算权重)以获得更好的权重传递结果。顶点的匹配结果在骨骼网格体编辑器中窗口中的显示-高级-顶点颜色中查看。白色区域表示匹配,黑色区域表示不匹配。
RadiusPercentage与NormalThreshold 控制区域/不匹配面积。
RadiusPercentage 默认值为0.01,通常按照此值对应较小搜索半径。此值增大对应匹配区域的增大
NormalThreshold 默认值为30,此值增大对应匹配区域增大
通常应先确定RadiusPercentage值,再调整NormalThreshold。可以理解为前者优先级更高——如果目标顶点未能进入SearchRadius,则NormalThreshold的调整对于这顶点是无效的。
NormalThreshold调优:解决拉扯问
通常,对于身体接触过近的区域,最近邻算法会产生拉扯。对默认值参数判断的不匹配区域执行Inpainting可以一定程度解决此问题。
但有些情况下,默认值参数判定的匹配区域过多,导致inpainting的执行结果与最近邻表现接近,产生了不自然的顶点拉扯。
下面的例子中,我们通过减小NormalThreshold值,让更多顶点需要被InPainting算法计算权重(更多顶点被判定为不匹配)。群裆部原先拉扯严重的顶点权重通过InPainting算法被重新计算,拉扯被修复。
NormalThreshold=2
NormalThreshold=30
自定义InPainting区域:减缓局部穿模
InPainting算法应用的面积越大,越容易造成与角色蒙皮不一致,进而造成穿模。我们提供了自定义InPainting区域的功能,允许用户使用一张顶点属性贴图,来锁定一部分区域的匹配属性。这样我们可以锁定易穿模的顶点,仅使用最近邻传递权重。
使用自定义Inpainting区域功能需要先绘制对应的顶点权重属性
双击SMD资产对象,进入Smd资产编辑器
启用笔刷工具,然后切换右侧PaintProperty属性卡中的 Smd Property 下拉菜单为 Inpaint Mask
绘制属性,注意,属性值与匹配锁定的关系为:
属性值 | 匹配关系 |
0~0.15 | 锁定匹配区域为 不匹配 |
0.15~0.75 | 采用RadiusPercentage,NormalThreshood生成的匹配区域 |
0.75~1 | 锁定匹配区域为 匹配 |
实际使用时,建议先将所有板片填充为0.5,随后使用0值或1值的笔刷绘制。