在上一个问题中,建议可以对带符号的距离字段进行预先计算,在运行时加载然后从那里使用。
由于某些原因,我将在本问题末尾(针对感兴趣的人)进行解释,因此我需要实时创建距离字段。
有一些针对不同方法的论文,这些方法应该在实时环境中可行,例如用于倒角距离变换和基于Voronoi图逼近的变换的方法(如Pixeljunk Shooter开发人员在本演示文稿中所建议的),我(因此可以假设很多其他人)实际上很难使用它们,因为它们通常很长,大部分时间都在数学上and肿,并且在解释上不太算法。
您会建议使用哪种算法实时(最好在GPU上)创建距离场,尤其是考虑到距离场的最终质量?
由于我正在寻找实际的解释/教程,而不是指向另一篇论文或幻灯片的链接,因此,只要有资格获得此问题,它就会得到悬赏:-)。
这就是我需要实时进行操作的原因:
如果您必须针对大型2D环境(例如,大型Terraria类地图)预先计算这些SDF,则这意味着您要接受更大的存储空间开销(以及地图生成时间),而需要实施更多足够快的实时SDF生成的复杂算法。
例如,如果您选择一个相对较小的,具有1000 * 256(宽*高)且地图尺寸为10 * 10像素,因此总尺寸为10000 * 2560像素的地图,则已经需要花费大约2兆字节的空间假设您仅存储从0到255的距离值,则SDF分辨率为128x128。
显然,这很快就会变得太多,并且是我不想拥有的开销。
还有别的:
SDF可以用于很多事情(例如冲突检测),并且甚至可能尚未发现一些有用的应用程序。我认为将来会有很多人去寻找这些东西,如果我们在这里得到全面的答复,我想我们将为很多人提供帮助。