跳到主要内容

VeraPipeline

简介

VeraPipeline 是由MooreThreads研发的仿真模拟自动化流程工具。本篇幅中将带您了解VeraPipeline的功能特性,影视动画布料和毛发解算框架的快速搭建与使用。

功能特性

Vera Pipeline是一款基于Houdini开发的布料、毛发解算流程搭建工具。该工具主要用于基于Houdini的布料解资产搭建,和镜头批量化制作任务。通常情况下,在电影项目批量生产的需求中,我们会对数字角色的肌肉,服装和毛发,进行逐角色的解算预设搭建。并使用搭建好预设的角色资产, 进行成批量的镜头任务制作,VeraPipeline就是为了这一工业化生产的目的而设计产品。

布料

1.流程预览

VeraPipeline布料流程包括:包裹映射,解算预设,解算,后处理四个环节,如下图所示,下文将围绕流程对各个环节的内容做详细介绍

drawing

2.数据准备与规范

模型准备

  1. renderMesh :该模型通常由Rig绑定或者Model模型文件提供,具有符合影视行业规范的Tpose或者Apose,位置处于原点并且布料无初始帧穿插
  2. simMesh: 该模型通常由模型提供的简模模型,处于原点可以完整覆盖包裹renderMesh
  3. aniCache: 该模型通常由上游动画提供,携带TPose/Apose过渡信息和动画信息

模型规范

  1. renderMesh,simMesh,aniCache 都需要携带的path信息
  2. renderMesh:
    1. 位于原点
    2. 初始状态为没有穿插的Tpose或者Apose静态模型
  3. simMesh:
    1. 位于原点且与 renderMesh 位置重叠可以完整包裹覆盖需要解算的部位
    2. 通常为四边面或者三角面的单片模型,模型拓扑分布均匀,初始帧无穿插(有需求可以使用封闭或者其他自定义模型)
  4. aniCache:
    1. aniCache与renderMesh 拓扑一致,path信息一致(不能携带namesapce信息)
    2. 携带完整Tpose/Apose预解算帧到动画过渡信息
    3. 预解算起始帧到结束帧无一帧切,骨骼级的躯体穿插问题

3.VeraPipeline-Cloth 模板搭建

布料输入准备

  1. 模型输入准备:Alembic/USDimport节点导入模型文件:simMesh第一端口,renderMesh第二端口,aniCache第三端口

drawing

UI功能

  1. Build Wrokflow : 创建包裹映射模板,通过simMesh提供path信息自动拆分简模模型,批量设置高低模型映射来记录模型之间的对应关系,并且根据提供动画信息实现简模的驱动
  2. SetupClothSimNode :创建解算预设,解算,高模包裹输出。执行需要发生在BuildWorkflow之后,通过BuildWorkflow创建的映射信息自动完成流程框架搭建

drawing

Build Wrokflow-包裹映射

1. Vera_AssetLayerMatch 模型映射: 在创建的一列 Vera_AssetLayerMatch节点处,需要通过 Vera_AssetLayerMatch节点手动完成简模到高模path属性的包裹匹配操作,来帮助后续布料拆分和包裹设置能够自动化生成框架体系。 点击Vera_AssetLayerMatch节点参数面板 BaseGroup 选择箭头>点击视窗的select选择Alembic Paths>选择对应高模在视图回车即可Link上高模。
(注:这里需要手动完成所有Link 操作,才可进行下一步。如遇简模与高模不匹配情况,下游Vera_SimMeshDoctor节点会提醒是否继续)

drawing

2. Vera SimMeshDoctor 包裹映射错误检查 : 该节点会根据 Vera_AssetLayerMatch节点link高模的情况进行分析。分析出那部分简模没有选择高模(以紫色显示),哪部分高模没有简模匹配或者是并不需要参与到解算中(以蓝色显示),进行颜色显示。用户可以根据提示修改link高模,或者勾选ignoreSimMeshLinkMissing和ignoreRenderAssetLinkMissing选项来忽略报错,进行下一步操作 (如果需要忽略报错,务必勾选勾选ignoreSimMeshLinkMissing和ignoreRenderAssetLinkMissing选项,否则下游操作无法进行)

drawing

3. AniCloth & AniBody包裹: VeraPipeline 提供了两种简模包裹方式:a. AniCloth 高模布料动画驱动简模的精细包裹方式;b. AniBody 直接由身体动画驱动简模包裹方式。其中VeraDeform 节点提供颜色标记功能可以实现AniCloth的精细包裹,避免布料之间过近造成的呲面问题,用户根据具体的动画端inputcache的不同, 在工程中手动切换使用哪种包裹方式。(注:默认更加推荐在动画缓存具有衣物绑定的情况使用AniCLoth的包裹方式,方便约束pin的使用)

drawing

SetupClothSimNode

点击SetupClothSimNode 按钮 :创建Cloth完整解算包裹模板: 生成流程解算预设,解算,后处理

drawing

SetupClothSimNode-解算预设

