Qt 加載HeightMap(高度圖)構造3D地形圖


Qt文檔閱讀筆記-加載HeightMap(高度圖)構造3D地形圖

QHeightMapSurfaceDataProxy:是Q3DSurface的一個基本代理類。

他是專門加載高度圖。

高度圖是沒有X,Z軸的概念,所以在編程的時候要指定minXValue, maxXValue, minZValue, maxZValue屬性。x值主要是圖的水平方向,y值為垂直方向。

QSurface3DSeries中setDrawMode():設置QSurface3DSeries畫圖的模式,有以下幾種:

QSurface3DSeries::DrawWireframe:只畫網格

QSurface3DSeries::DrawSurface:只畫表面

QSurface3DSeries::DrawSurfaceAndWireframe:畫網格及表面

QSurface3DSeries中flatShadingEnabled():設置表面底紋光滑。默認其他下是true。當為false時,表面將會用圓來替代。不是平滑的。什么意思,這里用圖來演示!

這個是為true的情況:

這個是為false的情況:

程序運行截圖如下:


源碼如下:

main.cpp

 1 #include <QApplication>
 2 #include <QtDataVisualization>
 3 #include <QHeightMapSurfaceDataProxy>
 4 #include <QSurface3DSeries>
 5 #include <QImage>
 6  
 7 using namespace QtDataVisualization;  8  
 9 int main(int argc, char *argv[]) 10 { 11  QApplication a(argc, argv); 12  
13  Q3DSurface surface; 14     surface.setFlags(surface.flags() ^ Qt::FramelessWindowHint); 15     surface.resize(800, 600); 16  surface.show(); 17  
18     //添加數據
19     QImage image(":/img/Heightmap4.png"); 20     QHeightMapSurfaceDataProxy *proxy = new QHeightMapSurfaceDataProxy(image); 21     proxy->setValueRanges(0.0f, 500.0f, 0.0f, 500.0f); 22     QSurface3DSeries *series = new QSurface3DSeries(proxy); 23     series->setDrawMode(QSurface3DSeries::DrawSurface); 24     series->setFlatShadingEnabled(false); 25  surface.addSeries(series); 26  
27     return a.exec(); 28 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM