沙漏可视化算法

时间:2010-12-08 21:28:49

标签: algorithm graphics

如何为我的游戏编制沙漏行为(类似于图片)?

alt text

我应该做一些像万有引力的东西来处理每一粒沙子吗?

数字沙漏怎么样(就像在这个时钟上一样)? alt text

4 个答案:

答案 0 :(得分:5)

为了游戏中的沙漏而浪费精力对沙粒进行“正确”模拟是严重的过度工程。

让艺术家制作高质量的动画,并将其渲染为一系列静态图像或电影。

说真的,不要模拟沙子。

答案 1 :(得分:3)

切向地,您可以使用cellular automata对落砂进行建模。我不会考虑将它用于沙漏模拟,但原则上它可以很好地工作,并且是一个有趣的项目。

查看您的数字沙漏 - 要么谷物以固定模式移动,要么可能使用类似此CA的内容。

答案 2 :(得分:1)

建模它是为自己的背部制作一根杆,你最好只需手工绘制框架并播放它们。

但是 - 如果数学是你的事你可以:

  • 计算出顶部的沙子量。
  • 定义通过颈部的体积流量(保持这种任意性,因为你需要调整它)。
  • 在任何给定时间,您都可以使用流量来确定沙子离开顶部的程度。
  • 如果您知道顶部容器的形状,您可以根据当前的沙子体积计算当前的沙子高度。
  • 如果你知道底部容器的形状,你可以根据流过颈部的沙子体积计算当前的沙子高度。

答案 3 :(得分:1)

我会在这里扮演魔鬼的拥护者,并假设你真的想在你的游戏中模拟沙子而不仅仅是创建一个简单的沙漏装载指示器(因为人们已经说过这会浪费精力)。

所以我回到最初的评论。您在寻找什么样的解决方案?

您可能无需模拟每颗沙粒。所以保持简单,不要让物理学离开它,只是模拟效果。

例如,在我的头顶,你可以使用3个简单的规则: 重力:如果“沙子像素”下方的像素为空,则将该列向下移动。

Cave In:如果两个“sand像素”列之间有空格,如果下面的空格不为空(即不下降),请将其填入。

堆积:如果“沙子像素”列旁边有空格,如果下面的空格不为空,则将其展开。

这些只是可能有效的规则的一些示例。重点是尝试提出一种能产生预期效果的模拟。通常,与物理建模相比,它的工作量和处理器密集度更低。