计算机辅助几何设计(4):极形式和开花算法
1. 基本思想1.1. 仿射组合(Affine Combinations)$n$点的仿射组合为:$$p_{\pmb\alpha}=\sum_{i=1}^n\alpha_i\pmb{p}i$$其中,$\sum{i=1}^n\alpha_i=1$
函数 $f$ 对参数 $x_i$ 是仿射的是指:$$f \left( x _ { 1 } , \ldots , \sum _ { k = 1 } ^ { n } \alpha _ { k } x _ { i } ^ { ( k ) } , \ldots , x _ { m } \right) = \sum _ { k = 1 } ^ { n } \alpha _ { k } f \left( x _ { 1 } , \ldots , x _ { i } ^ { ( k ) } , \ldots , x _ { m } \right)$$其中,$\sum_{i=1}^n\alpha_i=1$
示例:
两点间的仿射插值为:$$\pmb{p}_\alpha & ...
计算机辅助几何设计:样条曲面
1. 样条曲面简介
当输入为一维时,将得到曲线,而将输入变为二维时,则可以得到曲面输出
1.1. 参数样条曲面
两个参数坐标$(u,v)$
分段双变量多项式
多片合成连续的完整一片
每个片元称为样条块Spline Patch
有两种方法进行建模:
张量积曲面Tensor Product Surface
全度曲面Total Degree Surface
1.2. 张量积曲面
构造简单
与曲线的情况类似
四边形块Quad Patch
度数各向异性
1.3. 全度曲面
不够直接,可借助极形式进行理解
度数各向同性
三角形块Triangle Patch
曲线的自然泛化
2. 张量积曲面 Tensor Product Surface2.1. 基本思想给定一个$n$维基函数空间$$\pmb B^{(curv)}:=\{b_1(t),\cdots,b_n(t)\}$$其中,$b_i(t):t\in[t_0,t_1]\rightarrow \mathbb R^d$
构建一个双参数基函数空间:$$\pmb{B}^{(surf)}=\{b_i(u)b_j(v)\} ...
基于物理的实时渲染着色方法
事实上,从IlumEngine能够显示东西之初,我就已经搭建了一套基于金属工作流的延迟PBR渲染管线,但之前对于PBR材质模型的理解还不够深入,很多情况下都是以抄公式为主,这次借实现Kulla-Conty对微表面模型能量不守恒的修正,从理论上来深入理解实时PBR着色方法。
1. 渲染着色的物理原理从物理角度上看,渲染着色即光与物体的材质表面、材质介质的相互作用后,射入摄像机的结果。
1.1. 光的物理本质
光是具有一定波长的电磁波,限定自由电荷密度$\rho$和自由电流密度$\pmb J$,根据欧姆定律有电流密度正比于电场:$$\pmb J=\sigma \pmb E$$对于光在线性介质中的传播,满足麦克斯韦方程组:$$\begin{aligned}\nabla \cdot\pmb E &= \frac{1}{\varepsilon}\pmb \rho\\\\\nabla\cdot\pmb B&=0\\\\\nabla\times \pmb E&=-\frac{\partial \pmb B}{\partial t}\\ ...
计算机辅助几何设计:B样条曲线
1. B样条基函数为解决Bézier曲线的全局性、端点性等问题,我们引入了Bézier样条来实现曲线的局部编辑,但由于Bézier样条曲线本质上是分段Bézier曲线,数学表达不够优美,在构造、求交等计算上较为麻烦,为此我们又引入B样条基函数的工具,能够精确表达分段Bézier曲线。
1.1. 单位B样条基函数B样条基函数通过不同连续阶性的简单基函数进行混合得到连续性更强的高阶基函数,例如一阶单位B样条基函数定义为:$$N_i^1(t)=\begin{cases}1,&\mathrm {if}\ i\leq t< i+1\\\\0,&\mathrm{otherwise}\end{cases}$$$N_i^1(t)$为$C^{-1}$连续,函数图像如下:
通过平移与混合:
可以得到$C^0$连续的基函数$N_i^2(t)$:$$\begin{aligned}N_i^2(t)&=(t-i)N_i^1(t)+(i+2-t)N_{i+1}^1(t)\\\\&=\begin{cases}t-i,&\mathrm{i ...