如何实现Unity的元球(Metaballs)?

3

我正在尝试在我的游戏中创建一种史莱姆,而我发现使用“代谢球”可能是一个不错的方式来实现这个目标。但是我很难了解它们,需要一些指导。请问有人知道哪里可以学习关于3D代谢球或者与URP兼容的资源吗?

2个回答

1

0
实现 metaballs 东西的方法是一种称为raymarching的技术。这是一种不使用经典的顶点点和将信息从顶点着色器传递到片段着色器的技术。
一切都写在片段着色器中,因此没有显式的顶点几何体,并伴随着相应的利弊,意味着使用经典的顶点方法完成的事情可能很难通过片段着色器中的射线行进技术实现,例如场景中的点和几何体的精度或导出模型以在其他程序中使用(需要获得具有顶点的网格才能导出)。另一方面,使用这种技术实现 metaballs 的东西和几何熔化/黏液状物的东西应该非常有野心,而这些都可以通过经典的顶点方法(顶点、网格、多边形等)难以实现。
有一个名为shaderToy的活跃社区支持此技术,展示了使用此技术可以实现什么,并显示使用这种特定方法实现类似结果要困难得多(反之亦然)。

在这里找到一个Metaball的例子here

同时请注意,你可能会在shadertoy中找到用GLSL编写的示例。为了让它们在Unity中工作,你需要将GLSL代码传递给HLSL,这是Unity使用的着色器语言。 它们是相似的语言,通常有一个速查表,列出了各自等效的语言,你可以通过那个成功地实现。 有趣的资源在这里

一个可以实现这种方法的资产可能是this one,但我不确定。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接