将粒子绘制为平滑斑点


12

我是游戏/图形开发的新手,并且正在玩2D粒子。我想像液体/水一样将斑点彼此靠近地绘制为斑点。我不想绘制重叠的大圆圈,因为斑点不会很平滑(太大)。我不是很了解物理学,但是我想我想要的是看起来与表面张力相似的东西。

我无法在stackexchange或Google上找到任何内容(也许我不知道正确的关键字?)。到目前为止,我已经找到了两种可能的解决方案,但是我无法找到有关算法的任何具体信息。

其中之一是计算我认为是斑点的粒子的凹壳。我可以通过创建一个等效类(基于“彼此靠近”的关系)来计算blob。奇怪的是,我无法找到任何算法来解释如何计算凹面船体。许多文章(以及stackexchange中的文章)都链接到执行此操作的库或商业产品(我需要库才能在C#中工作),但从来没有任何算法。同样,此解决方案可能会遇到一个圆形的粒子问题,该粒子无法检测到中间的空白区域。

在研究凹壳时,我偶然发现了一种叫做alpha形状的东西。这似乎正是我想要做的,但是就像凹壳一样,我还没有找到任何解释它们实际工作原理的资料。我找到了一些演示材料,但还不够继续。就像我以外的每个人都知道的一个大秘密:-/

计算凹壳或alpha形状后,我想使其成为贝塞尔曲线以使其平滑且美观。

尽管我确实发现自己的方法过于复杂,但是也许我正在尝试以错误的方式解决此问题?如果您可以对我的问题提出其他解决方案,或者解释我所缺少的内容,我将非常高兴和感激:-)

谢谢。



@BlueRaja感谢您的评论。尽管我已经找到了那篇文章,但将其驳回了,因为答案要么链接到不能直接解决我的问题的论文,要么他们的参考文献或者是我不能公开使用的专利(我认为我对官僚主义并不满意) (我什至没有找到下载链接)。
Nömmik

1
“前进的立方体”专利于2005年到期,大多数2D示例都已过时,这就是为什么您可能会看到它们警告您在旧网页上使用它们的原因。
Patrick Hughes

1
这是一篇有关devball和等值面的gamedev文章,其中包含一些示例,以使思路更清晰:链接
Patrick Hughes

感谢启发我,元球,他们似乎做我想做的:-)
Nömmik

Answers:


8

您可能需要的关键字是“ Metaballs”,范围从复杂的nVidia GPU Gems示例到演示场景驱动版本,其目的仅是外观美观且运行速度快。


确实,我不知道关键字:-)我将仔细研究它,如果它似乎是我所需要的,那么我会接受您的回答。谢谢!
2011年

1
在我第二次阅读之前,我认为+1是“肉丸”。
詹姆斯

2
您能为这个答案添加更多细节吗?+1。
AttackingHobo

@James我想每个人在第一次看到这个词时都会犯这个错误!
杰夫(Jeff

1

要将一组粒子转换为可渲染的元球样式的网格,可以看一下Marching Cubes算法,该算法从体素数据生成多边形网格。有一个演示示例,其中有一个很好的例子,它在GPU上生成了所有内容:numb res


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.