计算机图形学_计算机图形学习题 - CSDN
计算机图形学 订阅
计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。 展开全文
计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。
信息
提出时间
1963年1月
起源地点
MIT林肯实验室
简    称
CG
中文名
计算机图形学
创始人
萨瑟兰
外文名
Computer Graphics
计算机图形学历史发展
1963年1月,MIT林肯实验室24岁的萨瑟兰完成了关于人机通信的图形系统的博士论文。萨瑟兰引入了分层存储符号的数据结构,开发了交互技术,可以用键盘和光笔实现定位、选项和绘图,还提出了至今仍在沿用的许多图形学的其他基本思想和技术。萨瑟兰的博士论文被认为既是计算机图形学的奠基,也是现代计算机辅助设计之肇始。20世纪70年代,由于光栅显示器的诞生,光栅图形学算法迅速发展起来;基本图形操作和相应的算法纷纷出现,图形学进入了第一个兴盛时期。70年代,很多国家应用计算机图形学,开发CAD图形系统,并应用于设计、过程控制和管理、教育等方面。80年代中期以来,大规模集成电路使计算机硬件性能提高,图形学得到飞速的发展。1980年,第一次给出了光线跟踪算法。真实感图形的算法逐渐成熟。80一90年代,图形学更加广泛地应用于动画、科学计算可视化、CAD/CAM、虚拟现实等领域。这向计算机图形学提出了更高、更新的要求——真实性和实时性。 [1] 
收起全文
精华内容
参与话题
  • 计算机图形学 第4版 中文版 [(美)赫恩,(美)巴克,(美)卡里瑟斯著][电子工业出版社][2014.11][678页][13684300].pdf “免责声明:源代码仅仅用于内部学习,不得用于任何商业行为和破坏行为,如有侵权请及时...
  • 计算机图形学基础

    千人学习 2018-10-22 21:38:11
    该课程是计算机图形领域的基础的课程,包含了计算机图形学的数学原理,例如在计算机图形学中的重要坐的标变换的原理。该课程也是游戏开发、VR/AR等开发的基础课程。在该课程中除了讲授数学原理,还包括了C++实践,...
  • 计算机图形学导论

    千次阅读 2020-02-17 10:00:21
    计算机图形学概念 1.1什么是计算机图形学?(Computer Graphics) 关于计算机图形学的定义众说纷纭。 IEEE 对计算机图形学的定义为:Computer graphicsis the art or science of producing graphical images with...

     

    一.计算机图形学概念

    1.1什么是计算机图形学?(Computer Graphics)

    关于计算机图形学的定义众说纷纭。

    IEEE 对计算机图形学的定义为:Computer graphicsis the art or science of producing graphical images with the aid of computer。

    国际标准化组织 ISO 将计算机图形学定义为:计算机图形学是一门研究通过计算机将数据转换成图形,并在专门显示设备上显示的原理方法和技术的学科。它是建立在传统的图学理论、应用数学及计算机科学基础上的一门边缘学科。

    总而言之计算机图形学是研究怎样利用计算机来显示、生成和处理图形的原理、方法和技术的一门学科,这里的图形是指三维图形的处理。

    1.2图形和图像

    图形和图像辨析

    计算机图形学(computer graphics)的基本含义是使用计算机通过算法和程序在显示设备上构造图形。图形是人们通过计算机设计和构造出来的,不是通过摄像机、扫描仪等设备输入的图像。这里的图形可以是现实中存在的图形,也可以是完全虚拟构造的图形。以矢量图的形式呈现,更强调场景的几何表示,记录图形的形状参数与属性参数。例如,工程图纸,其最基本的图形单元是点、线、圆/弧等,其信息包含图元的几何信息与属性信息(颜色、线型、线宽等显式属性和层次等隐式属性)。

    图像处理(image processing)则是研究图像的分析处理过程,图像处理研究的是图像增加、模式识别、景物分析等,研究对象一般为二维图像。图像以点阵图形式呈现,并记录每个点的灰度或色彩。例如,照片、扫描图片和由计算机产生的真实感和非真实感图·形等, 最基本的图像单元(pels,picture elements)是点—像素(pixel),其信息实际上是点与它的属性信息(颜色、灰度、亮度等)。

     

    1.3计算机图形学发展

    • 20 世纪 50 年代:1946 年 2 月 14 日,世界上第一台电子计算机ENIAC在美国宾夕法尼亚大学问世,1950 年第一台图形显示器诞生于麻省理工学院,从此计算机具有了图象显示功能,也开启了图形显示与计算机技术联系的桥梁。

    • 20 世纪 60 年代:1962 年美国 MIT 林肯实验室的 Ivan E.Sutherland 发表了一篇题为“sketchpad:一个人机交互通信的图形系统”的博士论文,首次使用了“Computer Graphics” 这一概念,证明了交互式计算机图形学是一个可行的、有应用价值的研究领域,从而确立了计算机图形学正式成为一个独立学科的分支。随着光栅显示器的诞生,对光栅图形学算法的研究迅速地发展壮大起来,大量基本概念以及相应的算法应运而生。

    • 20 世纪 70 年代:图形学在这一时期进入了兴盛期,光栅图形学算法迅速发展,区域填充、裁剪、消隐等概念及其相应算法纷纷被提出,实用的 CAD 图形系统也开始出现。除此之外,真实感图形学和实体造型技术的产生也是 70 年代计算机图形学的两个重要进展。

    • 20 世纪 80 年代以后:出现了带有光栅扫描显示器的微型计算机和图形工作站,极大的推动了计算机图形学的发展,如 Machintosh、IBM 公司的 PC 及其兼容机,Apollp、Sun 工作站等。随着奔腾 III 和奔腾 IV 系列 CPU 的出现,计算机图形软件功能一开始部分地由硬件实现。高性能显卡和液晶显示屏的使用,高传输率大容量硬盘的出现,特别是 Internet 的普及使得微型计算机和图形工作站在运算速度、图形显示细节上的差距越来越小,这些都为图形学的飞速发展奠定了物质基础。

    • 20 世纪 90 年代以后:微机和软件系统的普及使得图形学的应用领域日益广泛,计算机图形学朝着标准化、集成化和智能化的方向发展,多媒体、人工智能、计算机可视化、虚拟现实等分支蓬勃发展,三维造型也获得了长足发展。ISO 公布的图形标准越来越精细,更加成熟。这是存在着一些事实上的标准,如 SGI 公司开发的 OpenGL 开放式三维图形标准,微软公司为PC 游戏开发的应用程序接口标准DirectX 等,Adobe 公司 Postscript 等,均朝着开放式、高效率的方向发展。

     

    二.计算机图形学总体框架

    数学基础:主要包括一些基本的算法,例如向量与几何的变换,如几何建模时的三维空间变换、绘制时的三维到二维的投影变换和二维空间的窗口和视图变换等。

    建模:三维和二维空间的各种几何模型,有解析式表达的简单形体,也有隐函数表达的复杂曲线等。建模的主要工作是几何计算。

    渲染:或者叫做绘制,指的是模型的视觉实现过程,计算机图形学的光照、纹理等理论和算法都需要对模型进行处理,其中也要用到大量的几何计算。

    交互技术:如今的交互式图形学已经可以提供图形通讯手段,成为图形交互的主要工具。几何计算贯穿于以上各个过程之中,是计算机图形学的基础。在图形学中那些看上去是“绘制”的内容,本质上仍是几何计算的问题。例如隐藏线、隐藏面的消除以及具有光照效果的真实感图形显示虽是提升图形显示效果的手段,但其主要的工作恰是几何计算。Gourand 插值模型(通过对多边形顶点颜色进行线性插值来绘制其内部各点)和 Phong 插值模型(对多边形顶点的法线方向进行插值以产生中间各点的法线方向)的实质均是几何插值问题;光线跟踪的工作和时间花费主要是几何计算-光线与景物的求交计算及交点处景物表面的法向、反射光线与折射光线的方向计算等。

     

    2.1 建模

    没有模型,图形就无从谈起,建模是计算机图形学各项工作的基础和前提,建模技术的核心是根据研究对象的三维空间信息构造其立体模型,尤其是几何模型,并利用相关建模软件或编程语言生成该模型的图形显示,然后对其进行处理。目前,物体的三维几何模型就其复杂程度来说可以分为三类:线模型、面模型和体模型。对三维建模技术的研究基本上都是针对三维面元模型和体元模型来展开的。

     

    2.2 渲染

    计算机图形学的一项主要工作是将计算机中抽象的模型转换为人们直观可见、可以形象理解的图形。它综合利用数学、物理学、计算机等知识,将模型的形状、物理特性(如材料的折射率、反射率、物体发光温度等,机械强度、材料密度等对运动模拟的影响等),以及物体间的相对位置、遮挡关系等性质在计算机屏幕上模拟出来,是一个将“几何”演绎到画面上的再创造过程,这就是渲染,也叫绘制。

    2.2.1什么是渲染?

    当需要把模型或者场景输出成图像文件、视频信号或者电影胶片时就需要用到渲染

    (Render)。渲染是指软件由模型生成图像的过程。模型是用语言或者数据结构进行严格定义的三维物体或虚拟场景,它包括几何、视点、纹理、照明等信息。图像是数字图像或者位图图像。除去后期制作,渲染是计算机图形处理的最后一道工序,通过它得到模型与动画的最终显示效果。实现渲染依靠多种软件,如各种 CG 软件自带渲染引擎、RenderMan 等。

    随着计算机图形学的不断深入发展,渲染的应用领域越来越广泛:计算机与视频游戏、模拟、电影或者电视特效以及可视化设计。作为产品来看,现在已经有各种不同的渲染工具产品,有些集成到更大的建模或者动画工具中,有些是独立产品,有些是开放源代码的产品。从内部来看,渲染工具都经过了仔细的设计,其理论基础是光学、视觉感知、数学以及软件开发等各种科学理论。

    2.2.2渲染技术有哪些?

    扫描线渲染与栅格化:扫描线渲染是一行一行进行的一项技术和算法集。所有待渲染的多边形首先按照顶点 y 坐标出现的顺序排序,然后使用扫描线与列表中前面多边形的交点计算图像的每行或者每条扫描线,在活动扫描线逐步沿图像向下计算的时候更新列表。这种方法的一个优点是没有必要将主内存中的所有顶点都转到工作内存,只有与当前扫描线相交边界的约束顶点才需要读到工作内存,并且每个定点数据只需读取一次。主内存的速度通常远远低于中央处理单元或者高速缓存,避免多次访问主内存中的顶点数据,就可以大幅度地提升运算速度。

    栅格化又叫光栅化,是将几何数据经过一系列变换后最终转换为像素,从而呈现在显示设备上的过程。栅格化将顶点数据转换为片元,片元中的每一个元素对应于帧缓冲区中的一个像素。如下图。

     

    光线投射:从不同视角观察场景,并根据几何与反射强度的基本光学原理计算观察到的图像,这就是光线投射。光线投射算法的基本思想是从视平面每个像素发出一条光线,穿过体数据,基于最基本的光线吸收和发射模型,沿着光线方向对颜色和阻光度进行积累。当光线与物体交叉的时候,交叉点的颜色可以用几种不同的方法来计算。其中最简单的方法是用交叉点处物体的颜色表示该点的实际颜色;也可以用纹理映射的方法来确定;一种更加复杂的方法是依据局部光照模型进行计算。为了减少人为误差,可以对多条相邻方向的光线进行平均。另外的一些计算涉及到从光源到物体的入射角,以及根据光源的强度计算像素的亮度值。

    光线投射算法从视点发出一组光线,对光线经过的三维数据集上的数据可以间隔均匀地采样,与人类真实视觉相似,适用于透视投影。因此光线投射主要被用于实时模拟场景下, 例如三维计算机游戏以及动画等,这类场景往往对细节不太重视而且通过人为制造细节可以得到更好的表现效果。

    辐射着色:辐射着色是模拟反射光线如何反射到它表面以及如何照亮周围环境的方法。这种方法可以生成较为真实的浓淡效果,并且更加易于捕捉室内场景的环境光。这种模拟的光线基础是特定物体表面某一点的漫反射的光线散布在很大的方向范围内并且会照亮周围 的环境。 各种模拟技术的复杂性可能会有所不同。许多渲染方法所用的辐射着色模型都非常原始, 它们只是简单地根据环境因数变化照亮整个场景。但是当高级的辐射着色与高质量的光线跟 踪算法组合在一起使用的时候,它们能够生成相当真实的图像,尤其是对于室内场景更是这样。在高级的辐射着色模拟中,递归的有限元分析算法不断地将光线在模型表面之间来回反射,直到达到一定的递归条件为止。这样一个表面的色彩就会影响其它相邻表面的色彩,反之亦然。整个模型的照明结果会被保存起来,在光线投射或者光线跟踪模型中作为输入使用。由于这项技术的递归特性,所以对于复杂物体的模拟速度非常缓慢。一些先进的辐射着色计算方法可能只计算房间中从墙面、地板与房顶反射的环境光,而并不计算复杂物体反光对于辐射着色的影响,或者在辐射着色计算中使用同样尺寸及纹理的简单物体取代复杂物体。如果场景中运动的辐射着色物体很少,那么可以在多帧画面中重复使用同样的辐射着色数据。

    光线跟踪:类似于光线投射,但是光线跟踪使用了更加先进的光学模拟方法,并且通常使用蒙特·卡罗方法以实现更加真实的结果,不过这样做的代价通常是速度的大幅度降低。

    光线跟踪是比其他渲染方法如扫描线渲染等更加能够实现的模拟光线,因此像反射和阴影这样一些需要复杂精确渲染的效果,就需要光线跟踪算法来实现。因此,在要求高质量渲染效果的光线跟踪中,通常每个像素都需要采样多条光线,并且不仅是跟踪到第一次相交, 而是需要按照“入射角等于反射角”这样的光学定律以及更加高级的处理折射与粗糙表面反射的定律处理多次连续反射。一旦光线遇到光源更可能出现的是光线反射次数已经达到设定的限制,那么最终点的表面照明就通过上面的方法确定下来,并且经过多次反射发生的变化也可以估计在观察点看到的亮度。每个采样点、每个像素都要重复这个过程。在有些场合中每个交点可能生成多条光线。

    作为一种非常有效的方法,光线跟踪的处理速度很慢,但也在一些需要高真实感效果的场合下得到应用,例如电影制作、广告制作等。此外,简化的光线跟踪方法可以广泛应用于不需要高质量细节的场合。目前已经出现了一些处于原型阶段硬件加速的光线跟踪设备,在一些游戏演示中也有实时软件或者硬件光线跟踪的应用。

     

    2.3 图形交互

    l 几何约束 :几何约束可以用于对图形的方向、对齐方式等进行规定和标准。

    l 引力场 :

    引力场可以看作是一种定位约束,通过在特定点周围假想有一个区域,当光标中心落在这个区域内时,会自动地被直线上最近的一个点代替。就像一个质点进入直线周围的引力场,然后被吸引到这条直线上去一样。引力场的大小要适中,太小了不容易进入引力区,太大了线和线的引力区相交,光标在进入引力区相交部分有可能会被吸引到不希望选的线段上去,增大误接的概率。

    l 拖动 :要把一个对象移动到一个新的位置时,如果不是简单地用光标指定新位置的一个点,而是用光标移动时拖动着被移动的对象,会使用户感到更直观,并且可以使对象放置的位置更恰当。

    l 橡皮筋技术 :

    被拖动对象的形状和位置随着光标位置的不同而变化,是一个不断地进行画图—擦除— 画图的过程。

    ①从起点到光标中心点(x,y)处画图

    ②擦除起点到光标中心点(x,y)处的图形

    ③光标移动到新的位置:x=x+△x,y=y+△y

    ④转第①步,重复这个过程,直到按下确认键。

    l 操作柄技术 :

    可以用来对图形图像进行缩放、旋转、错切等几何变换。先选择要处理的图形对象,该图形对象的周围会出现操作柄,移动或者旋转操作柄就可以实现相应的变换。

     

    2.4几何计算

     

    三.计算机图形学著名公司

    展开全文
  • 关于计算机图形学的学习

    千次阅读 2015-05-15 08:35:11
    计算机图形学是用计算机来画东西的学科,数字图象处理是把外界获得的图象用计算机进行处理的学科。在法国,图形图象是一门课程。 如何学习计算机图形学呢?除了计算机图形学的基础知识以外,你还需要有以下的知识,...

    转自:http://blog.csdn.net/jiqiujia/article/details/17920645

     

    1. 引言
    计算机图形学是用计算机来画东西的学科,数字图象处理是把外界获得的图象用计算机进行处理的学科。在法国,图形图象是一门课程。
    如何学习计算机图形学呢?除了计算机图形学的基础知识以外,你还需要有以下的知识,你懂的越多,当然做的越好。
    * 英语, 你一定要把英语学好,如果你想学习计算机图形学的话,尽量看英文的书籍和资料
    * 数学, 计算机图形学里面的数学用的比较多,,我们可以列举一些常用的:
    高等数学,数值分析,微分几何,拓扑,概率, 插值理论,(偏)微分方程…
    * 物理, 如果你要进行基于物理的建模,一些物理理论是要学习的:
    力学(运动学,动力学,流体力学…),光学,有限元…
    * 编程语言: C或C++是计算机图形学最通用的‘普通话’,
    * 数据结构: 你需要数据结构来描述你的图形对象,除了通用的链表、树等数据结构外,图形学还有自己特殊的数据结构
    * 其他类别: 有的时候你需要其他学科的知识,根据你的需要去学习吧

    上面列举的不是你必须学习的东西,而是计算机图形学可能会用到的东西,一定要记住,不要指望通过一本教材就学会计算机图形学,它比你想象的要复杂的多。

    2. 图形学的问题
    每个学科都有自己学科的特定问题,图形学要解决的是如何画出图来,得到需要的效果,当然这是图形学最大的一个问题。

    在开始学习计算机图形学的时候,找一本简单的书看,对计算机图形学有个大概的认识,你就可以开始图形学之旅了:

    OpenGL Programming Guide: The Official Guide to Learning OpenGL,Version 1.4, Fourth Edition
    OpenGL SuperBible (3rd Edition)

    是比较好的学习计算机图形学的入门教材,在练中去学,一开始就去啃

    Foley的
    Computer Graphics: Principles and Practice, Second Edition inC
    不是好主意,会看的一头雾水,一本什么都讲的书的结果往往是什么都没讲清楚。
    当你把OpenGL的基本内容掌握之后,你对图形学就有了大概的了解了

    那么下面你可以来学习一下计算机图形学的数据结构和算法,下面的书比较适合
    Joseph O'Rourke 的Computational Geometry inC,书里面有C的源代码,讲述简单,清晰,适合程序员学习

    总的来说,计算机图形学涉及到2大部分:建模和渲染
    2.1建模

    你想画一个东西,首先要有它的几何模型,那么这个几何模型从什么地方来呢?下面的书很不错的:
    Gerald Farin 的Curves and Surfaces for CAGD: A Practical Guide
    这本书就有一点的难度了,呵呵,要努力看啊

    这本书算是CAGD(计算机辅助几何设计)的经典图书,CAGD方面的全貌,还有2本很好的讲述曲面的书Bezier和Nurbs的书

    Les A. Piegl, Wayne Tiller 的The Nurbs Book
    书里面有NURBS曲线、曲面的程序伪代码,很容易改成C的,书讲的通俗、易懂,但是你要有耐心看的:)

    曲线与曲面的数学
    这本书是法国人写的中文翻译版,里面还有Bezie本人写的序J,翻译的很不错的,看了你就掌握Bezier曲面技术了


    //另外一些你想知道的事情:其他的造型方式-开始
    注意:在后面会有这样的章节,标明
    //另外一些你想知道的事情:其他的造型方式-开始
    //另外一些你想知道的事情:其他的造型方式-结束
    里面是我认为的一些高级话题,跳过他们不影响你学习计算机图形学,但是要学好就要注意了,呵呵
    还有其他的一些造型技术,比如:
    隐式曲面(Implicit Surface)的造型:
    就是用函数形式为F( x ,y ,z ) =0的曲面进行造型,这样的造型技术适合描述动物器官一样的肉乎乎的东西,有2本书推荐大家
    Jules Bloomenthal编辑的Introduction to ImplicitSurfaces,是一本专著,讲述了ImplicitSurface建模型(Modeling),面片化(Polygonization),渲染(Rendering)的问题
    Luiz Velho 的 Implicit Objects Computer Graphics也是一本专著,讲述个更新的一些进展

    细分曲面(Subdivision Surface)造型
    当用NURBS做造型的时候,曲面拼接是复杂的问题,在动画的时候,可能产生撕裂或者褶皱,SubdivisionSurface用来解决这个问题
    Joe Warren的Subdivision Methods for Geometric Design: A ConstructiveApproach就是这方面的专著

    从实际物体中得到造型,现在的技术可以用三维扫描仪得到物体表面的点,然后根据这些点把物体的表面计算出来,称为重建(Reconstruction),因为这些技术之在文章中论述,所以我们省略对它的描述

    //另外一些你想知道的事情:其他的造型方式-结束


    下面还是一个高级话题:)

    //另外一些你想知道的事情:光有造型是不够的!-开始
    在你的几何模型做好之后,有一些问题需要对这个模型进一步处理,得到适合的模型,当面片很多的时候,或者模型很复杂的时候,需要对几何模型进行简化,才可以满足一些实时绘制的需要,这个技术叫做层次细节(LOD-Levelof Detail)。下面的书就是讲这个的:
    David Luebke编著的 Level of Detail for 3D Graphics
    //另外一些你想知道的事情:光有造型是不够的!-结束

    2.2渲染
    有了模型,怎么把这个几何模型画出来呢?这个步骤就是渲染啦
    如果你看了上面的OpenGL的书,那么你就知道一些渲染的知识了,但是别高兴的太早,OpenGL使用的是局部光照模型(LocalIllumination Model),不要被这个词吓住了

    Local illuminationModel指的是在做渲染的时候只考虑光源和物体之间的相互作用,不考虑物体和物体之间的影响,所以OpenGL不支持阴影,一个(半)透明物体的效果..,这些需要考虑物体之间的影响才可以实现。

    //另外一些你想知道的事情:OpenGL可以实现阴影-开始
    OpenGL本身不支持,但是通过一些方法可以实现的:),用Google搜索一下
    Shadow Volume, OpenGL就找到答案啦
    //另外一些你想知道的事情:OpenGL可以实现阴影-结束

    Global Illumination Model 这类模型考虑的就比较全啦。现在关于GlobalIllumination的技术有3大类,具体的技术就不在这里介绍了,如果想了解,可以联系我,大家一起讨论:

    光线追踪(Ray Tracing)
    关于Ray Tracing的好书有2本:

    Andrew Glassner 的An Introduction to Ray tracing
    Glasser是图形界的名人,这本书也是Ray Tracing的经典

    R. Keith Morley, Peter Shirley 的Realistic Ray Tracing, SecondEdition
    这本书第一版是伪代码,第二版是C代码。它的结构不是很清楚,虎头蛇尾的感觉。

    辐射度(Radiosity)
    关于Radiosity的好书有4本:
    Michael Cohen 的Radiosity and Realistic Image Synthesis ,Cohen获得SIGGRAPH 1998计算机图形学成就奖,他把Radiosity变成实际可用,现在Cohen在MSR图形http://research.microsoft.com/~cohen/CohenSmallBW2.jpg

    Francois X. Sillion的Radiosity and Global Illumination ,Sillion是法国人,他的主要研究方向是Radiosity,这本书写的很不错的,非常清晰

    Philip Dutre 的新书Advanced Global Illumination,看起来还不错,刚拿到手,还没看,呵呵,所以不好评价

    Ian Ashdown的Radiosity: A Programmer's Perspective
    有源代码的书啊!! 就凭这个,得给5*****

    Photon mapping
    这个我也不知道怎么翻译,呵呵。这个技术出现的比较晚,一本好书!
    Henrik Wann Jensen的Realistic Image Synthesis Using PhotonMapping
    Henrik Wann Jensen是Photon mapping技术的发明者

    3.3这些也是图形学吗? 图形和图象的区别模糊了:(
    除了上面讲的‘经典’的计算机图形学,还有下面的一些东西,它们也叫计算机图形学吗?是的!!!
    3.3.1非真实性图形学(Non-Photorealistic Graphics)
    真实性不是计算机图形学的唯一要求,比如:你给我画一个卡通效果的图出来,或者我要用计算机画水彩画怎么办?或者:把图象用文字拼出来怎么做?,解决这些问题要用到非真实性图形学,好书继续推荐!!!
    Bruce Gooch, Amy Ashurst Gooch的 Non-Photorealistic Rendering

    3.3.2体图形学(Volume Graphics)
    用CT机做很多切片(比如头骨),那么能通过这些切片得到3D的头骨吗?Volume Graphics就是解决这样的问题的
    Min Chen 编著的Volume Graphics

    上面的2个图形学技术就和图象的界限不明显了,实际上他们是图形图象的综合


    4 .还有其他的书吗?
    还有一些好书啊,呵呵,好书看不完的:),继续放送:

    Graphics Gems I ~ V,一大帮子人写的书,包括研究人员,程序员…
    有计算机图形学的各种数据结构,编程技巧

    Tomas Akenine-Moller 等人编著的Real-Time Rendering (2ndEdition)
    许多最新的计算机图形学进展

    David Ebert等人的Texturing & Modeling: A Procedural Approach,Third Edition
    讲述如何通过程序实现纹理、山、地形等图形学要素
    F. Kenton Musgrave号称分形狂(Fractal Mania)
    Ken Perlin就是Perlin噪声的发明者,用过3d软件的人对Perlin Noise不会陌生的

    关于图形学的特定对象,有特定的专题图书,
    Evan Pipho Focus On 3D Models,对于图形学的常用模型格式,进行了讲解
    Trent Polack的 Focus On 3D Terrain Programming ,讲地形的
    Donald H. House 的Cloth Modeling and Animation ,讲布料的
    Nik Lever的Real-time 3D Character Animation with Visual C++,讲角色动画的
    ……

    还有:)
    Richard Parent的 Computer Animation: Algorithms andTechniques,当然是讲动画的啦,呵呵。
    David H. Eberly的3D Game Engine Design : A Practical Approach toReal-Time Computer Graphics ,有代码的啊!呵呵:)

    最后,没事情的时候,看看下面的书吧
    Alan H. Watt, 3D Computer Graphics (3rd Edition)

    James D. Foley等人的 Computer Graphics: Principles and Practice inC (2nd Edition) ,这本圣经没事的时候再看吧,呵呵

    累了:( 不说了,上面的书差不多了,还有一些shader的书,我不了解,以后会补上的:)

    5.从哪里找到这些书啊?还有什么资源啊?
    我保证,上面的书在http://www.amazon.com/都可以买到 

     

    展开全文
  • 计算机图形学 第4版 中文版 [(美)赫恩,(美)巴克,(美)卡里瑟斯著 计算机图形学 Third Edition 英文
  • 计算机图形学 第4版 中文版 [(美)赫恩,(美)巴克,(美)卡里瑟斯著][电子工业出版社][2014.11][678页][13684300].pdf “免责声明:源代码仅仅用于内部学习,不得用于任何商业行为和破坏行为,如有侵权请及时...
  • 计算机图形学

    千次阅读 2017-08-10 16:33:44
    计算机图形学理解与使用 引言 很多搞Unity的同僚都不会看重计算机图形学的提升,因为大一点的公司都会有专业的人来负责这方面的工作,也就是公司的技术美术工程师,我认为,计算机图形学虽不是Unity工程师的必备知识,...

    计算机图形学理解与使用

    很多搞Unity的同僚都不会看重计算机图形学的提升,因为大一点的公司都会有专业的人来负责这方面的工作,也就是公司的技术美术工程师,我认为,计算机图形学虽不是Unity工程师的必备知识,但是能够很好的理解Shader确实高薪的充分必要条件.既然是高薪必备的条件,那么就应该去了解并熟悉它,不得不说的是Shader确实是比较难的地方,但是我们应该做到知其然,知其所以然,作为一个Unity工程师,我们不需要达到专业水平,只需要达到看到了Shader能够看懂,并且想要什么效果知道该怎么去修改技术美术给我们的Shader的代码,在应用的过程中不断的去理解,做到越来越熟练,运用的越来越熟练!!!

    • 我们进入正题
    
    1.计算机图形学(Shader) 作用是平衡CPU 和 GPU
    2.OpenGL渲染流程:
        1).模型文件
            - Fbx 这个最为常用
            - obj
            - dae
            - 手机上:一般游戏效果保持流畅,同屏顶点个数应该少于2万个,最大承载量5万个
            - 一般我们会把主角色模型的顶点数控制在2000-3000NPC:700-1000    1).CPU:
            - SkinnedMeshRenderer 蒙皮骨骼 所谓蒙皮骨骼就是负责周围的若干顶点的运动
            - MeshRenderer        关节骨骼 所谓关节骨骼就是有缝隙的不是控制周围顶点
            - 这两个MeshRenderer的作用:将顶点,法线,切线等信息传递给GPU
        2).GPU: 
            - 渲染管线/渲染管道
              - 顶点着色器 --> 光栅化 --> 片段着色器 --> alpha测试 --> 模板测试 --> 深度测试 --> Blend -->
                Gbufffer --> front buffer --> frame buffer
            - 顶点着色器:
              - 计算顶点的颜色
                像素 : RGBA 4通道 RGBA8888 --> 每个像素占8bit  RGBA444 --> 每个像素占4bit
              - 坐标系转换
                将 顶点的 物体坐标系 转换为 相机的 观察坐标系
            - 光栅化
              - 将 顶点 转变成 像素 两顶点间利用差值计算
            - 片段着色器
              - 纹理采样
                - UV坐标 按照等比例缩放
              - 跟灯光作用
                - 材质球
                - Shader
                  - 作用:拿到材质球的属性 然后和灯光进行计算
                  - Fixed Shader: 相当于OpenGl里面的Shader1.0
                  - Vertex Shader: 相当于OpenGL里面的Shader2.0
                  - Surface Shader: 相当于OpenGL里面的Shader2.0封装起来了
                  - Shader语言: OpenGL --> sgi公司 --> 跨平台
                                DX  --> 微软公司 --> 只能在windows运行
                                CG  --> 英伟达公司 --> 跨平台 ---> 我们都是用CG语言来开发的
            - alpha测试 --> 模板测试 --> 深度测试
              - 三大测试的作用: 检测符合条件的 像素 通过  不符合条件的像素 去掉
            - Blend
              - 当前渲染的 像素 跟 GBufffer
            - GBuffer: RGBA 深度 模板
            - Front Buffer: Float[1920*1080] 像素块的数组 
            - Frame Buffer: Front Buffer被放到显示器显示出来 两者就是不断的来回交换
            //而且我们一定要学会看官方文档:Help --> Unity Manual --> 找到Shader

    接下来我们进行Shader的编写
    这里写图片描述
    1.创建Shader
    这里写图片描述
    2.创建一个材质球

    • 材质球的Shader选择你刚刚创建的Shader

    3.Shader的结构

    Shader "MyShader/Shader001"
    {
        Properties
        {       
        }
        SubShader
        {
            Pass 
            {
            }
            Pass
            {
            }
        }
        SubShader
        {
            Pass
            {
            }
        }
        SubShader
        {
            Pass
            {
            }
        }
        Fallback "diffuse"
    }
    //Shader "" "中间写路径/路径/.../名称"
    //Pass 没出现一次 就渲染一次
    //SubShader 表示显卡 从上至下 渲染由高到低  找到显卡能正常执行的SubShader
    //如果所有的SubShader都找不到合适的显卡  就执行 Fallback
    //具体的语法参考博主的其他博文,有详细的介绍
    

    结束语:后续还会更新Shader的详细知识点解析,人如逆水行舟,不进则退,所以我觉得身为一名程序员,我们就需要不断的去学习新的或者有用的技术来充实自己;不要因为自己的懒惰,放弃自己对技术的追求,只有不断的去追求新的技术,才能更好的充实自己,才能走的更加长远!希望可以帮助到有上进心的你,希望可以激励到正在走向颓废的你,希望可以得到认同博主想法的你!

    展开全文
  • 计算机图形学入门

    万次阅读 2018-01-13 17:09:18
    这几天需要用OpenGL做一个小程序,之前没有计算机图形学和OpenGL的基础,以为很简单(事实上确实不难),但是在自己摸索的过程中却走了一些弯路。现在稍微总结一下。 1 坐标系统 从定义一个零件的几何外形到图形...

    这几天需要用OpenGL做一个小程序,之前没有计算机图形学和OpenGL的基础,以为很简单(事实上确实不难),但是在自己摸索的过程中却走了一些弯路。现在稍微总结一下。

    1 坐标系统

    从定义一个零件的几何外形到图形设备上生成相应的图形,需要建立相应的坐标系统来描述,并通过坐标变换来实现图形的表达。有几个坐标系需要了解一下。

    1. 1 世界坐标系(world coordinate system)

    或者把它叫做场景坐标系吧,是一个三维坐标系,多用右手直角坐标系,用来描述物体所处的场景空间。坐标原点在屏幕中心,Z轴垂直于屏幕指向屏幕外,y轴竖直向上,x轴水平向右。

    1.2 物体本地坐标

    用来定义某个实体本身的坐标系。例如,stl文件中包含了构成实体模型的三角面片的顶点坐标,这里的顶点坐标值就是在物体本地坐标系下的坐标值。

    1.3 设备坐标系(device coordinate system)

    也称为物理坐标系,是一个二维坐标系,与图形输出设备相关联,用来表示三维模型投影后生成的二维图形显示在图形输出器(例如显示器)的坐标系。单位是象素(对于显示器来说)。

    1.4 规格化设备坐标系(normalized device coordinate system)

    这是一个人为规定的假象设备坐标系,与设备无关,目的是为了方便将图形软件应用到不同分辨率的设备。该坐标系的坐标轴方向以及原点与设备坐标系相同,但是它最大的坐标范围是1.
    首先将输出图形转换为规格化设备坐标系,当转换到具体的不同输出设备时,只需要将图形的规格化坐标系再乘以相应设备分辨率即可,这样使图形软件与图形设备分离开来,增加了图形软件的可移植性。

    2 投影(projection)和视景体(viewing volume)

    我们在3D坐标系统定义模型,但是我们在屏幕上显示模型时只能使用二维坐标系,从三维坐标转换到二维坐标,这里就需要用到投影。我们可以用正投影(orthographic projection)或者透视投影(perspective projection)。关于这两个投影的性质就不讲了,网上很多。

    2.1 视景体

    我个人觉得这是很重要的一个概念,简单地来说,视景体就是三维空间中的一个封闭区域。在这个区域内的模型才能被显示在屏幕上,在这个区域外的部分会被裁剪掉,不会显示在屏幕上。视景体的大小范围是可以设置的,具体方法就是用上面的两种投影。

    2.2 通过正投影设置的视景体

    正投影设置的视景体是一个长方体,我们通过设置视景体xyz轴最大最小坐标来定义它。在OpenGL中可以用
    GLFrustum::SetOrthographic(GLfloat xMin,GLfloat xMax,GLfloat yMin,GLfloat yMax,GLfloat zMin,GLfloat zMax)来定义,也可以用glOrtho(left, right, bottom, top, near, far)来定义。
    在正投影中,观察者的位置假定在z轴正无穷处。

    正投影实景体的形状
    图片来源于网络,原网址是http://jerome.jouvie.free.fr/opengl-tutorials/Lesson1.php#ClippingPlane

    2.3 通过透视投影设置的视景体

    透视投影设置的视景体是一个平截头体(frustum),它的形状是一个金字塔被截去塔尖之后的形状。

    frustum的形状及参数
    frustum在坐标系中的位置

    图片来源于网络,原网址是http://jerome.jouvie.free.fr/opengl-tutorials/Lesson1.php#ClippingPlane
    在OpenGL中我们可以用GLFrustum::setPerspective(float fFov,float fAspect, float fNear,float fFar)或者gluPerspective(fovy, aspect, near, far)来定义。
    在透视投影中,观察者的位置默认在坐标原点(0,0,0),从z轴正向看向z轴负向。为了我们的模型落在视景体内,我们还需要经过一些变换。

    3 变换

    3.1 点的齐次坐标表示

    齐次坐标是将一个n维空间的点用n+1维的向量来表示,即附加了一个坐标。也就是说,我们使用一个四维行向量(或者说1X4的矩阵)[x,y,z,w]来表示三维空间中的一个点(x,y,z)。采用齐次坐标系的优点:(1)为几何图形的二维、三维甚至更高维空间的坐标变换提供统一的矩阵运算方法。(2)处理无穷远点比较方便。

    3.2 图形变换

    变换矩阵
    为了将一个模型放到一个场景中,摆在某一个位置,朝着某个方向,这就要将模型在本地坐标系下的值转换到场景坐标系下的值,我们用矩阵运算来实现这一点。一个变换矩阵表示了场景空间中的一个特定位置,以及相对于视觉坐标系的3个轴上的方向。
    一个4X4变换矩阵的第一个列向量表示本地坐标系x轴在场景坐标系中的方向,第二个列向量表示本地坐标系y轴在场景坐标系中的方向,第三个表示z轴在场景坐标系中的方向,第四列表示本地坐标系的原点在场景坐标系下的位置。也就是说,通过变换矩阵运算,我们把本地坐标系的原点放在了场景坐标系中的一个点,把本地坐标系的xyz轴对准了某个方向,这样就在场景中摆放好了我们的模型。
    拿二维举例来说:
    这里写图片描述
    上面这个矩阵将物体坐标系原点放到场景坐标系的(2,2)处,物体坐标系的x轴朝着(1,0)方向,y轴朝着(0,-1)方向。物体本地坐标系下的(1,1)点在场景坐标系下的坐标点为(3,1),画个坐标图的话一目了然。

    展开全文
  • 计算机图形学-初入门(小作品)

    千次阅读 2017-02-21 23:22:21
    环境: OpenGL实现厂商的名字:Intel 渲染器标识符:Intel(R) HD Graphics 4600 OpenGL实现的版本号:4.3.0 - Build 10.18.14.4080 ...参考书籍:《交互式计算机图形学:基于OpenGL的自顶向下方法》 有
  • 步骤: 1.初始化: 假设有样本集为S,通过主成分分析,求取第一主成分直线,并窃取质心两边分别长度为3/2方差的长度,并计算每个点到直线的投影,以及距离。初始Voronoi区域也就只有一个,包括了所有点集。...
  • 三者之间既有区别,又有联系,不确切的描述:计算机图形学≈画图计算机视觉≈看图数字图像处理≈看图前沐浴更衣焚香做好各种仪式,然后再看图计算机图形学(Computer Graphics)讲的是图形,也就是图形的构造方式,...
  • 搞了CV一段时间,仍时不时因为概念问题而困惑,搞不清楚计算机视觉(Computer Vision),计算机图形学(Computer Graphics)和图像处理(Image Processing)的区别和联系。在知乎上看到了一个帖子,觉得解释的很好,结合...
  • 除了GPU设计者,其余从事图形学行业的人大多与游戏相关,因为需要处理游戏的图形渲染引擎或效率性能优化而研究图形学。关于图形学是什么、解决的是什么问题,我能够给出的回答是:图形学的任务是将数学公式描述的...
  • 1.计算机图形学 计算机图形学是给定关于景象结构、表面反射特性、光源配置及相机模型的信息,生成图像,实现的是从模型到图像的变换。  例如使用opengl进行渲染生成三维场景,这前提是我们已经给定了图形绘制,纹理...
  • 计算机图形学简单介绍

    千次阅读 2017-11-08 21:15:34
    谈到计算机图形学:为啥叫计算机+ 图形学 因为我们是通过计算机把现实中的图形或者想像的图形呈现在显示器上的一个过程,因此简称计算机图形学。那么图形学到达是做什么的呢?图形学研究如果在计算机中表示图形以及...
  • 计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。 简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行...
  • 计算机图形学——三角形网格

    千次阅读 2018-09-06 14:00:51
    计算机图形学是基于表面的(surface-based)   凸多边形是指多边形任何两个顶点连接总是在多边形内。   网格化算法: 拓扑结构: 如何简化网格? 细分 网格化简:  ...
  • 本文尽量避免给它做严格的定义,但是通常来说,计算机图形学是数字图象处理的逆过程,这只是一个不确切的定义,后面我们会看到,实际上,计算机图形学、数字图象处理和计算机视觉在很多地方的区别不是非常清晰的,...
  • http://www.icourse163.org/learn/CAU-45006?tid=1001746004#/learn/announce感谢中国农大 赵明老师的分享~现在我要为我自己走向游戏编程打下基石~1 计算机图形学概论1.1 计算机图形学课程简介《计算机图形学》是...
  • 计算机图形学是给定关于景象结构、表面反射特性、光源配置及相机模型的信息,生成图像。  而计算机视觉是给定图象,推断景象特性实现的是从模型到图像的变换,也就是说从图象数据提取信息,包括景象的三维结构,...
1 2 3 4 5 ... 20
收藏数 128,916
精华内容 51,566
关键字:

计算机图形学