光栅算法、三维观察、隐藏面消除、光照、纹理、绘制等算法和理论,并介绍可视感知、计算机动画、基于图像的绘制、可视化以及构建交互式图形应用等
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. http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-837-computer-graphics-fall-2003/
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
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 模型,异步编程变成了欢乐之旅。