C++ 如何使用PhysX数据计算韦伯数?

C++ 如何使用PhysX数据计算韦伯数?,c++,physics,game-physics,physx,C++,Physics,Game Physics,Physx,我正在开发一个非照片级真实感水渲染演示,使用PhysX作为底层物理解算器(使用其SPH模拟),并希望添加泡沫和水滴渲染以增强其视觉效果 首先,我使用相邻粒子的数量作为阈值,将它们分为多个组(水、泡沫和液滴),并以不同的方式渲染每个组,但通过阅读一些研究论文,我得出结论,使用更基于物理的方法会更好,因此输入韦伯数 以下参数用于获取韦伯数,所有参数均与特定粒子或整个流体相关: 密度 相对速度(相对于周围空气) 特征长度 表面张力 密度和相对速度由PhysX提供,我已经得到了。密度是一个浮点值,而

我正在开发一个非照片级真实感水渲染演示,使用PhysX作为底层物理解算器(使用其SPH模拟),并希望添加泡沫和水滴渲染以增强其视觉效果

首先,我使用相邻粒子的数量作为阈值,将它们分为多个组(水、泡沫和液滴),并以不同的方式渲染每个组,但通过阅读一些研究论文,我得出结论,使用更基于物理的方法会更好,因此输入韦伯数

以下参数用于获取韦伯数,所有参数均与特定粒子或整个流体相关:

  • 密度
  • 相对速度(相对于周围空气)
  • 特征长度
  • 表面张力
密度和相对速度由PhysX提供,我已经得到了。密度是一个浮点值,而速度是一个由3个浮点值组成的向量,每个浮点值对应于3D空间的轴(x、y和z)。没有提供特征长度和表面张力,很难(或者如果提供了,我不知道如何获得它们)

因此,我的问题是:

  • 我相信韦伯数必须是一个浮点值,所以我可以使用它作为一个阈值,将粒子分成若干组。这里的第一个问题是,要得到它,我需要使用PhysX提供的相对速度,它是一个有3个浮点值的向量。我怎样才能得到这个向量的一个浮点值,并将其用于给出韦伯数的方程中
  • 阅读了一些研究论文(特别是第3.2.1节),我决定对粒子特征长度和表面张力使用固定值。问题是,我应该使用哪些值,并且假设这些值有理想值,我如何才能得到这些理想值

    • 在不太了解您的应用程序的情况下,通常使用像韦伯这样的无量纲数字将系统分为低值或高值状态。对于这些应用程序,精确值并不重要。关键是,高值表示该情况与低值情况在性质上不同。当然,当数字介于两者之间时,这就成了问题,例如,在统一附近。 对系统进行分类的好处是,它允许您进行近似计算,通常可以简化所涉及的公式之类的事情

      既然你似乎只是把韦伯的数字用于分类,我想这也与你有关

      因此,从物理背景回答您的问题,特别是考虑到您的目标不是现实主义,使用近似值对情况进行分类以简化计算似乎是对无量纲数字(如韦伯(可能还有其他)的一种很好的使用

      • 对于速度,可以使用矢量的绝对值
      • 对于特征长度,您可能应该使用液滴/泡沫大小,因为这似乎是模型中长度的唯一度量
      特别是,我不会太担心“理想值”。近似值适用于大值/小值(取决于所需的精度/真实性,例如>~10和