Skip to content

Using MFC & OpenGL & OSG to display DEM and 3D model

Notifications You must be signed in to change notification settings

Andytonglove/OpenglDEM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 

Repository files navigation

地形数据三维可视化 程序说明

代码仅供部分参考,如使用还需自行修改

实习要求

一、地形数据三维可视化(GRID DEM)

  1. 数据源

    1. QQ群上传的DEM文件:test.asc文件
    2. 自己下载的一块高分辨率影像数据,这里我用的SPOT5.tif,由ARCGIS转asc与bmp格式导入
  2. 技术要求

    1. 基于MFC + OpenGL,编写单视窗文档,初始化OpenGL环境(蓝色底色);
    2. 读取并且三维可视化DEM地形,分别采用正射投影和透视投影模式;
    3. 正射投影和透视投影下,可以中心旋转三维地形,可以拉近拉远地形,可以进行地形高度夸张;
    4. 自己从网站上下载一块高分辨率影像数据和矢量地图栅格化数据,作为地形的纹理进行渲染。

二、室内三维建模与可视化

/osg文件夹提供3DMAX建模结果的可视化代码,使用C++与osg配置环境,实现了下述功能

  1. 数据源
    1. 某火车站 室内数据(1-3层) SHAPFILE数据与地下广场 DWG数据(略)
  2. 技术要求
    1. 可以使用3DMAX 、SKECHUP等大家熟悉的各种不同的建模工具,构建室内三维模型,上交格式一律统一为OBJ格式。要求具有建筑结构表达完整细致如走廊、门、窗户、墙 楼梯等;具有合适的纹理对功能区加以区分。
    2. 三维模型与二维矢量图形保持1:1比例对齐;
      • 利用MFC(C++/Qt……) + OpenSceneGraph 将自己建模的OBJ模型、二维矢量数据叠加在第一次实习的三维地形数据上,可以进行漫游、缩放、旋转。
      • 能够进行几何实体的拾取操作。

代码说明

  1. 运行环境说明:

    • 程序编写基于VS2019的MFC单视窗环境,OpenGL环境基于Nupengl库或自行通过glut配置的最新OpenGL,均可正常运行。
  2. 主要代码说明:

    • pch.h/pch.cpp: 预编译文件
    • CMFCDemOpenGLDoc.h/CMFCDemOpenGLDoc.cpp: 文档类,主要负责文件读取
    • CMFCDemOpenGLView.h/CMFCDemOpenGLView.cpp: 视图类,主要负责图像与操作显示
    • ……
  3. 实现功能: 基于OpenGL实现的DEM操作包括如下:

    • 读取并且三维可视化DEM地形
    • 中心旋转三维地形漫游
    • 绕X/Y轴顺时针/逆时针旋转场景
    • 缩小/放大场景(即拉近拉远地形)
    • 增加/减小高度比(即地形高度夸张)
    • 向左/右平移场景
    • 粘贴渲染地形纹理
    • 填充地形模式切换
    • 正射投影和透视投影模式切换显示

程序运行操作说明

  1. 配置好OpenGL/Nupengl环境后运行exe或在解决方案中直接运行代码。

  2. 打开运行程序MFC窗口,通过打开文件读入test.asc或其他DEM文件,通过菜单中的DEM操作下的功能按钮或快捷键实现各类DEM操作功能。

  3. 具体MFC运行截图如效果下: screenshot1 screenshot2

Reference

https://blog.csdn.net/bcbobo21cn/article/details/121187715

About

Using MFC & OpenGL & OSG to display DEM and 3D model

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published