Pixel World

it's better be burning out than to fade away.

计算机图形学(三):纹理映射

纹理管线($The\;Texture\;Pipeline$)

纹理映射 ($Texture Mapping$) 是一种将物体空间坐标点转化为纹理坐标,进而从纹理上获取对应纹素值,以增强着色细节的方法。

纹理管线($The\;Texture\;Pipeline$), 也就是单个纹理应用到纹理贴图的详细过程,其中每一个步骤均可以被用户灵活控制。

纹理映射步骤

一个砖墙的纹理管线处理过程。

纹理映射步骤

假设拥有三维模型空间到二维纹理空间的映射关系,只需要将每个顶点的颜色信息存储在二维纹理贴图上,在进行光照计算时根据映射关系查询每个顶点的颜色信息。所有点计算完后,就好像整个纹理被贴到了物体表面一样。但是如何建立这种映射关系呢?接下来介绍两种方式。

投影映射-从物体坐标系到参数空间($Projector\;and\;Mapping$)

阅读全文 »

计算机图形学(二):着色

渲染过程本质可以上分解为两个步骤:可见性测试和着色。光栅化和光线追踪本质上都是用于解决可见性问题。本章我们将介绍渲染过程的第二部分:着色。着色是一个庞大的主题。一些用于着色的技术在数学上也很复杂。本章我们将学习最基本的着色模型: $Blinn-Phong\;Reflectance\;Model$

$blinn-Phong\;Reflectance\;Model$

当我们观察一个物体时,可以明显的将物体的视觉表现分为三类:

  • 高光:表现很亮的部分,并且会随着视角的变化而变化
  • 漫反射部分:颜色变化不明显,表示物体本身的颜色或者diffuse颜色。(物体表面吸收了部分光线,反射出的未被吸收的部分)
  • 环境光:未被光照直接照亮的部分,模拟间接光照。在布林冯模型中简化为常量。这也是为什么布林冯模型被称为经验模型的原因。计算精确的间接光照需要$RayTracing$。

blinn-phong

布林冯光照模型是一个经验模型。整体思想就是按照这三部分来建模的。布林冯光照模型是一个直接光照模型(或者叫局部光照/局部性),不考虑间接光照,即不考虑周围物体反射的光线对其产生的影响。着色权重仅考虑光源。(阴影及SSAO需要多个pass处理)

定义光照参数

要计算物体表面着色点光照结果,需要定义一些基本的参数。

阅读全文 »

计算机图形学(一):辐射度量学

辐射度量学($Radiometry$)

辐射度量学是基于物理光照的基础,是基于几何光学来定义的,提供了精准的关于光的各种物理量,光与物体表面的作用,光线传播方法的定义等。辐射度量学是反射方程、渲染方程的基础。

Irradiance

1.辐射能量($Radiant\;energy$)

在辐射度量学中最基本的单位是辐射能量,表示为$Q$,单位是$J(焦耳)$,辐射能量$Q$以辐射的形式发射,传播或接收的能量。每个光子都携带一定的能量,这个能量正比于它的频率:

$Q = hv$

其中$h = 6.62620\times (10^{-34})J$.光子的频率(或者说能量)影响着光子与物体表面的交互,更重要的是,它影响着光与感应器之间的作用,使不同频率的光被察觉为不同的颜色。

2.辐射通量($Radiant\;flux$)

阅读全文 »

图形学的数学基础(十五):贝塞尔曲线

贝塞尔曲线($Bézier\;curve$)

用一系列控制点定义的曲线,如下图所示:曲线由四个控制点定义(三阶贝塞尔曲线),从$P_0$开始,沿着$P_0-P_1$切线方向行进,结束时沿着
$P_2-P_3$方向,结束于$P_3$点。

贝塞尔曲线

参数方程-$de\;Casteljau\;Algorithm$

首先考虑由三个控制点组成的二次贝塞尔曲线( $quadratic\;Bézier$):

贝塞尔曲线

假设有一颗沿着曲线运动的小球,当$t = 0$,球体在$b_0$点,当$t = 1$,球体在$b_1$点 定义曲线关于时间$t$的参数方程,实质上就是求在任意时间$t$($0<=t<=1$),球体的位置。这就是$de\;Casteljau$算法的核心思想,将曲线方程转换成了求一个点位置。

求解步骤:

阅读全文 »

图形学的数学基础(十四):插值

线性插值($Linear\;Interpolation$)

在图形学领域插值是一项广泛应用的技术,多数时候,数据是在规则网格上生成的(值写在 2D 或 3D 网格的顶点位置)或在一条线上(在 1D 情况下),但是程序需要计算任意一点的值。如果采样点刚好落在网格顶点处,那么可以读取数值直接使用,但是如果采样点落在其他地方,考虑到那里并没有存储数值,我们需要基于周围顶点计算数值。这种技术称为插值,因为其关键思想是“插值”,通过固定网格顶点的现有值计算网格上其他任意位置的值。

