计算机图形学: 通过计算机创建和操作图片。这本书介绍了用于创建各种图片的算法和数学知识,包括各种逼真的视觉效果,informative technical illustrations, 或者好看的计算机动画。图像可以分为二维图像,三维图像。图像可以完全通过合成或者通过照片生成。本书主要介绍一些基础算法和数学知识,特别是那些用来生成三维物体和场景的图像知识。
计算机图形学不可避免的会涉及到一些硬件,文件以及一到两个图形库。计算机图形学是一个高速发展的领域,很多知识在不断变化(硬件信息,图形API等),所以本文内容将尽量不依赖这些知识。读者们可以通过使用的硬件,软件相关文档来补充这些知识,幸运的是,书中的相关术语和概念应该适合大多数的环境。
本章会介绍相关术语,历史背景以及计算机图形学相关的信息
1.1 Graphics Areas
图形学核心领域可以分为三块:
建模(Modeling): 使用可以在计算机存储的数学方法表示物体的几何、外观属性。比如一个咖啡杯,通过一系列有序的点,并通过一些插值算法来表示几何信息,通过一些反射规则来表示外观属性(对光线的反射体现出颜色信息)
渲染(Rendering): 将3D模型映射到一张图片中
动画(Animation):如电影一般,模型随着时间变化,并渲染到图像上,连续播放
图形学还可以包含以下领域:
用户交互(User interaction): 处理各种输入设备输入,通过图像等感官信息反馈给用户
虚拟现实(Virtual reality):
可视化(Visualization):
图像处理(Image processing):
3D扫描(3D scanning):
计算机摄影(Computational photography):
1.2 主要应用(Major Applications)
电子游戏(Video games):
卡通动画(Cartoons):
视觉效果(Visual effects): 比如电影中的特效,背景等
动画片(Animated films):
CAD/CAM:
仿真(Simulation):
医学成像(Medical imaging):
信息可视化(Information visualization): 比如各类图表
1.3 图形API(Graphics APIs)
每个图形程序都需要依赖两种API: 一个用来输出图像,一个用来接收用户输入。现在有两种主流范式: 一种集成了图形API和用户界面API,比如Java。一种只提供图形API,比如Directx3D, OpenGL。
1.4 图形管线(Graphics Pipeline)
图形管线是可以通过软件或硬件实现的子系统,能够高效的渲染图元,并专门为三角形处理做出优化,用于加3D顶点映射到2D屏幕。
将三角形从远到进渲染出来是一个重要的研究内容,现在普遍使用 z-buffer实现。
管线的几何操作都可以通过齐次坐标运算实现
1.5 数值问题(Numerical Issues)
1.6 效率(Efficiency)
内存访问优化变得原来越重要了.
1、代码越直接越好,可以直接使用的,就不用存起来了
(编译器优化)
2、代码编译使用优化模式
3、使用性能分析工具来查找瓶颈
4、数据结构字节对齐
5、如果性能分析发现瓶颈在计算上,可以通过查看编译后的汇编代码来优化