Vellum —— Vellum Solver

目录

Solver

Collision

Forces

Advanced

Secondary Constraint Pass

Multi-Pass Solve

Motion

Sleeping

Grain Collisions 

Fluids

Minimal Solver


        Vellum Solver SOP是DOP的封装,以简化vellum的解算;第一个端口是geometry,第二个端口是相同点数的且点对点(点号或id)的约束;第三个端口是碰撞体,碰撞体的拓扑结构应不变;另外,还可识别一些packed的几何体类型;还可在节点内,添加force、constraint property等节点;

Solver

  • Substeps,对快速运动或突然的力,应增加此值;如vellum太拉伸,增加到2或5是个好的开始;
  • Constraint Iterations,每子步内执行的迭代数,非常刚性的约束要求更多的迭代来收敛;最远点间的边数,是好的起点;
  • Smooth Iterations,默认约束迭代使用Gauss-Seidel方式(收敛快),但由于刚性太高或不可能的配置会无法完全收敛;此迭代使用Jacobi方式(收敛慢),误差会均匀分布;

Collision

  • Collision Passes,执行的碰撞检测数,在约束迭代间交替执行;因为碰撞代价高,最好最小化;
  • Post Collision Passes,所有约束被执行后,最后的碰撞检测;“number of stacked layers + 2” 是很好,可完全传播堆叠层;
  • Polish Passes,在任何碰撞过程中,可能无法完全解析,额外的碰撞将运行(非常便宜);
  • Layer Shock,整数点属性layer标记为不同的层,层越高越轻;

Forces

  • Velocity Damping,直接缩放速度,可快速阻尼;

Advanced

  • Target,pin约束的目标路径;
  • Integration,一阶对弯曲运动会被约束阻尼,二阶可恢复更多的弯曲运动,保持更多能量;但有时碰撞被检测,会退回到一阶,以避免过度弹跳;
Secondary Constraint Pass
  • 单独解算更新的次要约束,否则在主pass内解析;
  • 对一些昂贵的约束,可低频率解算以提高性能,如低弯曲刚性的丝绸,可低频率解算弯曲约束;
  • 对约束拓扑内频率变化的(会导致解算器重排序约束解算,抖动),如四面体有机组织stitch在一起滑动,由于滑动约束变化,四面体可能会轻微抖动,可将stitch约束移到此pass,设置Solve Frequency为1,保持相同刚性,会消除此种抖动;
Multi-Pass Solve
  • 重复子步直到条件满足;
  • 当前条件会修复由禁用点引起的问题,禁用点导致几何体被捕获和导致未禁用点生成拉伸;由于碰撞优先于约束,结果是布料或头发拉伸;如检测到拉伸过大,与自动禁用点相邻的点将被禁用;然后重复解算,以期望free几何体;
  • notconverged(detail),disableself,disableexternal;

Collision

  • Disable Failed Collisions,点碰撞失败后,会被标记为禁用,从而可无碰撞移动;
  • Reset Collided Points,如点被检测到不再tangled状态并连接到非禁用点,将重新激活,如disableexternal=2;
  • Initialize Overlap Distances,创建overlap_selfoverlap_external属性(如存在将不会初始化),初始解算避免重叠;
  • Update Overlap Distances,更新overlap_self、overlap_external属性,以反映当前配置;
  • Tetrahedral Open Faces,四面体非共享面将生成碰撞几何体,如同时使用triangle shell 和 tetrahedral mesh,则此操作多余;
