计算机图形学

时间:2023-01-09 18:22:49


图形学的光栅算法、三维观察、隐藏面消除、光照、纹理、绘制等算法和理论,并介绍可视感知、计算机动画、基于图像的绘制、可视化以及构建交互式图形应用等

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-837-computer-graphics-fall-2003/
line generators, affine transformations, line and polygon clipping, splines, interactive techniques, perspective projection, solid modeling, hidden surface algorithms, lighting models, shading, and animation. Substantial programming experience is required. 

Course Overview

    Ray Tracing光线跟踪
        Course overview
        Ray casting overview 眼睛的視野範圍內發出射線,射到物體就把他畫出來,沒射到的就不畫,可以把ray casting想做ray tracing的子集
ray casting是指用eye來射出ray,射到的物體的那個點,就是我們eye所看到的顏色
ray tracing是光線的ray射到物體上然後物體會反射或折射出另外一條ray到另一個物體上,就這樣一直無窮回圈下去,基本上要算ray tracing是一件很復雜的事情,
        Ray casting - primitive intersections
        Transformation
        Hierarchy
        Local illumination and shading
        Recursive ray tracing
        Acceleration structures

     Animation, Modeling, and Image-based Rendering (IBR)
        Curves and surfaces
        Animation with keyframes
        Animation with physics and PDE's
        Image-based rendering
    Pipeline
        Pipeline basics
        Perspective and transformations
        Line rasterization
        Polygon rasterization
        Clipping
        Visibility
    Advanced Topics
        Rendering equation and Monte Carlo methods
        Radiosity
        Colors
        Antialiasing
        Texture mapping
        Procedural textures
        Shadows
        Graphics hardware

http://www.cnblogs.com/fengyuheliu/archive/2011/08/28/2155627.html
3D数据场的可视化技术,可以分为面绘制(surface rendering)和体绘制(volume rendering)。

面绘制,是先抽取出3D数据场里的某个等值面,这个等值面的表示形式,是一个元素为三角面片的数组。这样,接下来用OpenGL/D3D的API函数就可以画出结果了。面绘制常用的方法有MC、MT和dividing cubes等。所以,可以说,面绘制是从原始的3D模型中抽取出我们感兴趣的某个网格模型,而忽略了其他数据。

体绘制,或者叫直接体绘制(DVR, Direct Volume Rendering),就是直接对原始的3D模型进行处理,利用了整个数据场信息。体绘制结果,不单单可以看到表面,还可以透过表面(赋予一定的透明度)看到里面。体绘制的*度大得多,绘制结果也丰富得多,但是需要处理海量的体数据,不能直接使用图形学API,速度慢得多。其算法族有光线投射法(ray casting)、溅射法(splatting)、错切—变形法(shear-warp)、体元投射法(cell projection)和基于纹理映射(texture mapping)的方法。这样说,对于外行来说,可能还不够清楚,且看下文吧。

体绘制的加速技术可以分为:软件加速和硬件加速。

软件加速技术有提前光线终止(early ray termination)、空间跳跃(empty space leaping)和延迟渲染(deferred shading)等。这里,空间跳跃的实现,需要对三维数据场进行数据结构管理,如八叉树、二叉树和k-d树,类似于场景管理技术。
有书名为“Real-Time Volume Graphics”,可译为“实时体图形学”。这本书非常经典!记得年初我通过馆际互借从上海图书馆借来捧在手上时,如获至宝!——寻书的过程,也使得我对“诺大一个中国,却无书可读”深有感触。我忘记了“体图形学”是自己的译法还是在哪里见过,我们姑且用这个名称吧。看书中第一章开头:

“This book covers two seemingly very different applications of volume graphics: on the one hand, ‘special effects’ and realistic rendering of clouds, smoke, fire, and similar effects for computer games, movie production, and so forth; on the other hand, the scientific visualization of volumetric data.”

“…both fields rely on the same underlying physical models and therefore use identical, or at least very similar, rendering techniques.”

“Therefore, volume graphics targets the same goal as computer graphics in general: the simulation of light propagation in order to produce images as recorded by a virtual camera.”

到这里,你大概知道“3D模型不一样,那么渲染技术也不一样吗?”的答案了吧。如果还有疑问,又不想花太多时间,可以到“Real-Time Volume Graphics”这本书的主页上下载chapter 2的PPT看看。

F#-inspired await/async 模型,异步编程变成了欢乐之旅。

Lecture Notes

LEC # TOPICS
1

Course Overview ( PDF - 1.1MB)

C++ Tutorial (PDF)

2 Ray Casting 1: Generation and Intersection (PDF - 1.2 MB)
3 Ray Casting 2: More Intersection (PDF - 1.7 MB)
4 Transformations 1: Translation, Rotation and Scale (PDF - 1.0 MB)
5

Transformations 2: In Modeling (PDF - 1.7 MB)

Linear Algebra Tutorial (PDF)

6 Ray Tracing (PDF - 2.4 MB)
7 Local Illumination (PDF)
8 Acceleration Data Structures (PDF - 3.9 MB)
9 Curves and Surfaces (PDF - 3.2 MB)
10 Animation 1: Interpolation and Kinematics (PDF)
11 Animation 2: Orientation and Quaternions (PDF)
12 Animation 3: Dynamics (PDF - 1.7 MB)
13 Graphics Pipeline 1: Perspective Transformations
(PDF - 1.1 MB)
14 Graphics Pipeline 2: Line Clipping and Rasterization (PDF)
15 Graphics Pipeline 3: Polygon Rasterization (PDF)
16 Graphics Pipeline 4: Polygon Clipping
(PDF - 3.1 MB)
17 Shadows (PDF - 3.1 MB)
18 Global Illumination: Radiosity (PDF - 2.7 MB)
19 Monte Carlo Ray Tracing (PDF - 3.4 MB)
20 Color 1: Color Vision and Color Spaces (PDF - 2.3 MB) (Courtesy of Victor Ostromoukhov. Used with permission.)
21 Color 2: Color Effects and Production (PDF - 2.6 MB) (Courtesy of Victor Ostromoukhov. Used with permission.)
22 Texture Mapping (PDF - 3.6 MB)
23 Sampling, Aliasing and MIP Mapping
(PDF - 2.0 MB)

    1:顶点缓冲区和索引缓冲区
    2:像素点光源(每一个像素分别计算,而不是在顶点计算完插值)
    3:CubeMap+多层贴图混合
    4:渲染到贴图(动态生成CubeMap)

pixel shading
graphics processing unit

Vertex shaders describe the traits (position, texture coordinates, colors, etc.) of a vertex, while pixel shaders describe the traits (color, z-depth and alpha value) of a pixel.

Fixed Function Pipeline (FFP)

Shaders drive the programmable graphics pipeline, and define the final surface properties of an object.  

渲染管线,即pipeline

shader有两种,
一种是顶点级的,称为 vertex shader(OpenGL称为vertex program),取代固定渲染管线中的变换和光照部分,程序员可以自己控制顶点变换、光照等。硬件中处理顶点shader的单元叫vertex shader processors(顶点处理单元)。例如,X1600芯片中之中有5个vertex shader processors。
一种是像素级的,称为pixel shader(OpenGL称为fragment program),取代固定渲染管线中的光栅化部分,程序员可以自己控制像素颜色和纹理采样等。硬件中处理像素shader的单元叫pixel shader processors(像素处理单元)。例如,X1600芯片中之中有12个vertex shader processors。