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