Motion
  • Max Acceleration,加速度限制避免过于服从非现实的力;
  • Fallback to First Order Integration on Collision,如点超过最大加速度,二阶预测可能错误,通常为反弹;
    • Grain/Fluid粒子总是会考虑退回一阶,不仅仅是碰撞情况下;
  • Limit Acceleration in Velocity Update,限制速度;
  • Limit Displacement on Collision,在碰撞时限制粒子移动;
  • Disable Broken Welds,当断开焊接点时,如表面没有分离,可能会爆开,此选项设置disableself属性,避免自碰撞;可能使分层布料穿插;
  • Normalize Stress,归一化应力计算,以便子步的更改,计算的值更加可预测;

  • Breaking Frequency,测试约束断开,断开约束会改变拓扑,会减慢解算;

  • Sliding Method,attach、stitch滑动的模式;

    • Closest Point速度快但会跳过凹陷, 

    • Traverse Polygons速度慢会处理凹陷;

    • Traverse Triangles(Optimized)比上一个快很多倍,但仅适用于三角形目标;

Sleeping
  • 粒子速度小于阈值,达到指定长的时间,即会停止(stopped=1);
  • 再次唤醒粒子,可使用POP Awaken节点;
Grain Collisions 
  • grain使用单独的碰撞pass,来处理grain间的碰撞,与POP Grains类似;
    • Search Scale,粒子pscale的缩放值,用于搜索范围;也影响在打簇内的吸引力范围;
    • Max Neighbors,搜索范围内的最大粒子数,如勾选OpenCL Neighbor Search参数(考虑所有范围内的点),则此参数忽略;
    • Assume Uniform Radius,pscale属性确定每粒子的半径,如所有粒子半径相同,则更快的用于查找邻居;
    • Ignore Neighbors with Same Name or Piece,忽略具有相同非空name属性或非负piece属性的邻居;可创建仅与其他簇交互的单独簇,通常与‘shape match约束’结合使用,以获得刚性;
    • Enable Constraint Averaging,当多个粒子同时碰撞时,平均化所有约束,以确保稳定;
    • Repulsion Weight,粒子碰撞力的权重,值为0粒子不碰撞;repulsionweight点属性缩放;
    • Attraction Weight,粒子粘连在一起的权重,值为0粒子不打簇;attractionweight点属性缩放;
    • Enable Mass Shock,根据粒子相对重力的位置,缩放粒子的质量;更高的粒子更轻,以使堆叠的粒子快速收敛,更稳定;
    • Shock Scaling Power,缩放量,值越高粒子间对比就越高,过高的值会使高粒子非常轻,会使系统不稳定;
    • Shock Axis,堆叠方向,通常与重力相反;
Fluids
  • 使用density约束,来保持流体不可压缩性,且提供viscosity、surface tension;phase属性非零;
    • Kernel Radius Scale,内核半径缩放,影响由表面张力产生的水滴大小;
    • Viscosity,粘度,与viscosity属性相乘;对不同phase值的粒子,粘性会独立解析;
    • SDF Collision Viscosity,与SDF碰撞接触的流体粘度,仅当Enable Minimal Solver时才有效;
    • Viscosity Solver,执行粘度解算的类型,Explicit快但不稳定(对高粒子数、高粘度,或低子步),Implicit慢但稳定(对高粒子数和粘度值);
    • Viscosity Tolerance,使用Implicit时的粘度容差,越低精度越高(更多迭代);
    • Max Viscosity Iterations,使用Implicit时的最大迭代数;
    • Surface Tension,表面张力,值越高会减低曲率,以形成水滴;与surfacetension属性相乘,对不同phase值的粒子,张力会独立解析;
    • Spatial Sort Interval,grain、fluid会执行许多涉及附近点的计算,通常空间中附近的点在内存中也靠近会大大的提高性能,此选项时按指定间隔帧对粒子排序;

      • 排序会改变点号,应在解算前添加id属性;

Minimal Solver
  • 被限制的解算器版本(被vellum brush使用),允许布料和其他柔体,与静态几何体快速交互;不适用于动态碰撞体,不建议用户使用;

OpenCL

  • OpenCL Graph Coloring,使用快速并行的OpenCL算法,对四面体可能需要多十倍的内存;
  • OpenCL Neighbor Search,使用OpenCL搜索grain、fluid邻居,比CPU更快,但可能使用更多的内存;

案例:VellumSmokeSheet(使用vellum作为碰撞体生成的速度场,来驱动vellum)

  • 18
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值