计算机图形学笔记 || 真实感图形

一、颜色模型

RGB(显示器的物理模型)、CMYK(用于印刷)、HSV(色调,饱和度,明度)

二、简单光照模型

光照模型是根据光学物理有关定律,计算在特定光源照射下,物体表面上一点投向视点的光强。光线投射到物体表面时,可能被物体吸收、反射、透射(折射)。分为局部光照模型(简单光照模型):只考虑光源的直接照射;和全局光照模型:除了以上因素,还考虑环境对物体表面的影响。

简单光照模型假定:光源为点光源;物体是不透明物体;只考虑反射。分为环境光模型、漫反射光模型和镜面反射光模型。简单光照模型表示为:I=I_{e}+I_{d}+I_{s}

材质模型:物体材质指物体表面对光的吸收、反射和透射的性能,由环境色、漫反射色、镜面反射色等分量组成。

环境光模型:环境光是环境中其它物体散射到物体表面后再反射出来的光。在空间中近似均匀分布,I_{a},环境光反射率K_{a},反射光强可以表示为I_{e}=K_{a}\cdot I_{a},0.0\leq K_{a}\leq 1.0

漫反射光模型:漫反射光是从一点照射,均匀地向各个方向散射的光,如粉笔等粗糙物体表面对光的反射。漫反射光强I_{d}表示为

I_{d}=K_{d}\cdot I_{p}\cdot cos\theta ,0.0\leq \theta \leq \frac{\pi }{2},0.0\leq K_{d}\leq 1.0I_{p}是入射光光强,K_{d}是材质的漫反射率,\theta是入射角。Lambert余弦定理:一个理想漫反射体表面上反射出的漫反射光强同入射光与物体表面法线之间夹角的余弦成正比。

镜面反射光模型:只朝一个方向反射的光,有很强的方向性,遵守反射定律。镜面反射光光强:I_{s}=K_{s}\cdot I_{p}\cdot cos^{n}\alpha ,0.0\leq K_{s}\leq 1.0,0.0\leq \alpha \leq \frac{\pi }{2},I_{p}为入射光光强,K_{s}为材质的镜面反射率。

三、光滑着色

直线段的光滑着色:

Gouraud明暗处理

主要思想:先计算物体表面多边形各顶点的平均法矢量,然后调用简单光照模型计算各顶点的光强,多边形内各点光强通过对多边形顶点光强的双线性插值得到。

优点:算法简单,计算量小;

缺点:马赫带效应并未完全消除;高光区域明显大于Phong明暗处理生成的高光区域。

Phong明暗处理

主要思想:先计算多边形网格的每个顶点的平均法矢量,然后使用双线性插值计算多边形内部各点的法矢量,最后才使用多边形网格上各点的法矢量调用简单光照模型计算其光强。

四、纹理映射(Texture mapping)

将纹理空间坐标(u,v)映射为物体空间坐标(x,y,z),再进一步映射为屏幕图像空间二维物体表面坐标(x,y)的过程。

颜色纹理映射的两种实现方法:(1)直接用纹理的颜色替代物体表面的颜色;(2)纹理数据参加光照计算。

颜色纹理

通过颜色变化表现出来的表面细节,一般采用物体表面的参数化方法确定纹理坐标。

函数纹理

纹理一般定义在单位正方形区域(0\leq u\leq 10\leq v \leq 1),称为纹理空间。

 

