Как я мог нарисовать контурную сетку, как это?

Итак, я увидел блог о разборе файлов OBJ, но что действительно привлекло мое внимание, так это объект, который они анализировали (вопрос не в разборе файлов OBJ).

Я знаю, что сетка была создана с использованием алгоритма трехмерного шума, возможно, симплексного шума, но я хочу знать, как я могу создать эффект линии, аналогичный тому, что был в LWJGL.

У меня уже есть алгоритм трехмерного симплексного шума, и некоторый код, который, я думал, будет работать, но на самом деле не делает то же самое.

Паттерн, который я замечаю относительно сетки, - это ряды линий, которые начинаются снаружи, где плотность шума самая высокая. Затем эти линии развиваются в зависимости от плотности шума в определенных точках, поэтому я попытался создать алгоритм для создания этих линий и их эволюции, но это не сработало.

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();

Не должно быть трудно понять, что это не дает ничего похожего на результаты. Я не знаю, как подойти или точно создать ту же форму сетки или что-то подобное, так что кто-нибудь может мне помочь?

1 ответ

Я не знаком с LWJGL, но думаю, что смогу направить вас в правильном направлении в том, что касается самого алгоритма. Вы можете подключить шум Perlin/Simplex к алгоритму марширующих кубов и создать из него треугольную сетку. Я использовал эту технику для создания этой сетки:

Перлин Шум и марширующие кубики

Я полагаю, что вы можете получить желаемый результат, рисуя каркас выводимой сетки. В конце концов, если вы посмотрите внимательно, все эти линии образуют треугольники. Вы можете найти больше информации о марширующих кубах здесь.

Другие вопросы по тегам