1. 空间缩放 缩放模型到正确的空间比例进行解算
以MAYA为例:Maya单位为cm,Houdini单位为m.同样的模型从Maya导入Houdini之后存在100倍的空间差距。这时候将空间缩放到0.01即可回到的正常比例,模型的空间大小可以在节点上以中键查看。如下图模型再缩放之后Y轴高度再2.15m,接近正常角色比例。

drawing

2. 去位移 Vera_InverseTranslate 节点针对运动距离过大的角色模型,提供的InvSize参数可以百分比控制这个位移信息。 有效减少动画的位置移动,防止位移造成的布料拉扯。

drawing

3. 数据清洗

  1. Vera BodyTimePeak :预解算帧延法线方向缩放身体,增加身体和布料之间解算空间,减少第一帧穿插概率
  2. ClosedSufaceSelfCollisionFree : 碰撞体修正,动态修正非骨骼级的穿插问题

drawing

4. 约束和材料力学属性设置 由于上游执行了Vera_AssetLayerMatch 模型映射的操作,解算框架会根据简模的path总类自动拆分解算模型。根据path属性生成对应的Cloth参数设置节点。

  1. PaintMask贴图遮罩 PaintMask(贴图遮罩) 通过笔刷或者其他节点添加颜色或其他属性遮罩,绘制出合适的范围去添加约束控制。

drawing

  1. 约束 Constraint(约束) 在生活中,衣物通常通过摩檫力固定在身上。但计算机中,通过约束的形式将布料绑定或者缝合在数字角色的身上。常见的布料约束有pin ,attach ,stitch,glue等等。

drawing

  1. 调参 如图(下)布料材料力学参数: 在生活中布料具备软硬,拉伸,弯曲,塑性等属性。这些属性在计算机中是以参数的形式所出现的,通过参数可以去控制调节布料材质的表现。常见的材料力学属性有抗拉伸,抗弯曲,塑性,质量等等

drawing

SetupClothSimNode-解算

  1. VeraFiberSolver: MT研发GPU解算器,适配Houdini vellumconstraint 可以快速完成布料解算。

    drawing

SetupClothSimNode-高模包裹输出

  1. 高模包裹根据Vera_AssetLayerMatch 模型映射结果将自动匹配对应的简模高模。如上文Vera Deform进行包裹驱动,如有需要可以使用颜色进行精细包裹再输出最终模型

毛发

Guide毛发模板

导入角色资产数据

打开Houdini面板,在SOP层级下创建Vera_Pipeline节点,为Vera_Pipeline初始化资产工作流需要提供基本的解算模型。

drawing

  • Guide:Guide曲线在Xgen流程或者Houdini毛发流程中,Guide起到的作用是引导真实毛发走向和造型。真实的毛发不需要解算,而是间接被Guide曲线所驱动的。
  • GrowMesh: GrowMesh生长面是毛发造型时使用的模型,该模型往往由角色高模复制删减而来,其拓扑与高模时高度重合的。一是方便后续流程的驱动,二是造型贴图的绘制都在GrowMesh完成,方便控制毛发造型。 传统XgenGuide毛发曲线,需输入除simMesh外的其他四个Input

创建Guide Curve模板

选择Curve,点击SetupHairSimNode生成对应的毛发解算节点组

drawing

报错提示:Guide毛发解算首先需要艺术家检查四五端口是否正确链接,然后进入verapipeline的Blast_Select节点选择驱动生长面模型

GrowMesh、Hair包裹驱动(Hiar_Deformer)

drawing

驱动Guide进行解算前需要先驱动GrowMesh生长面,这一步由pointdeformer节点完成:pointdeformer的三个输入端依次链接的是Rig文件的生长面,renderAsset需要驱动生长面的高模,AniCache带动画驱动生长面的高模。

然后再由guidedeformer驱动Guide引导线:guiderdeformer的三个输入端依次链接的是Rig文件的Guide引导线,Rig文件的生长面,被pointdeformer驱动完带有动画的生长面。

Vera 毛发解算节点组

自动创建的毛发曲线会根据毛发的组信息自动Blast相同Path组信息的Guide曲线,方便各个组的曲线区分开分别进行毛发属性调整。

drawing

1. Vera_GradientCurve属性渐变节点 Vera_GradientCurve节点提供了根部点打组功能,可以自动设立根部点组。根据毛发长度进行颜色属性调整,最后输出start_curve跟随属性提供给下游Pin节点获取使用。 可参考毛发跟随调节方式,根部调节至全白,向末端拉出黑白渐变mask.计算器根据mask强度解算Guide曲线

drawing

2. 约束设置 与布料一样,根据项目需求自定义毛发参数

3. 根部点还原 在Vera_GradientCurve节点生成的rootgroup组被用与还原根部点操作。主要作用在两个节点上: 1.Hair属性设置节点,在pintoAnimation的选项上加上rootgroup组信息,尽量保证根部点在解算时候不发生穿插造成的偏转 2.解算后blend节点的根部点融合

drawingdrawing