所以我看到一篇关于解析OBJ文件的博客,但真正引起我注意的是他们正在解析的对象(这个问题不是解析OBJ文件)。
我知道网格是使用3D噪声算法创建的,可能是单纯形噪声,但我想知道的是我如何能够在LWJGL中产生类似的线条效果。
我已经有了一个3D单纯形噪声算法,以及一些我认为可行的代码,但实际上并没有做同样的事情。
我注意到网格的模式是有一排行从噪声密度最高的外部开始。然后这些线基于特定点的噪声密度进化,所以我试图做的是制作一个算法来产生这些线并进化它们,但这并不是那么有效。
SimplexNoise noise = new SimplexNoise(23453) //Variable is the seed
worldList = glGenLists(1);
glNewList(worldList, GL_COMPILE); //Inefficient but gets the job done
float prevx = 0.0f;
float prevy = 0.0f;
float prevz = 0.0f;
for(int x=0;x<256;x++){
for(int y=0;y<256;y++){
for(int z=0;z<256;z++){
float xf = x/100;
float yf = y/100;
float zf = z/100;
density = noise.simplex(3,xf,yf,zf); //octaves,x,y,z
if(density>3){ //filter out some results
drawLine(prevx,prevy,prevz,x+1,y*density,z*density);
drawLine(prevx,prevy,prevz,x*density,y+1,z*density);
drawLine(prevx,prevy,prevz,x*density,y*density,z+1);
}
}
}
}
glEndList();
不应该很难意识到这不会产生任何接近相同结果的东西。我不知道如何接近或完全产生相同的网格形状或类似的东西,所以任何人都可以帮助我吗?
答案 0 :(得分:0)
我不熟悉LWJGL,但我认为就算法本身而言,我可以指出正确的方向。您可以将Perlin / Simplex噪声插入行进立方体算法并从中生成三角形网格。我使用这种技术来创建这个网格:
我相信您可以通过绘制输出网格的线框来获得所需的结果。毕竟,如果你仔细观察,所有这些线都会形成三角形。您可以找到有关行进多维数据集here的更多信息。