计算机图形学中对于一个真实三维物体的表示有很多方式,比如点云,mesh,体素,曲线等;这也影响了在绘制三维物体时对绘制基元的选择,下面是本人总结的一些绘制技术的分类,希望对大家有所帮助。
1. 精确的几何模型
2. 精致的纹理贴图
3. 合理真实的光照
局部光照模型早期的光照模型是基于经验的,它只能反映光源直接照射的情况,这种光照模型为局部光照模型;
局部光照模型需要考虑的因素:环境光,漫反射,高光与镜面反射,光的衰减,
产生颜色(RGB),多光源,硬阴影,软阴影,体积阴影
阴影分为动态阴影算法和静态阴影算法(区别在于光源是否运动)
阴影生成技术,目前普遍采用的一般有三种:Planar Shadow、Shadow Mapping和Shadow Volume,前者类似投影,计算最简单,缺点只能绘制抛射在平面上的阴影;Shadow mapping利用站在光源处所沿光源法线看去所生成的深度图来检测场景中的体象素是否处于阴影中,缺点是光源与物体位置相对固定、且在极端情况下计算精度差,不太适合精确到象素的动态光阴场合;Shadow Volume是目前最适合精确表现动态光阴场景的技术,适用性最广,其典型的适用范例便是Doom 3,不足在于阴影体积引入了额外的顶点和面,加大了存储和处理强度,同时渲染出的阴影比较硬,如果要实现软阴影,仍需其他技术配合
全局光照模型比较精确,它通过模拟物体之间光照的相互作用,以求达到令人满意的光照效果。
全局光照模型入射光的构成:光源直接照射,其他物体的反射光,透射光。
单个纹理的一般纹理管线:
l alpha贴图:来实现图像的透明、半透明的效果
l 光照贴图
l 光泽贴图:用来模拟物体非均匀的表面光泽
l 环境贴图:
l 凹凸贴图:基本思想是通过改变表面法线,而不是使用纹理来改变光照方程中的颜色分量。
过程性纹理主要用于模拟自然界中常见的Marble,Stone,Wood,Cloud等纹理,大多数的过程纹理都是基于某类噪声函数。
3D纹理不再是一个二维平面图像,它是一个有体积的纹理,可以看作是各种不同的立方体材料,看成几十、几百层的2D纹理重叠在一起,每层都是简单的2D纹理。3D纹理中的每个点在纹理内部空间有三维的相对坐标。
多通路纹理贴图:在计算机图形学理论中,需要对所有光照方程因子进行快速计算,同时生成一个颜色样本。实际上,可以在不同的通路中对光照因子进行计算,每个通路对前一个结果进行修改。
适合实时应用场合,用图像表示一个物体的最大好处就是绘制两与所要绘制的像素数成正比,与本身模型无关。
1. 基于实景图像,所构造的虚拟环境逼真度高;
2. 场景的处理时间与场景的复杂度无关,易于实现实时交互;
3. 缺乏统一的空间坐标体系;
4. 难以实现任意方式的空间漫游与交互。
公告板:很多特殊效果可以将图像绘制在朝向视点的多边形表面上,这种观察方向来确定多边形方向的技术叫做公告板技术,其中的多边形为公告板。
根据不同的平面法线朝向,公告板可分为几类:
Ø 朝向视平面的公告板:
Ø 朝向视点的公告板;
Ø 轴对称公告板。
精灵 : 是最简单的IBR单元,是一幅可以在屏幕上移动的图像;如果对精灵纹理加上一个深度值,则叫做深度精灵。
替代技术:其实也是一种公告板技术。
反走样技术 :图形边界的非连续状态的失真现象成为走样(锯齿),而反走样就是为了避免这种失真。
管线的终端是光栅操作,负责深度和模版缓存的读写,比较和颜色缓存的读写,以及alpha混合和测试。光栅化中许多的负载都加重了帧缓冲区带宽的负担。在测试过程中,可以通过改变颜色缓冲的位深,或深度缓冲的位深,或者都改变来检测是否会影响到帧率。
可视化的对象一般是指在空间上离散的3D数据
[1] 均匀结构化数据:在x,y,z三个方向上,网格点之间的距离均相等。
[2] 规则网格结构化数据:分布在长方体组成的3D网格上,即在x,y,z三个方向上,网格点之间的距离互不相等,但在同一个方向上相等。
[3] 矩阵网格结构化数据:分布在由长方体组成的3D网格点上,长方体的大小可以各不相同,无规则可循。
[4] 不规则网格结构化数据:逻辑上仍被组织成3D数组,但在空间位置上无规律可循。
a) 面绘制的算法有立方块法(Cuberille)、移动立方体法(Marching Cubes)和分解立方体法(Diving Cubes)。
基本思想:将体数据分为多张平行的二维切片数据并分别处理。
面绘制将感兴趣的部分以等值面的方式抽取后,可以利用真实感技术生成高质量图像,使研究人员可以方便地进行观察和分析。该方法每次只能显示一个值的等值面,且需要借助于几何图元表示,不能反映整体数据场中各种因素的相互关系。面绘制不能保留原有体数据的一些物理属性,舍弃了物体内部的大量有用信息。
b) 体绘制不需要进行几何图元的提取过程来恢复体数据中的物体表面,而是直接由3D体数据产生屏幕上的2D图像。该算法能产生3D体数据的整体图像,包括每一个细节,并具有质量高、便于并行处理的优点。
体绘制将3D空间的体数据场直接转换为2D图像而不生成中间几何图元。体数据场中离散的采样点原本是不具有色彩属性的,它的颜色值是在物质分类的基础上人为赋予的,因此是伪彩色的。
体绘制要实现的功能:在重采样的基础上,计算全部采样点对屏幕像素的贡献,也就是每一个像素的光强值I(intensity)。在彩色图像中,R、G、B三个分量的I值需要分别计算,为了实现这一功能,需要给出体数据的光学模型,用它来描述3D数据是如何产生、反射、阻挡以及散射光线,从而计算出全部采样点对屏幕像素的贡献
c) 体绘制的典型算法:
1. 直接体绘制算法:光线投射体绘制算法,纹理映射体绘制算法,抛雪球算法,错切-变形体绘制算法。
2. 变换域体绘制:傅立叶体绘制算法、压缩域体绘制,小波域体绘制,
直接体绘制算法都是在空间域对体数据直接采样,变换域首先将体数据从空域变换到另外的域,例如压缩域、频域或小波域,然后直接在这些变换后的域中进行采样混合。工作流程:
模型---点采样---采样点表示、存储-----不可见点剔除----可见点延拓----光照、纹理、阴影----表面重构----图形
主要算法:
² 图像空间的点绘制算法:surfel(面元),表面足迹法(surface splatting)
² 物理空间的点绘制算法:
Qsplat使用一个树状层次包围球数据结构存储数据,树中每个结点包含:球的位置和半径、每点处的法向量、法锥面的宽度、颜色值。