2013-07-24 83 views
0

所以我看到一个博客有关分析OBJ文件,但真正吸引我的是他们被解析的对象(这个问题不是解析OBJ文件)。我怎样才能画出这样的概述网格?

enter image description here

我知道用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

我不熟悉LWJGL,但我想我或许可以尽可能的算法本身去你指出正确的方向。您可以将Perlin/Simplex噪声插入行军立方体算法并从中生成三角网格。我用这个技术来创建此目:

Perlin Noise and Marching Cubes

我相信你可以通过绘制输出网格的线框得到你想要的结果。毕竟,如果仔细观察,所有这些线条都会形成三角形。你可以找到更多关于行军立方体here的信息。