目录
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状态并连接到非禁用点,将重新激活;
- Initialize Overlap Distances,创建
overlap_self、overlap_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)