我想创建或找到一个开源的元球皮肤系统,它使用元球、体素化来创建网格。我在 C\C++ 和 OpenGL 方面有 3 年的经验。然而,我不知道如何处理这个系统。我想要的是一种实现方式或一种构建这样的系统的方式。有什么想法/想法吗?
这是一个使用该系统的引擎的人的班轮笔记链接:http: //chrishecker.com/My_liner_notes_for_spore
我在 C\C++ 和OpenGL方面有3 年的经验。然而,我不知道如何处理这个系统。
我觉得这很难相信。
你需要什么:
元粒子系统由几个“元球”组成,它们“发射”“能量”。由meteball 发射的“能量”可以是正/负的,并且通常会随着meteball 的距离而下降。衰减有点类似于点光,除了可以使用任何数学体代替点(只要你可以计算到它的距离)。
例如,对于空间中的任何给定点,元球系统的“能量”可以是系统中所有元体的所有能量的总和(它们会随着距离而下降,记得吗?)。
现在,给定这个“能量场”,您可以将元体系统可视化,就像您将可视化 iso 表面(或任何其他程序表面)一样。
对于空间的任何一点,如果“能量”低于某个阈值,则该点在元粒子形成的“网格”之外。如果“能量”高于该阈值,则点位于由超粒子形成的“网格”内。
两个点给你线段,知道线段,你可以计算线段穿过网格“表面”的点。
现在,只需使用“行进立方体”算法穿过某个空间区域,您就会得到一个网格。
通过在网格表面上的点的小偏移(例如 x/y/z +- 0.01)处采样能级来计算法线。
如果这个解释很难,那么我认为 nvidia sdk 有游行立方体算法的例子。阅读示例,将相同的想法应用于元粒子。
以下是您可以使用此算法获得的结果: