三维图形程序设计

article/2025/9/21 15:08:39

三维图形程序设计

  • 基础知识
    • 计算机图形学概述
    • 图形与图像
    • 图形流水线
    • 图形开发库
    • GPU
  • OpenGL编程
    • OpenGL的功能
    • OpenGL的两种编程模式
    • OpenGL相关的库
    • OpenGL基本语法
    • 程序流程
  • 变换(Transformation)
    • 变换的步骤
    • 几何变换
    • 投影变换
    • 视口变换
  • 光照
    • 光照明模型
      • phong模型
      • Blinn-Phong光照模型
      • openg中的光照明模型
  • 参考资料

基础知识

计算机图形学概述

计算机图形学(CG)是一门研究如何利用计算机进行图形的计算、处理和显示的学科。简单的说是一种使用数学算法将二维或三维图形转化为计算机显示器所能显示的二维栅格形式的科学(3D–>2D)。

  • 建模(Modeling):构建物体三维模型
  • 渲染(Rendering):计算屏幕窗口中每个像素的颜色,像素点颜色与光照、环境及物体材质有关
    • 逐像素绘制
    • 逐面片绘制(主流)
  • 动画(Animation):让物体动起来

图形与图像

  • 图形(graph):表示形的几何信息
  • 图像(image):像素组成的二维栅格
    图形的显示最终要转化为图像。
    在这里插入图片描述

图形流水线

  • 图形流水线(Graphics pipeline):在计算机中将3D模型转化为屏幕上的图像经过的一系列处理步骤(现在一般是逐面片绘制)。
    • 逐面片绘制:模型由许多面片(polygon)组成,逐面片的进行投影、光栅化(Rasterization)。
      • 投影:三维变换到二维
      • 光栅化:计算面片所覆盖的栅格
  • 1992年,SGI发布OpenGL1.0,图形流水线逐渐形成业界标准。
  • 1994年出现PC显卡,1999年出现GPU,图形流水线逐渐硬化到pc机专用图形硬件中。
    OPENGL红宝书上的流水线
    图形流水线总览
  1. 顶点操作(vertex operation)
    变换(Transformation):几何变换->投影->裁剪->视口变换
  2. 光栅化(rasterization)
    计算面片所覆盖的栅格
  3. 片元操作(fragment operation)
    纹理、雾效、测试等

图形开发库

  • 基础图形库
    • OpenGL(Open graphics library)
      调用图形硬件的程序接口,应用程序和图形显卡驱动的中介,可跨平台。
    • Direct3D
      在游戏界占优。
  • 辅助OpenGL开发的工具库
    aux(微软)、glut->freeglut、glfw
  • 辅助调用OpenGL扩展功能的库
    glew、glad

GPU

  • GPU是显卡的心脏,用来处理屏幕相关计算,并实现图形流水线,架构是并行。
  • GPU中图形流水线的发展
    • 早期固定管线(fixed),效率高,不够灵活
    • 2003年出现可编程渲染管线,vetex 和fragment可编程功能,Vertex Shader(顶点着色器)和Fragment Shader(片元着色器)
    • 2006年增加了Geometry Shader(几何着色器)
      图形流水线的发展
  • GPU编程
    • 早期汇编语言
    • 高级着色语言(shader language)
      在这里插入图片描述
  • GPU的应用未来
    • 通用并行计算平台
      • CUDA——基于Nvidia GPU的并行计算架构
      • OpenCL——业界众多著名厂商共同制作的面向异构系统通用目的 并行编程的开放式标准
    • GPGPU(General-Purpose GPU)
      用GPU完成通用计算,完成巨大计算量加速
    • GPU+CPU混合架构

OpenGL编程

OpenGL的功能

  • 变换(几何、投影、视口)
  • 光照与材质
  • 纹理映射
  • 图像功能(anti-aliasing反混淆、blending混合、fog)
  • 特效(depth cue深度暗示、motion blur运动模糊)
  • 建模(basic primitives,NURBS曲面)

OpenGL的两种编程模式

  • 固定流水线模式——传统方式
  • shader编程模式——现代方式

OpenGL相关的库

  • OpenGL library(核心库)
    函数前缀gl
    库文件gl.h、opengl32.lib、opengl32.dll
  • OpenGL utility library(实用程序库)
    函数前缀glu
    库文件glu.h,glu.lib,glu.dll
  • 辅助工具库(glut、freeglut、glew)
    功能主要有:
    • 执行与窗口相关的功能
    • 鼠标、键盘交互
    • 高级建模命令

OpenGL基本语法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

程序流程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

变换(Transformation)

变换的步骤

在这里插入图片描述

几何变换

  1. 平移(Translation)
    glTranslate*()
    
  2. 缩放(Scaling)
    glScale*()
    
  3. 旋转(Rotation)
    glRotate*()
    

在这里插入图片描述

投影变换

在这里插入图片描述
在这里插入图片描述

视口变换

在这里插入图片描述
在这里插入图片描述

光照

光照明模型

在这里插入图片描述

phong模型

在这里插入图片描述

  • 环境光
    在这里插入图片描述
  • 漫射光
    在这里插入图片描述
  • 镜面反射光
    在这里插入图片描述
    在这里插入图片描述

Blinn-Phong光照模型

  • 改进了镜面反射光的计算
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

openg中的光照明模型

在这里插入图片描述
本质上还是blinn模型

参考资料

中国大学MOOC-图形编程技术


http://chatgpt.dhexx.cn/article/sX3Puo9V.shtml

相关文章

Python图像处理

一、简介 实现计算机视觉任务的过程中,不可避免地需要对图像进行读写操作以及图像预处理操作,下面介绍两个常用的Python图像处理库:OpenCV和Pillow。 OpenCV全称是由英特尔公司资助的开源计算机视觉库。 它由一系列C函数和少量C&#xff0b…

OpenCV-Python图形图像处理:制作雪花飘落特效

☞ ░ 老猿Python博文目录:https://blog.csdn.net/LaoYuanPython ░ 一、引言 前几天有博友咨询,能否在视频中实现雪花飘落的效果,答案是肯定的。老猿前天简单构思了一下,利用周末时间,使用OpenCV-Python通过图像循环…

图像处理程序的设计与实现

一、要求: 1.利用Qt和QPainter实现一个图像处理程序,有菜单栏、工具栏和状态栏 2.有图像选择对话框,以选择和读取图像 3.状态栏显示图像的像素,位深,导入图像的路径和鼠标所在点的像素点坐标 4.可以对图像缩放&#xf…

C#图形化程序设计知识总结

图形化程序设计 用可视化的界面进行程序设计 逃出控制台丑丑的黑框 知识导图 图为图形化程序设计的内容清单 Windows窗体程序设计 窗体设计 窗体是一个窗口或对话框,是存放各种控件的容器,可用来向用户显示信息 一个Windows应用程序可以包含多个窗体 …

python 图像分割_5行Python代码实现图像分割的步骤详解

众所周知图像是由若干有意义的像素组成的,图像分割作为计算机视觉的基础,对具有现有目标和较精确边界的图像进行分割,实现在图像像素级别上的分类任务。 图像分割可分为语义分割和实例分割两类,区别如下: 语义分割&am…

台式计算机驱动程序未被安装,计算机图形驱动程序安装失败的原因及其解决方法...

由于许多问题,兼容性和数字签名,计算机图形驱动程序可能会失败. 很有可能没有启用Windows安装程序服务. 每个问题都有不同的解决方案. 如何确定问题的原因,可以借用软件进行检测,也可以尝试一种然后修复. 如果由于Windows Install…

LabVIEW程序框图保存为图像

LabVIEW程序框图保存为图像 想将LabVIEW程序框图保存为标准图像文件,以便可以在LabVIEW之外查看或在文档中使用。如何将程序框图生成为图像? 可以通过打印VI或以编程方式获取LabVIEW程序框图图像。 要打印VI,请使用以下步骤: …

Python图形绘制程序设计

第1关:绘制多边形 任务描述 本关任务:依照案例教程例6-2,用多边形函数绘制各种多边形图形。 编程要求 根据提示,在右侧编辑器补充代码。 测试说明 平台会对你编写的代码进行测试: 开始你的任务吧,祝你成功! 第2关:绘制五角星图形 任务描述 本关任务:绘制一个黄色…

升级计算机的图形卡和驱动程序,如何升级计算机图形卡,计算机图形卡升级方法图...

[哈哈IT网络中关村显卡]如何升级计算机显卡,通常我们会对显卡驱动程序做进一步的升级,这有助于提高显卡的性能,达到达到显卡升级的目的. 显卡驱动程序升级使计算机显示效果更好,显示效果也得到了提高. 下面介绍如何升级计算机图形…

计算机图形驱动程序原理,您知道更新计算机图形驱动程序的作用吗?怎么做

购买或使用计算机时,为了获得更好的视觉体验并避免显示的AV质量,我们通常在选择时安装独立的显卡!使用计算机时,有时第三方软件会提示您更新计算机图形驱动程序,但有时却没有!更新计算机图形驱动程序有什么…

VTK图形图像开发进阶-学习笔记 01 VTK概述

1.1 VTK概述 1.1.1VTK是什么 1.1.2VTK能做什么 1.1.3如何获取VTK源码 略 1.1.4 VTK学习资源 略 1.2 VTK编译安装 略 1.3创建一个简单的VTK程序 步骤一:创建目录A: D:\VTK\example\Chap01 步骤二:在目录A中创建txt文件:CMa…

用Java完成图形图像绘制

我们要来图形图像的处理,目标就是滑动鼠标绘制一根直线,绘制一个矩形,绘制一个圆,并且绘制任意的一个三角形,和任意的一个等腰三角形 我们先创建一个DrawPad类,在这个类里面完成一些操作 步骤1、创建一个…

图形图像学习随笔:计算机图形学的一些基本概念

本文内容摘抄于:《计算机图形学的概念》 一、计算机图形学的范畴 1、图形主要分为两类,一类是基于线条信息表示的,如工程图、等高线地形图、曲面的线框图等;另一类是明暗图,也就是通常所说的真实感图形; …

升级计算机的图形卡和驱动程序,驱动程序向导如何更新图形卡驱动程序?更新图形驱动程序方法说明...

有许多用户使用驱动程序向导,并且一些新用户不清楚更新图形驱动程序的教程. 今天,我将带给您有关更新图形驱动程序的教程. 希望它能对您有所帮助. 我们首先打开计算机上已安装的驱动程序向导软件,然后进入软件,然后单击页面“立即…

大数据学习内容有哪些?大数据学习路线图

很多人想学习大数据,但是都不清楚大数据学习应该怎么下手。大数据开发工程师简单整理了一下大数据学习路线图,希望对于学习大数据的朋友,有一定的帮助。 总的来说,如果是从零基础开始学习,总共分为八个阶段 第一阶段:HTML+css 第二阶段:JAVASE学习 第三阶段:javaweb …

(转载)大数据学习路线大数据学习路线

一、背景介绍 本人目前是一名大数据工程师,项目数据50T,日均数据增长20G左右,个人是从Java后端开发,经过3个月的业余自学成功转型大数据工程师。 二、大数据介绍 大数据本质也是数据,但是又有了新的特征&#xff0c…

2022最全大数据学习路线(建议收藏)

【不要错过文末彩蛋】 申明: 本文旨在为【大数据自学者|大数据专业学生|工资低的程序员(Java/Python等)】提供一个从入门到入职的的大数据技术学习路径,不适合5年以上大数据工程师的进阶学习。 前言: 一、个人介绍 …

大数据学习的必要性,让你走向时代前沿!

大数据及人工智能可谓是目前最热门的行业,从走在前沿的科技公司,到努力创新的传统行业,几乎都想把握这个新“风口”。一部分学校也走上了大数据的道路。 在这里还是要推荐下我自己建的大数据学习交流群:199427210,群里都是学大数据开发的,如果你正在学习高大上大数据 ,小…

2022年Python+大数据学习路线图,源码笔记,最优学习资源

任何学习过程都需要一个科学合理的学习路线,才能够有条不紊的完成我们的学习目标。Python大数据所需学习的内容纷繁复杂,难度较大,所以今天特别为大家整理了一个全面的Python大数据学习路线图,帮大家理清思路,攻破难关…