GAMES101(10~12节,曲线,曲面)

Geometry

implicit隐式几何表示:

函数f(x,y,z):

根据函数fn描述几何,遍历所有空间内 的点,如果带入xyz到函数f(x,y,z)结果=0那就绘制这个点

如果xyz求值结果>0表示在几何外,=0在表面,<0在几何内

构造几何csg( constructive solid geometry):

建立bool运算(这被应用到建模软件中)

\bigcup并集\bigcap交集 \ 差集:通过建立基本几何形体,利用bool创建复杂几何

距离函数:

距离函数:任何点到几何表面的最近距离,

如果点在外面,函数结果为正,如果在内部,距离为负

比如当两个球逐渐靠近,会发生融合,这是对距离函数sdf做混合,用于渲染平滑的几何形状

比如:水滴融合

explicit显示几何表示:

直接表示(不会改变):

point clouds点云:

几何由密集的点表示

Polygon / triangle meshes

由多边形网格表示:obj文件存储所有顶点数据的信息,和索引顺序

参数表示(输入参数,得到转换后的结果):

参数映射方式:

遍历所有的UV坐标通过映射函数f(u,v) ,投影到空间中的某一点

曲线曲面

曲线

bezier surfaces贝塞尔曲线

用一系列控制点bi 相连形成的连线,对所有连线根据时间t(参数)计算(线性插值:(1-t) bi  + t * bi+1)新控制点,

再次相连,直到仅剩一个点为止,这个点作为曲线上的点,重复上述,直到从每个线段取完所有可能参数t

贝塞尔曲线

数学表达式:

b^n(t)多项式:n阶的贝塞尔曲线,在任意时间t下,都是n+1个控制点的插值结果,求出曲线上的点

Bernstein polynomials

bj为控制点,时间t范围0--1,

B(t)函数:伯恩斯坦多项式:负责为控制点加权

此图为伯恩斯坦多项式的图像表示,可以看到,在每个横坐标下,纵轴所有权重和为1:所有控制点,对时间t下曲线点的不同权重的影响

Bernstein polynomials—图像表示

贝塞尔曲线公式即对每个点*权重后的求和结果

(n  i​) 二项系数:从n取i个组合的方式

假设n==3,那么展开后的公式为:

性质:

起始,终点:当t==0时,在起点b0,当t==1时,在终点bn

切线cubic case:当t==0时,切线是n * (b1 - b0),当t==1时,切线是n * (bn-1 - bn)

对于放射变换前后的控制点,贝塞尔曲线相同

凸包性质:贝塞尔曲线一定在几个控制点形成的凸包内(所有点依次连线)

一般由4个控制点绘制一段的曲线,再拼接组成一整条曲线,对于4个控制点,一般仅连接两条线作为显示(在ps,au等软件的应用,可以旋转这个线)

同时如果想要保持光滑,切线需要导数连续:距离相等,方向相反

如果想要几何连续,需要一组(4点)的终点连接二组的起点

缺点:如果想要修改某个部分,那么所有地方都需要改变

splines样条曲线/NURBS样条曲线:

basis splines:B-splines  B样条:基函数样条

是贝塞尔曲线的优化,可以局部修改

曲面:

用贝塞尔曲线表示曲面(建模中的方式)。

创建4*4的控制点,利用双线性插值的思想,首先在每行的四个控制点,计算曲线,再根据在四个曲线上t位置的点再次计算列方向的曲线,

曲面细分subdivision

(在建模软件中常见的作法)

步骤:增加三角形,并改变顶点位置

loop细分:

仅能用作三角形网格

增边:一个三角形连接3条边中点,分为4个三角形

位移:

新的顶点,即原三角形边上中点,都被相应4个老的顶点影响,根据这个公式,即新的顶点位置

对于原顶点,被自己的位置和周围所有三角形(不一定是6个)影响,如果周围三角形很多,那么新的位置被本身的影响就很少

 

增点边,紫色为奇异点
catmull - Clark 细分 

对于一般的四边形和非四边形网格情况

度:与某个顶点相连边的个数

奇异点:如果度 !=4

增边:对于每个多边形取所有边的中点,彼此相连在面的中点位置

经过一次细分后所有原多边形都变为多个新四边形,对于每个非四边形都形成一个新奇异点,非四边形将不存在,因此之后的细分也不会再增加奇异点数

位移

原面的中间点:被原面的原点影响

边上的中心点:被重合的面中点,和所在边影响

原本的点:被周围面中点,和所有顶点相连边上的中点影响

曲面简化

简化多变形的数量

edge collapse边坍缩

坍缩一条边,对应的两个顶点变为一个

二次(平方)误差度量:计算坍缩的顶点应该放在哪个位置,可以最小化误差,使顶点和原本有关的面距离的平方和达到最小

贪心算法(非全局最优):对于模型来说,如何坍缩,取决于哪个边坍缩后的误差最小,自小到大坍缩边,

在每次坍缩时,周围的边也会被改变受到影响,所以应重新计算误差值,因此需要用(优先队列)存储和动态更新边误差值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值