【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值的笔刷绘制。


提交反馈