Vellum —— Sim Cloth

目录

修穿插

借助VDB获得穿插点并调整

使用detangle节点调整

 案例

海盗角色布料

碰撞体处理

vellum处理

deform原模型


修穿插

借助VDB获得穿插点并调整

//利用VDB解决,非自身模型穿插
//如还有微小穿插,可对suface场减些值如-0.001;
//注意VDB的激活范围
float dist = volumesample(1, 'surface', @P);
vector dir = normalize(volumegradient(1, 'surface', @P));

if(dist<0)
   @P -= dir*dist;
//利用VDB解决,自身模型穿插
//注意VDB的激活范围
vector sampleP = @P+@N*ch('offset');
float dist = volumesample(1, 'surface', sampleP);
vector dir = normalize(volumegradient(1, 'surface', @P));

if(dist<0){
   @P += @N*ch('val'); //@P += @N*ch('val')*(dist+1);
   @interset = 1; 
}

Vellum —— Sim Cloth_第1张图片

使用detangle节点调整

先使用detangle节点初步解决穿插,在deltamush平滑;

Vellum —— Sim Cloth_第2张图片


 案例

海盗角色布料

角色布料教程 CGCircuit - Houdini Vellum Creature Setup

  • 导入abc(一般从maya种导出的,注意比例);
  • 对有厚度模型,获取单面,用于解算;
  • 碰撞vellum cloth,并解算;
  • 用解算结果,驱动原模型;
  • 导出abc(还原比例及保留path属性);
碰撞体处理
  • 对处于碰撞的部分可使用peak先缩小在恢复,碰撞过渡;
  • 对碰撞体自身穿插部分进行修理,拉开空间;
  • 还可创建collisiongroup属性,忽略碰撞;
  • 删除不参与碰撞的部分;

Vellum —— Sim Cloth_第3张图片

vellum处理

衣服

  • 对双层布料,删除出单面解算(最后还原);
  • 对原始布料本身纠缠穿插的区域,事先平滑处理;
  • 可使用自适应remesh,对特定区域添加细节,如衣领;减低看不见的地方面数;
  • 修复或disable和碰撞体穿插的区域;
  • 使用PolyDoctor修复错误;
  • 内部衣服应紧贴到身体,以给外面衣服留出足够空间,如使用attach约束(restlength=0.2);
  • 对那些需跟随动画运动的区域,使用pin约束;

Vellum —— Sim Cloth_第4张图片

//删除扁平的三角形
float ratio_threshold = ch("ratio_threshold");
f@marea = primintrinsic(0, "measuredarea", @primnum);
f@mperimeter = primintrinsic(0, "measuredperimeter", @primnum);
f@ratio = f@mperimeter/f@marea;
if (f@ratio > ratio_threshold) {
    removeprim(0,@primnum,1);
}
  • 纽扣
    • 解算,则本身使用strut或shapematch保持形状,使用stitch约束到衣服上;
    • 直接pointdeform;

Vellum —— Sim Cloth_第5张图片

Vellum —— Sim Cloth_第6张图片

腰带/皮带

  • 对原始模型remesh,可使用cloth、strut约束保持形态(vellum configure strut softbody);可能会抖动,增加阻尼;
  • 皮带配件,可忽略与皮带碰撞,stitch约束住;
  • 与下层衣服交互时,为避免滑动穿插,可stitch约束住;

注:

  • 耗尽能量才能收敛,窄的带子会降低能量消耗;
  • 使用四面体约束Tetrahedral Stretch,解算慢,结果差;快速抖动是约束相互抗争的信号;
  • 使用strut约束来设置如皮带、软管等细长mesh,又快又稳;

Vellum —— Sim Cloth_第7张图片

  • 可使用额外的碰撞球,来控制运动方向等;
  • 注意质量mass,尽量保持各个质量值相似,以便很好的碰撞;
    • 0.1~1.0-e8相差太大,对layer shock设置;
    • 1.0-e6~1.0-e8更相近,碰撞更好;
  • 高的bend刚度,会引起解算不稳定,抖动,使用最低可接受的值;
    • 增加mass,可强化bend刚度,即可降低刚度值;
  • 增加Smooth Iteration对抖动有帮助;
  • Tetrahedral Stretch约束要求许多约束迭代,适用于有机材质;

注,特别是stitch约束会涉及原动画模型的点位置信息,在解算前如对vellum缓存,由于解算的子步原因可能结果会出问题;

  • stitch约束,Geo不可缓存,Con只需初始帧;
  • attach约束,Geo、Con均只需初始帧;
deforming原模型
  • 由于原模型初始状态不同部分的点可能过于靠近,在捕获的点时可能捕获到了其他位置的点,引起结果变形错误;
  • 解决办法为对靠近的点,分为不同piece,从而分开捕获点;
    • 先对原模型分不同部分piece;
    • 在将piece传递给解算模型,此时传递的会有偏差(存在漏洞或间隔);
    • 先将piece属性转化为组,在使用group expand节点收缩,在扩展,填充漏洞或间隔;

Vellum —— Sim Cloth_第8张图片

你可能感兴趣的:(Houdini,#,Vellum,Houdini)