在二维中这种技术叫双线性插值,与之对应的三维插值称为三线性插值。“线性插值”是一种类似于以下形式的方程:

$a(1-t) +bt\;\;\;with\; 0 <=t\;<=\;1$

其他形式的线性插值都是以此为基础的。

线性插值

插值技术通常用于图像处理(例如上采样/下采样)。 三维空间也可以使用3D或2D网格(纹理可以看作2D网格),例如流体模拟、体积渲染、纹理映射和辐照度缓存等等,无论何时涉及网格,通常也需要插值技术。

双线性插值($Bilinear\;Interpolation$)

阅读全文 »

图形学的数学基础(十三):立体角

介绍

立体角,常用字母$\Omega$表示,是一个物体对特定点在三维空间中的角度表示,是平面角在三维空间中的扩展。因此,立体角是单位球面上的一块面积,这和“平面角是单位圆上的一段弧长”类似。

平面角

平面角等于张角对应圆上的弧长除以圆的半径,即:

平面角

$\theta = \dfrac{l}{r}$

而圆的周长等于$2\pi{r}$,因此完整圆
对应的角度为:

$\dfrac{2\pi{r}}{r} = 2\pi\;\;radians$

阅读全文 »

图形学的数学基础(十二):几何图元-包围盒($Bounding Box$)

包围盒是一种求解离散点集最优包围空间的算法,基本思想是用体积稍大且特性简单的几何形状来近似代替复杂的几何对象。包围盒常用于几何物体的碰撞检测,ray-tracing中光线求交等。常用的包围盒有两种,$AABB与OBB$,AABB包围盒是轴对齐的,而$OBB$是有向的。

$AABB$

$AABB$是$Axially\;Aligned\;Bounding\;Box$的缩写,三维$AABB$是一个简单的6面盒子,每一面都与一个基向量形成的面平行,这个盒子不一定是立方体,盒子的长度宽度高度可以各自不同。

重要属性

几何体$AABB$包围盒内的点满足以下不等式:

$x_{min} <= x <= x_{max}$

$y_{min} <= y <= y_{max}$

$z_{min} <= z <= z_{max}$

阅读全文 »

图形学的数学基础(十一):几何图元-重心坐标

重心坐标

定义重心坐标($Barycentric\;Coordinates$)

对于空间内的三角形$\triangle{v_1v_2v_3}$和任意一点$\textbf{p}$,必定唯一存在三个数$b_1,b_2,b_3$,满足:

$b_1+b_2+b_3 = 1$

$\textbf{p} = b_1\textbf{v}_1 + b_2\textbf{v}_2+ b_3\textbf{v}_3$

则$b_1,b_2,b_3$就称为$\textbf{p}$点在此三角形$\triangle{v_1v_2v_3}$上的重心坐标.

重心坐标表示了三角形每个顶点对该点的权重(贡献),重心坐标可以用来三角形光栅化顶点的属性插值,比如说uv 颜色 法线的线性插值。

重心坐标也是一种坐标系统,类似于普通笛卡尔坐标系,但有一个区别就是,重心坐标的三个分量之和为1:

阅读全文 »

图形学的数学基础(十):几何图元-三角形

三角形在图形学中具有重要意义。复杂三维对象的表面都是由庞大三角形网格组成($Triangle\;Mesh$),本章将介绍三角形基本属性,重点是重心坐标。

定义

定义一个三角形,只需要三个顶点即可,这些点的顺序至关重要,因为它们的顺序决定了三角面的正反,在右手系中,当从三角形正面看时,通常按逆时针方向枚举点(右手螺旋定则)。

三角形定义

边向量,边长 顶点定义如下:

$\vec{e_1} = \textbf{v}_3 - \textbf{v}_2$

$\vec{e_2} = \textbf{v}_1 - \textbf{v}_3$

$\vec{e_3} = \textbf{v}_2 - \textbf{v}_1$

阅读全文 »

图形学的数学基础(九):几何图元-球体圆形和平面

转载请注明出处

球体和圆形

球体是一个三维对象,定义与给定点具有固定距离的所有点的集合。从球体中心到点的距离称为球体半径($Radius$),球体的直接表示方式是描述其中心$\textbf{c}$和半径$r$。

球体的隐式表述

$||\textbf{p} - \textbf{c}|| = r$

$(x-x_c)^2 + (y-y_c)^2 + (z-z_c)^2 = r^2$

重要属性

  • 直径 $D = 2r$
  • 圆周长 $C = 2\pi{r}$
  • 圆面积 $A = \pi{r^2}$
  • 球体表面积 $S = 4\pi{r^2}$
  • 球体体积 $S = \dfrac{4}{3}\pi{r^3}$
阅读全文 »
0%