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状态并连接到非禁用点,将重新激活;
  • 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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/255433.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件系统应用开发安全指南

2.1.应用系统架构安全设计要求 2.2.应用系统软件功能安全设计要求 2.3.应用系统存储安全设计要求 2.4.应用系统通讯安全设计要求 2.5.应用系统数据库安全设计要求 2.6.应用系统数据安全设计要求 全资料获取进主页。

Java多线程:代码不只是在‘Hello World‘

Java线程好书推荐 概述01 多线程对于Java的意义02 为什么Java工程师必须掌握多线程03 Java多线程使用方式04 如何学好Java多线程写在末尾: 主页传送门:📀 传送 概述 摘要:互联网的每一个角落,无论是大型电商平台的秒杀…

汽车电子 -- CAN文件格式ASC

Vector提供了两种记录数据格式的格式规范:BLF和ASC。 先讲讲ASC。 参看:图文详解CAN Log文件 - ASC文件格式 一、ASC文件格式 在Vector提供的 CAN_LOG_TRIGGER_ASC_Format.pdf 提取码:ltjv 文件中,规定了CANoe/CANalyzer ASC记…

亚马逊,速卖通,沃尔玛构建稳定高成功率的测评补单环境系统:关键步骤解析

亚马逊对于跨境电商行业来说并不陌生,现在越来越多的人想进入亚马逊这个跨境电商平 台。因此随着越来越多的商家进入这个市场,亚马逊的竞争力也在不断上升。在亚马逊的平台,Review 直接影响着亚马逊对卖家账号进行评定的各项因素,…

低代码正在改变软件开发方式

无论你是一个初级的开发者还是一位经验丰富的专家,低代码都将为你提供了一个突破研发限制的机会。这种开发方式让我们能够在短时间内构建高质量的应用程序。接下来,我将详细展开低代码的概念,解决问题的能力,适用于哪些业务场景。…

阿里云效部署前后端

静态站点到OSS 阿里云-云效,阿里云企业级一站式 DevOps,可以免费使用(会限制人数、流水线数量等,个人项目够用了)。相关文章 CI 持续集成 - 阿里云云效 OSS 是对象存储的意思,一般一个项目对应一个 Bucke…

数字营销影响消费者行为的 6 种方式

如果您正在考虑转向在线市场,那么这个决定就好了!没有什么比数字营销更强大的了。但是,在开始之前,请了解数字营销如何影响消费者行为。由于客户是任何企业的基石,因此跟踪消费者行为至关重要。 数据分析在识别潜在客…

INA219电流感应芯片_程序代码

详细跳转借鉴链接INA219例程此处进行总结 简单介绍一下 INA219: 1、 输入脚电压可以从 0V~26V,INA219 采用 3.3V/5V 供电. 2、 能够检测电流,电压和功率,INA219 内置基准器和乘法器使之能够直接以 A 为单位 读出电流值。 3、 16 位可编程地…

苹果上架被拒提示“1.1 Safety - Objectionable Content”原因排查解决

作为苹果应用开发专家,我们都了解到在iOS应用审核过程中,被拒绝是一种令人沮丧的经历。在众多的拒绝原因中,"1.1 Safety - Objectionable Content"(安全性-令人反感的内容)是一个常见的拒绝原因。这意味着您…

JPA与MySQL锁实战

前言:最近使用jpa和mysql时,遇到了死锁问题。在解决后将一些排查过程中新学到和复习到的知识点再总结整理一下。首先对InnoDB中锁相关的概念进行介绍,然后展示如何利用JPA提供的排他锁来实现想要的功能,最后对死锁问题进行讨论。 …

可视化监控/安防视频云平台公共区域人员行为安全监控方案

大家在浏览新闻时,经常会看到某某地区有人员摔倒,长时间无人发现或人员闯入某危险区域管理人员未及时劝离,导致发生了意外事故的新闻。由于人力资源和人为巡检能力有限,在很多公共区域无法及时检测人员行为从而导致危险发生。为确…

快递批量查询高手:物流效率提升的秘密武器

在当今这个数字化时代,物流行业的发展迅速,快递公司如雨后春笋般涌现。随之而来的是物流查询的困扰。如何快速、准确地查询大量快递单号,提高物流效率,成为了物流行业亟待解决的问题。而此时,一款名为《快递批量查询高…