国际象棋棋盘纹理函数g\left ( u,v \right )=\left\{\begin{matrix} a \; \; \left \lfloor u\times 8 \right \rfloor+\left \lfloor v \times 8 \right \rfloor\\ b \; \; \left \lfloor u\times 8 \right \rfloor+\left \lfloor v \times 8 \right \rfloor \end{matrix}\right.,上为偶数,下为奇数,0< a< b< 1\left \lfloor x \right \rfloor表示不大于x的最大整数。

 

粗布纹理函数f\left ( u,v \right )=A\left ( cos\left ( pu \right )+cos\left ( qu \right ) \right ),A为[0,1]上的随机变量,p,q为频率系数。

 

立方体表面纹理映射:变换矩阵为\left ( x,y,z \right )=\left ( u,v,1 \right )\cdot \begin{bmatrix} A & D & G\\ B & E & H\\ C & F & I \end{bmatrix},计算参数,代入透视变换公式。

 

\left\{\begin{matrix} P_{0}\cdot x=C\\ P_{0}\cdot y=F\\ P_{0}\cdot z=I \end{matrix}\right.,\left\{\begin{matrix} P_{1}\cdot x=A+C\\ P_{1}\cdot y=D+F\\ P_{1}\cdot z=G+I \end{matrix}\right.,\left\{\begin{matrix} P_{2}\cdot x=A+B+C\\ P_{2}\cdot y=D+E+F\\ P_{2}\cdot z=G+H+I \end{matrix}\right.,P=\left ( P_{1}-P_{0} \right )u+\left ( P_{2}-P_{1} \right )v+P_{0}

 

圆柱面纹理映射\left\{\begin{matrix} x=rcos\left ( 2\pi u \right )\\ y=hv\\ z=rsin\left ( 2\pi u \right ) \end{matrix}\right.,0\leq u\leq 1,0\leq v\leq 1

 

圆锥面纹理映射:参数方程为\left\{\begin{matrix} x=\left ( 1-\frac{y}{h} \right )rcos\theta \\ y=h\varphi \\ z=\left ( 1-\frac{y}{h} \right )rsin\theta \end{matrix}\right.,0\leq \theta \leq 2\pi,0\leq \varphi \leq 1\left ( u,v \right )=\left ( \theta /2\pi,\varphi \right )

 

uv化表示为\left\{\begin{matrix} x=\left ( 1-\frac{y}{h} \right )rcos\left ( 2\pi u \right )\\ y=hv\\ z=\left ( 1-\frac{y}{h} \right )rsin\left ( 2\pi v \right ) \end{matrix}\right.,0\leq u\leq 1,0\leq v\leq 1

 

球面纹理映射:参数方程为\left\{\begin{matrix} x=rsin\alpha sin\beta \\ y=rcos\alpha \\ z=rsin\alpha cos\beta \end{matrix}\right.,0\leq \alpha \leq \pi ,0\leq \beta \leq 2\pi\left ( u,v \right )=\left (\beta /2\pi,\alpha /\pi \right )

 

uv化表示为\left\{\begin{matrix} x=rsin\left ( \pi v \right ) sin\left ( 2\pi u \right ) \\ y=rcos\left ( \pi v \right )\\ z=rsin\left ( \pi v \right ) cos\left ( 2\pi u \right ) \end{matrix}\right.,0\leq u \leq 1 ,0\leq v \leq 1

 

圆环面纹理映射:参数方程为\left\{\begin{matrix} x=\left ( r_{1}+r_{2}sin\beta \right )sin\alpha \\ y=r_{2}cos\beta \\ z=\left ( r_{1}+r_{2}sin\beta \right )cos\alpha\end{matrix}\right.,0\leq \alpha \leq 2\pi ,0\leq \beta \leq 2\pi\left ( u,v \right )=\left (\beta /2\pi,\alpha /2\pi \right )

 

uv化表示为\left\{\begin{matrix} x=\left ( r_{1}+r_{2}sin\left ( 2\pi u \right ) \right ) sin\left ( 2\pi v \right ) \\ y=r_{2}cos\left ( 2\pi u \right )\\ z=\left ( r_{1}+r_{2}sin\left ( 2\pi u \right ) \right )cos\left ( 2\pi v \right ) \end{matrix}\right.,0\leq u \leq 1 ,0\leq v \leq 1

 

图像纹理

图像纹理映射需要建立物体表面上每一采样点与已知图像上各点(纹素,texel)的对应关系,取图像上点的颜色值作为物体表面上采样点的颜色值,然后采用光照模型计算该点光强。

对于立方体,使用6幅图像纹理,一般采用绑定到表面的方式实现。

三维纹理

假设在三维物体空间中,物体上的每一个点P\left ( x,y,z \right )均有一个纹理值t\left ( x,y,z \right ),其值由纹理函数惟一确定,那么对于物体上的空间点,就可以映射到一个定义了纹理函数的三维空间上了。

1985年,Peachey用简单的规则三维纹理函数首次成功模拟了木制品的纹理效果。扰动、扭曲、倾斜。

CRGB CZBuffer::ReadWoodTexture(CP3 t)
{
    double Radius,Angle;
    int Tex;
    Radius=sqrt(t.x*t.x+t.z*t.z);
    if(0==t.z)
        Angle=PI/2;
    else
        Angle=atan(t.x/t.z);
    Radius=Radius+2*sin(20*Angle+t.y/150);
    Tex=Round(Radius)%60;
    if(Tex<40)
        return CRGB(0.8,0.6,0.0);
    else
        return CRGB(0.5,0.3,0.0);
}

几何纹理

凹凸纹理(Bump map)的基本思想是用简单光照模型计算物体表面的光强时,对物体表面的法向进行微小的扰动,导致表面光强的突变,产生凹凸不平的真实感效果。

几何纹理的分类

  1. 偏移矢量凹凸纹理(Offset vector bump map)
  2. 高度场凹凸纹理(Height field bump map)

纹理反走样技术:最简单的纹理反走样技术是双线性内插法

f\left ( u,v \right )= \left ( 1-u \right )\left ( 1-v \right )f\left ( i,j \right )+\left ( 1-u \right )vf\left ( i,j+1 \right )+u\left ( 1-v \right )f\left ( i+1,j \right )+uvf\left ( i+1,j+1 \right )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值