用Python和OpenGL探索数据可视化(三维篇)- 与照相机“共舞”

备注:本系列文章介绍如何使用Python和OpenGL 4.5进行数据可视化的开发。因此请参考《准备工作(一)Windows下检测显卡和OpenGL信息》一文检测读者的电脑是否支持OpenGL 4.5版本(基本上2018年之后销售的电脑都可以支持OpenGL 4.5)。

再参考《准备工作(二)配置Windows下VS Code + Python + OpenGL开发环境》配置本文需要的开发环境)

前几节通过绘制三维坐标轴和三维立方体,我们已经初步了解了OpenGL如何通过一系列的数学变换,把三维世界的图形映射到了二维屏幕上(见下图):

本节我们详细讨论视图矩阵和投影矩阵。如上图所示,作为开发人员,我们需要自己完成前四步的空间变换,OpenGL只需要程序开发人员提供几个变换矩阵给它,正如前几节顶点着色器中的如下代码:

gl_Position = projection * view * model * vec4(position, 1.0);
之后OpenGL会完成后两步的变换。

“照相机”和“照相机空间”是人类参考人眼成像的过程抽象出来的概念,从而便于进行数学变换:

还是通过代码的实践来帮助我们的理解。

运行VS Code,选择File菜单里“Open Folder”,打开D:\pydev\pygl,在basic文件夹下新建一个camera_app.py文件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在camera_app.py输入以下代码:

import sys
parent_dir = "../pygl"
sys.path.append(parent_dir)
import ctypes
import OpenGL.GL as gl
import glm
import imgui
import numpy as np
import pygl
from common import App, AxesHelper, Cube

class CameraApp(App):
    # 初始化着色器,vao vbo等
    def setupVertex(self) -> None:
        gl.glEnable(gl.GL_DEPTH_TEST)
        self.back
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值