OpenGL Карта высот - PullRequest
       7

OpenGL Карта высот

2 голосов
/ 20 сентября 2010

Я работаю над проектом для школы, и часть его составляла карту высот.

Мне удалось создать карту высот в соответствии с просьбой, но я надеялся получить немного дополнительных кредитов и сгладить всю поверхность. Вот изображение того, что у меня сейчас:

http://img.photobucket.com/albums/v222/shavus/hMap.png

Код, который я использовал для его генерации, брал вход .jpg, а затем использовал GL_TRIANGLE_STRIP для создания карты, которая у меня уже есть.

Код, который я использовал:

glBegin(GL_TRIANGLE_STRIP);
       for(int i = 1; i <= sourceImage->ny; i++)
       {
               for(int j = 1; j <= sourceImage->nx; j++)
               {
                       // Define Color for the Vertex
                       int red = PIC_PIXEL(sourceImage , j, i, 0);                // Find RGB value for each pixel
                       int green = PIC_PIXEL(sourceImage , j, i, 1);
                       int blue = PIC_PIXEL(sourceImage , j, i, 2);
                       float color = (float)(red + green + blue)/(3.0*255.0);

                       // Define Position for the Vertex
                       float xPos = (-1.0 + 2.0*((float)j/(float)sourceImage->nx)) * boxSize;
                       float yPos = (-1.0 + 2.0*((float)i/(float)sourceImage->ny)) * boxSize;
                       float height = (-boxSize + 2*((red + green + blue) / (3.0 * 255.0)));
                       glColor3f(color, color, color);
                       height = height * 0.5 * boxSize;
                       glVertex3f(xPos, yPos, height);
               }
       }
       glEnd(); 

Как я могу сделать эту гладкую поверхность похожей на эту?

http://zac -interactive.dk / blogimages / heightmap.jpg

Спасибо за любую помощь, которую вы можете оказать!

1 Ответ

2 голосов
/ 20 сентября 2010

Самый простой способ избавиться от внезапных изменений высоты в вашей карте высот и, таким образом, сделать ее более плавной, - запустить на ней сверточный фильтр.

Вот ссылка:

http://www.gamedev.net/reference/articles/article2164.asp

при выполнении фильтра коробки. Это не лучший фильтр, который вы можете использовать, но он будет иметь большое значение.

...