1.用Python和OpenGL探索数据可视化(实践篇)- 三维点云数据可视化
2.用Python和OpenGL探索数据可视化(实践篇)- Mesh网格模型查看器(中)
3.opengl-01:源码编译
4.CMake搭建OpenGL开发环境
5.用Python和OpenGL探索数据可视化(三维篇)- 创建三维坐标轴类和立方体类
6.用Python和OpenGL探索数据可视化(基础篇)- OpenGL简介及演化
用Python和OpenGL探索数据可视化(实践篇)- 三维点云数据可视化
在本篇实践中,我们将使用Python和OpenGL 4.5技术来可视化三维点云数据,码o码通过前面章节的基于基础铺垫,如OpenGL绘图基础和开发环境配置,码o码现在我们将开始具体应用。基于点云,码o码易语言源码追作为三维空间中点的基于集合,广泛应用于建筑、码o码医疗、基于自动驾驶等领域,码o码其可视化对于数据分析至关重要。基于我们将从数据获取(如来自semantic3d.net的码o码亿点样本)入手,处理XYZ坐标和RGB颜色信息,基于通过编写VS Code中的码o码点云渲染代码,实现点云数量的基于动态调整和交互式操作,如缩放、旋转和移动。源代码及系列文章参考链接已提供,有兴趣的读者可以跟随步骤进行实践。
用Python和OpenGL探索数据可视化(实践篇)- Mesh网格模型查看器(中)
在本系列文章中,我们探讨了如何使用Python和OpenGL 4.5进行数据可视化开发。首先,请确保您的电脑支持OpenGL 4.5版本(大多数年之后销售的电脑均支持)。接下来,请配置您的ourphp源码下载开发环境,包括Windows下的VS Code、Python和OpenGL。
上一节中,我们学习了如何以三维点云的方式查看不同的Mesh网格模型。本节,我们将继续深入,利用之前所学的知识,以实体线框方式展示数据。在common子文件夹中,创建一个名为solid_wireframe.py的文件,用于以实体线框方式显示数据。
在solid_wireframe.py中,输入以下代码:
在common子文件夹下的__init__.py文件中进行相应的修改。
在mesh_viewer.py文件的基础上,继续完善usecase子文件夹下的代码。默认情况下,打开文件后以实体线框方式查看Mesh网格模型。点击VS Code右上角的三角形图标,运行代码,选择文件菜单下的打开命令,打开bun_zipper.ply文件。默认为实体线框显示,通过鼠标操作调整模型视角,修改曲面和线框颜色等。apk messager源码点击“查看方式”菜单,可以选择以点云方式显示。再次开dragon_vrip.ply文件,选择实体线框方式,可调整缩放比例。再次选择Utah_VW_Bug.stl文件,调整缩放比例和线框粗细。最后,打开teapot.obj文件,实体线框模式提供了更多模型细节。
下一节,我们将尝试添加光照功能,以实现更丰富的可视化效果。
本系列文章的源代码已上传至gitee.com/eagletang/pyg...。
在探索数据可视化的旅程中,请参考以下系列文章:
1. 用Python和OpenGL探索数据可视化(基础篇)- OpenGL简介及演化
2. 计算机图形显示的基础知识
3. OpenGL 渲染管线简介
4. OpenGL 4.5核心对象简介
在基础篇中,我们从“你好,窗口!”开始,逐渐深入到“你好,三角形!”、“处理键盘和鼠标事件”等主题,构建了Python和OpenGL的网站编辑源码可视化基础。
在三维篇中,我们探讨了如何创建坐标轴、使用立方体体验模型矩阵、创建三维坐标轴类和立方体类、与照相机“共舞”、创建照相机类、使用帧缓存对象FBO、CT扫描体数据可视化等高级主题。
实践篇中,我们尝试了三维点云数据可视化、数学之美之三维曲面、使用几何着色器绘制实体线框、使用细分着色器、绘制二维贝塞尔曲线(含动画)等实际应用。
在本节中,我们专注于以实体线框方式查看Mesh网格模型,通过实践加深对OpenGL和数据可视化技术的理解。
opengl-:源码编译
1 源码编译 + cmake + vscode
系统环境:ubuntu ..6
编译环境: g++9.4 cmake3..3
编译工具:vscode
1.1 glfw源码编译
Release 3.3. · glfw/glfw 下载 glfw-3.3..zip
安装依赖
解压源码文件
cmake配置
编译工程 edgelee / vscode-opengl-tutorial -1-glfw
1.2 glad源码编译
glad.dav1d.de/ 选择配置内容(如图)
生成源文件 glad.zip
解压zip
cmake配置
一级CmakeList
二级CmakeList
编译工程 edgelee / vscode-opengl-tutorial -2-glad
1.3 imgui源码编译(依赖系统OpenGL)
imgui源码下载
github.com/ocornut/imgu...
ubuntu安装opengl
解压zip
cmake配置
一级CmakeList
二级CmakeList
根据makefile内容配置CmakeList(imgui-1..4/examples/example_glfw_opengl3/Makefile)
编译输出 edgelee / vscode-opengl-tutorial -3-imgui-(system-gl)
1.4 imgui源码编译(不依赖系统OpenGL)
imgui源码下载:同1.3
ubuntu安装opengl:不需要(即使安装,不使用)
解压zip:同1.3
cmake配置
一级CmakeList:同1.3
二级CmakeList:去掉OpenGL依赖
编译错误
根据错误提示,修正
imgui-1..4/backends/imgui_impl_glfw.cpp文件的添加
编译结果 edgelee / vscode-opengl-tutorial -3-imgui-(no-system-gl)
2 实例2.1 旋转三角形 glfw +glad
源码文件:glfw-3.3./examples/simple.c(不采用glfw自带glad,修改到自编译glad)
一级CmakeList
二级CmakeList
生成效果 edgelee / vscode-opengl-tutorial -sample-glfw-glad
2.2 gui界面 glfw +imgui
源码文件:imgui-1..4/examples/example_glfw_opengl3/main.cpp
一级CmakeList
二级CmakeList
生成效果 edgelee / vscode-opengl-tutorial -sample-glfw-imgui
2.3 gui界面 glfw +glda +imgui(建议方式)
注:建议采用此方式,openGL api 统一使用 gdal api
源码文件:imgui-1..4/examples/example_glfw_opengl3/main.cpp(修改到 gdal api)
一级CmakeList
二级CmakeList
生成效果 edgelee / vscode-opengl-tutorial -sample-glfw-glad-imgui
CMake搭建OpenGL开发环境
在Ubuntu.环境中搭建OpenGL开发环境,主要采用GLFW和GLAD。
首先,音乐源码软件编译GLFW,遵循GLFW官网提供的编译指南,利用CMake进行编译。
Ubuntu用户可以直接安装libglfw3-dev依赖。
确认所使用的环境为X系统,并安装相应依赖。
访问GLAD官网,下载zip压缩包,解压后将include文件夹移动到/usr/local/include目录,并将glad.c文件放置在工程目录中。
创建测试工程,包含CMakeLists.txt文件和main.cpp。
欲深入了解OpenGL,可参考LearnOpenGL CN主页。
加入glm库,获取链接:github.com/g-truc/glm。
步骤如下:直接将glm源码下载到thirdparty目录;
修改CMakeLists.txt文件,加入相关配置。
调整顶点着色器,添加模型常量句柄,以便与shader program链接。
使用glm库旋转度,实现特定效果。
最终结果如下所示。
用Python和OpenGL探索数据可视化(三维篇)- 创建三维坐标轴类和立方体类
本系列文章讲解使用Python与OpenGL 4.5进行数据可视化开发,确保您的计算机支持OpenGL 4.5版本,建议阅读《准备工作(一)Windows下检测显卡和OpenGL信息》以确认兼容性。继续参阅《准备工作(二)配置Windows下VS Code + Python + OpenGL开发环境》以完成所需开发环境的设置。
上一节我们通过立方体学习了OpenGL的变换矩阵与模型矩阵。紧接着在《用Python和OpenGL探索数据可视化(三维篇)- 你好,坐标轴》一节中我们绘制了三维坐标轴。立方体与坐标轴是三维图形绘制中常见的元素,因此我们将在本节中通过代码重构将它们转化为专门类,以便后续的重复使用。
开始VS Code,使用File菜单下的“Open Folder”功能,打开D:\pydev\pygl并进入common文件夹,新建一个名为shaders的子文件夹。将basic文件夹下的shaders子文件夹中的axes.vs、axes.fs、cube.vs、cube.fs文件复制至common文件夹的shaders文件夹。
在common文件夹中新建axeshelper.py文件,并在其中输入相应代码。同样地,创建cube.py文件并输入对应代码。接着,在common文件夹中建立__init__.py文件,并在其中输入必要的代码。
在basic文件夹中新建一个名为cube_app_v1.py的文件,并在其中输入相应的代码。点击VS Code右上角的三角形图标以运行代码,此时会呈现预期的结果。
借助坐标轴的辅助,图形变换变得清晰且有趣。通过本系列文章中的源代码资源,您可以进一步探索和实践Python与OpenGL的数据可视化开发。
参考系列文章:1.《用Python和OpenGL探索数据可视化(基础篇)- 你好,窗口!》;2.《用Python和OpenGL探索数据可视化(基础篇)- 你好,OpenGL!》;3.《用Python和OpenGL探索数据可视化(基础篇)- 你好,ImGui!》;4.《用Python和OpenGL探索数据可视化(基础篇)- 你好,小不点!》;5.《用Python和OpenGL探索数据可视化(基础篇)- 重构代码“你好,小不点!”》;6.《用Python和OpenGL探索数据可视化(基础篇)- “你好,线段!”》;7.《用Python和OpenGL探索数据可视化(基础篇)- 重构代码组织OpenGL核心对象包pygl》;8.《用Python和OpenGL探索数据可视化(基础篇)- 你好,三角形!》;9.《用Python和OpenGL探索数据可视化(基础篇)- 改进OpenGL程序Program类》;.《用Python和OpenGL探索数据可视化(基础篇)- 你好,矩形!》;.《用Python和OpenGL探索数据可视化(基础篇)- 完善pygl增加索引缓存对象EBO》;.《用Python和OpenGL探索数据可视化(基础篇)- 你好,纹理!》;.《用Python和OpenGL探索数据可视化(基础篇)- 完善pygl增加OpenGL二维纹理对象》;.《用Python和OpenGL探索数据可视化(基础篇)- 细说纹理环绕》;.《用Python和OpenGL探索数据可视化(基础篇)- 细说纹理过滤》;.《用Python和OpenGL探索数据可视化(基础篇)- 处理键盘和鼠标事件》;.《用Python和OpenGL探索数据可视化(三维篇)- 你好,坐标轴》;.《用Python和OpenGL探索数据可视化(三维篇)- 用立方体体验模型矩阵》。
用Python和OpenGL探索数据可视化(基础篇)- OpenGL简介及演化
在年三十,祝福各位知友在甲辰龙年身体健康、万事如意!
OpenGL,即开放图形库,是应用于图形硬件的API。它由数百个子程序和函数构成,旨在帮助程序员指定着色器程序、对象及操作,以生成高质量图形图像,特别是三维对象的彩色图像。
OpenGL成为行业标准,因其独立于窗口系统和操作系统,使软件开发者在各种设备上(如手机、平板、台式机、笔记本、工作站及超级计算机)能够开发高性能、视觉效果引人注目的二维、三维图形软件。这些应用覆盖了如CAD、CAE、科学可视化、内容创作、能源、娱乐、游戏开发、制造、医疗和虚拟现实等多个领域。
Khronos Group自年起负责OpenGL API规范的制定,截至年2月,官方已发布个版本。对于OpenGL的详细发展历史,可访问Khronos Group的官方网站。OpenGL使用的渲染管线和核心对象自4.3版本后基本稳定,如图所示。
考虑到计算机图形硬件的迅速发展,Khronos Group从年起开始开发新一代OpenGL,即Vulkan。Vulkan是一种比OpenGL更接近硬件的低级API,可直接控制GPU,从而在各种硬件上实现更高效的渲染和更好的性能。
掌握OpenGL中的渲染管线、着色器及GLSL对学习和应用Vulkan仍然有所帮助。
如需查阅更多详细信息,可参考以下链接:
registry.khronos.org/Op...
khronos.org/opengl/
khronos.org/opengl/wiki...
本系列文章的源代码已上传至Gitee。
以下为文章系列摘要:
1. 《用Python和OpenGL探索数据可视化(基础篇)- 你好,窗口!》
2. 《用Python和OpenGL探索数据可视化(基础篇)- 你好,OpenGL!》
3. 《用Python和OpenGL探索数据可视化(基础篇)- 你好,ImGui!》
4. 《用Python和OpenGL探索数据可视化(基础篇)- 你好,小不点!》
5. 《用Python和OpenGL探索数据可视化(基础篇)- 重构代码“你好,小不点!”》
6. 《用Python和OpenGL探索数据可视化(基础篇)- “你好,线段!”》
7. 《用Python和OpenGL探索数据可视化(基础篇)- 重构代码组织OpenGL核心对象包pygl》
8. 《用Python和OpenGL探索数据可视化(基础篇)- 你好,三角形!》
9. 《用Python和OpenGL探索数据可视化(基础篇)- 改进OpenGL程序Program类》
. 《用Python和OpenGL探索数据可视化(基础篇)- 你好,矩形!》
. 《用Python和OpenGL探索数据可视化(基础篇)- 完善pygl增加索引缓存对象EBO》
. 《用Python和OpenGL探索数据可视化(基础篇)- 你好,纹理!》
. 《用Python和OpenGL探索数据可视化(基础篇)- 完善pygl增加OpenGL二维纹理对象》
. 《用Python和OpenGL探索数据可视化(基础篇)- 细说纹理环绕》
. 《用Python和OpenGL探索数据可视化(基础篇)- 细说纹理过滤》
. 《用Python和OpenGL探索数据可视化(基础篇)- 处理键盘和鼠标事件》
. 《用Python和OpenGL探索数据可视化(三维篇)- 你好,坐标轴》
. 《用Python和OpenGL探索数据可视化(三维篇)- 用立方体体验模型矩阵》
. 《用Python和OpenGL探索数据可视化(三维篇)- 创建三维坐标轴类和立方体类》
. 《用Python和OpenGL探索数据可视化(三维篇)- 与照相机“共舞”》
. 《用Python和OpenGL探索数据可视化(三维篇)- 创建照相机类》
. 《用Python和OpenGL探索数据可视化(三维篇)- 四元数和轨迹球照相机》