Как я мог нарисовать контурную сетку, как это?
Итак, я увидел блог о разборе файлов 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 к алгоритму марширующих кубов и создать из него треугольную сетку. Я использовал эту технику для создания этой сетки:
Я полагаю, что вы можете получить желаемый результат, рисуя каркас выводимой сетки. В конце концов, если вы посмотрите внимательно, все эти линии образуют треугольники. Вы можете найти больше информации о марширующих кубах здесь.