gpt4 book ai didi

c++ - 在 OpenGL 中创建并实现元球皮肤系统

转载 作者:行者123 更新时间:2023-11-30 17:49:52 27 4
gpt4 key购买 nike

我想创建或找到一个开源元球皮肤系统,它使用元球、体素化来创建网格。我有 3 年 C\C++ 和 OpenGL 经验。但我不知道如何处理这个系统。我想要的是一种实现或构建这样的系统的方法。有什么想法/想法吗?

这是一个正在使用该系统的发动机上工作的人的类轮注释的链接: http://chrishecker.com/My_liner_notes_for_spore

最佳答案

I have 3 years experience in C\C++ and OpenGL. Yet I don't have an idea on how to tackle this system.

我觉得这很难相信。

您需要什么:

  1. Marching cubes algorithm. Or marching tetrahedra ,如果您担心专利问题。
  2. Meta balls formula

元粒子系统由多个“元球”组成,它们“发射”“能量”。元球发出的“能量”可以是正值/负值,并且通常会随着与元球的距离增加而衰减。衰减有点类似于点光源,只不过可以使用任何数学体来代替点(只要您可以计算到它的距离)。

对于空间中的任何给定点,元球系统的“能量”可以是系统中所有元体的所有能量的总和(它们随着距离而下降,还记得吗?)。

现在,给定这个“能量场”,您可以将元体系统可视化,就像可视化 iso 表面(或任何其他程序表面)一样。

对于空间中的任意点,如果“能量”低于某个阈值,则该点位于超粒子形成的“网格”之外。如果“能量”高于该阈值,则点位于由元粒子形成的“网格”内部。

两个点给你线段,并且知道线段,你可以计算线段穿过网格“表面”的点。

现在,只需使用“行进立方体”算法走过特定的空间区域,您就会得到一个网格。

法线是通过对网格表面上的点的小偏移(例如 x/y/z +- 0.01)处的能级进行采样来计算的。

如果这个解释很难,那么我认为 nvidia sdk 有行进立方体算法的示例。阅读示例,将相同的想法应用于元粒子。

使用此算法可以获得以下结果: enter image description here

关于c++ - 在 OpenGL 中创建并实现元球皮肤系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17606097/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com