@@ -385,7 +385,7 @@ L 的范围是 0 ~ 100,a, b 的范围是 -300 ~ 300。从 -a 到 +a 表示绿
385385- 分型维数计算。
386386- L- 系统,能够用 L- 系统绘制物体。
387387
388- ## 物体的集合表示
388+ ## 多边形
389389
390390### 坐标表示
391391
@@ -498,6 +498,175 @@ L 的范围是 0 ~ 100,a, b 的范围是 -300 ~ 300。从 -a 到 +a 表示绿
498498- 缺乏解析表达式,几何属性计算困难。
499499- 在表示复杂拓扑和具有丰富细节的物体时,数据量庞大,建模、编辑、绘制、存储的负担重。
500500
501+ ## 参数曲面
502+
503+ ## 细分曲面(Subdivision Surfaces)
504+
505+ ### 简介
506+
507+ 如何使得一条曲线变光滑?
508+
509+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118200350174.png " alt =" image-20251118200350174 " style =" zoom :40% ;" />
510+
511+ ** 每次细分都是在每条边上插入一个新的顶点,可以看到随着细分次数的增加,折线逐渐变成一条光滑的曲线。** 曲面细分需要有几何规则和拓扑规则,几何规则用于计算新顶点的位置,拓扑规则用于确定新顶点的连接关系。
512+
513+ 应用细分曲面做三维模型的原型设计非常的方便。通常只需要两个步骤,** 先创建出模型的大致轮廓,然后设置需要切割的点线面** 。比如这个桌子模型,先创建出它的轮廓模型,看起来非常简单,然后设置哪些点线面需要切割。
514+
515+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118201523267.png " alt =" image-20251118201523267 " style =" zoom :50% ;" />
516+
517+ 关键问题:
518+
519+ - 怎样计算曲面?使得物体平滑。
520+ - 怎样存储曲面?能够有效的实现曲面细分。
521+
522+ ### Loop 细分
523+
524+ Loop 细分是一种** 三角形网格** 的细分法则。
525+
526+ 如何细分?增加新的顶点(分裂阶段),通过分边和连接顶点,将每个三角形分为 4 个三角形。
527+
528+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118201853173.png " alt =" image-20251118201853173 " style =" zoom :65% ;" />
529+
530+ 平均阶段,移动新三角形和老三角形顶点,让细分结果更光滑。
531+
532+ 边界边、内部边、边界点、内部点。
533+
534+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118202035263.png " alt =" image-20251118202035263 " style =" zoom :55% ;" />
535+
536+ 两个新增顶点位置计算的规则:
537+
538+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118202154927.png " alt =" image-20251118202154927 " style =" zoom :65% ;" />
539+
540+ 旧顶点位置更新的规则:
541+
542+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118202226942.png " alt =" image-20251118202226942 " style =" zoom :65% ;" />
543+
544+ Loop 细分方案对任意拓扑结构的多边形进行细分。细分粒度实现多个分辨率自由变换。
545+
546+ ### Catmull-Clark 细分
547+
548+ Catmull-Clark 细分是一种** 四边形网格** 的细分法则,每个面计算生成一个新的顶点,每条边计算生成一个新的顶点,同时每个原始顶点更新位置。
549+
550+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118202429995.png " alt =" image-20251118202429995 " style =" zoom :60% ;" />
551+
552+ 生成过程:
553+
554+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118205017299.png " alt =" image-20251118205017299 " style =" zoom :60% ;" />
555+
556+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118205030052.png " alt =" image-20251118205030052 " style =" zoom :60% ;" />
557+
558+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118205043314.png " alt =" image-20251118205043314 " style =" zoom :60% ;" />
559+
560+ 举例:
561+
562+ 下图为 Catmull-Clark 细分格式的细分掩膜,对于新增加的顶点位置以及原始顶点位置更新规则如下:
563+
564+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118205403782.png " alt =" image-20251118205403782 " style =" zoom :60% ;" />
565+
566+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118205455029.png " alt =" image-20251118205455029 " style =" zoom :60% ;" />
567+
568+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118205541708.png " alt =" image-20251118205541708 " style =" zoom :60% ;" />
569+
570+ ** 细分曲面的核心就一个点:细分规则。不同的细分规则,生成的细分曲面外形是有区别的。** 常见的细分规则有 Catmull-Clark 细分,Doo-Sabin 细分,Loop 细分等。
571+
572+ ### Butterfly 细分
573+
574+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118205718308.png " alt =" image-20251118205718308 " style =" zoom :50% ;" />
575+
576+ ### Doo-Sabin 细分
577+
578+ Dainel Doo 和 Malcolm Sabin 在 1978 提出的一种可以** 对任意拓扑的网格进行细分** 的一种算法,是** 递归定义** 的。
579+
580+ - 原来的顶点变面(度为几,就是几边形)。
581+ - 边也变面。
582+ - 原来的面也变为新面。
583+
584+ 每次递归,计算** 面的中心点和边的中心点** ,对于每一个点 P,计算一个新的点 P’,是原顶点,相邻的边的中心点和面的中心点的平均值。
585+
586+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118205837875.png " alt =" image-20251118205837875 " style =" zoom :55% ;" />
587+
588+ 每次递归,对于每一个面,连接面内的新点生成新的面,对于每一个点,连接点周围的新点生成新的面,对于每一条边,连接边相邻的新点生成新的面。
589+
590+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118210010082.png " alt =" image-20251118210010082 " style =" zoom :60% ;" />
591+
592+ ### 四种细分算法效果
593+
594+ Loop 只能用于三角形网格。
595+
596+ Catmull-Clark 可以运用于任意拓扑的网格。
597+
598+ Doo-Sabin 的计算效率不如 Catmull-Clark。
599+
600+ 在 3D 计算机图形学中,Doo-Sabin 细分曲面是一种基于双二次均匀B样条推广的细分曲面,而 Catmull-Clark 基于广义双立方均匀 B 样条。
601+
602+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118210132265.png " alt =" image-20251118210132265 " style =" zoom :60% ;" />
603+
604+ ### 多边形的面片
605+
606+ 面表示:
607+
608+ - ** 独立面。**
609+ - ** 顶点和面表。**
610+ - ** 邻近边表。**
611+ - ** 翼边表示法。**
612+
613+ #### 面表
614+
615+ 每个面表有顶点组成,冗余顶点,没有拓扑信息。
616+
617+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118210342698.png " alt =" image-20251118210342698 " style =" zoom :70% ;" />
618+
619+ #### 顶点表 & 面表
620+
621+ 每个面的顶点坐标。
622+
623+ 参考:共享顶点、** 仍然没有拓扑信息** 。
624+
625+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118210448144.png " alt =" image-20251118210448144 " style =" zoom :70% ;" />
626+
627+ #### 邻接边表
628+
629+ 存储所有的点, 边, 面邻接关系。
630+
631+ 邻接:** 有效保存拓扑信息** 、带来额外存储。
632+
633+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118210620615.png " alt =" image-20251118210620615 " style =" zoom :70% ;" />
634+
635+ #### 翼边表示法
636+
637+ - 将邻接关系存储在边信息中。
638+ - 所有邻接信息 O(1) 查询。
639+ - 较小的存储开销。
640+ - 任意形状的多边形。
641+
642+ ** 对每条边,储存其两个顶点,左右两个面,左边面与之连接的两条边,右边面与之连接的两条边。**
643+
644+ ** 对每个点,储存其对应的一个边索引。**
645+
646+ ** 对每个面,储存其中的一个边索引。**
647+
648+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118210728641.png " alt =" image-20251118210728641 " style =" zoom :50% ;" />
649+
650+ 例子:
651+
652+ <img src =" https://cdn.davidingplus.cn/images/2025/11/18/image-20251118210813939.png " alt =" image-20251118210813939 " style =" zoom :60% ;" />
653+
654+ 优点:
655+
656+ - 表现面的简单方法。
657+ - 容易实现。
658+ - 任意拓扑结构。
659+ - 实现光滑曲面。
660+ - 多分辨率。
661+
662+ 难点:
663+
664+ - 难于直观感受。
665+ - 难于参数化计算。
666+ - 难于交互。
667+
668+ ## 隐式曲面
669+
501670## 分形
502671
503672普通几何学研究的对象,一般都具有整数的维数。比如,零维的点、一维的线、二维的面、三维的立体、乃至四维的时空。但是现实生活中象弯弯曲曲的海岸线这些对象就不能用传统欧几里德几何学的整数维描述或者说测量了。** 要描述这一大类复杂无规的几何对象,就引入了分形理论,把维数视为分数维数。** 这是几何学的新突破,引起了数学家和自然科学者的极大关注。
@@ -2817,6 +2986,179 @@ RGB 模型:
28172986
28182987## 辐射度方法
28192988
2989+ ### 辐射度技术概述
2990+
2991+ 直接照明效果。
2992+
2993+ 艺术家在此场景中精心放置了三类光源以模拟真实的光照效果:
2994+
2995+ 聚光灯:能产生阴影,置于窗外。
2996+
2997+ 泛光:缺少泛光,房间内所有可见但未被光源直接照射的表面会是全黑的。
2998+
2999+ 点光源:不产生阴影,可减弱泛光产生的“平板”效果。
3000+
3001+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118190522189.png" alt="image-20251118190522189" style="zoom:60%;" />
3002+
3003+ 辐射度效果。
3004+
3005+ 采用辐射度算法绘制,光效未经艺术家特别处理。场景中仅包含一个面光源,即放置于窗外的天空。与直接照明效果相比,主要区别在于:
3006+
3007+ - 房间有**发光效果**。
3008+ - 地板上**软影清晰可见**,房间周围可观察到**细微的光效**。
3009+ - 地毯上的红色辉映到灰墙上,产生淡淡的温暖的感觉。
3010+
3011+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118191220008.png" alt="image-20251118191220008" style="zoom:60%;" />
3012+
3013+ 辐射度技术原理:
3014+
3015+ - 光是一种**辐射能**,在一个封闭环境中,场景中的光能经过表面之间的反射和透射,最终达到平衡状态。
3016+ - 场景中各表面的光亮度实际上是场景中**光能分布的反映**。
3017+ - 前提:**针对理想漫射环境**。
3018+
3019+ 什么是辐射度:**单位时间内从物体单位表面积向外辐射的光能。**包含两部分:
3020+
3021+ - 物体作为光源自身向外发出的能量。
3022+ - 物体表面接受来自周围场景表面传递给它的能量后,再次反射出去的部分。
3023+
3024+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118191525057.png" alt="image-20251118191525057" style="zoom:55%;" />
3025+
3026+ ### 辐射度方法
3027+
3028+ 基本前提:
3029+
3030+ 1. **光源和普通物体之间没有区别。**
3031+ 2. **场景中的一个表面被它周围的所有可见的表面所照亮。**
3032+
3033+ 简单地说,辐射度算法就是:**把场景细分到很细很细的面片**(如 1 个像素那么大的三角形),分别计算它们接受和发出的光能,然后逐次递归,直到每个面片的光能数据不再变化(或者到一定的阀值)为止。因此,**计算量很大(要计算很多次),而且难以并行(因为递归)**。
3034+
3035+ 优点:
3036+
3037+ - 非常真实的漫反射表面光照。
3038+ - 概念简单,容易实现。
3039+ - 能够容易地使用 3D 硬件加速计算。
3040+
3041+ 缺点:
3042+
3043+ - 慢。
3044+ - **不能很好地处理点光源**。
3045+ - 也**不能处理有光泽的表面**。
3046+ - 总是过于复杂而且很少在书本中解释。
3047+
3048+ ### 辐射度系统方程
3049+
3050+ 根据辐射度的思想,将场景中的每个物体的表面分解为互不重叠的小面片(patch),Ai(i = 1, 2, 3...)。
3051+
3052+ - 前提:假设每一小面片的辐射度和漫反射率均为常数。
3053+ - 小面片大小可以不一致,一般分解为方形,也有分解为三角形等其他形状的。
3054+
3055+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118192444695.png" alt="image-20251118192444695" style="zoom:60%;" />
3056+
3057+ 辐射度计算中的几个定义:
3058+
3059+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118192632541.png" alt="image-20251118192632541" style="zoom:60%;" />
3060+
3061+ 方程的推导过程如下:
3062+
3063+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118192856282.png" alt="image-20251118192856282" style="zoom:55%;" />
3064+
3065+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118192910112.png" alt="image-20251118192910112" style="zoom:55%;" />
3066+
3067+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118192930853.png" alt="image-20251118192930853" style="zoom:60%;" />
3068+
3069+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118192949153.png" alt="image-20251118192949153" style="zoom:70%;" />
3070+
3071+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118193005973.png" alt="image-20251118193005973" style="zoom:50%;" />
3072+
3073+ 矩阵形式:
3074+
3075+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118193023379.png" alt="image-20251118193023379" style="zoom:50%;" />
3076+
3077+ ### 辐射度系统方程实例
3078+
3079+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118193149597.png" alt="image-20251118193149597" style="zoom:65%;" />
3080+
3081+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118193201997.png" alt="image-20251118193201997" style="zoom:65%;" />
3082+
3083+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118193252544.png" alt="image-20251118193252544" style="zoom:65%;" />
3084+
3085+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118193304462.png" alt="image-20251118193304462" style="zoom:65%;" />
3086+
3087+ 矩阵形式:
3088+
3089+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118193314694.png" alt="image-20251118193314694" style="zoom:60%;" />
3090+
3091+ ### 辐射度算法流程图
3092+
3093+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118193359511.png" alt="image-20251118193359511" style="zoom:55%;" />
3094+
3095+ #### 表面分割
3096+
3097+ 均匀网格化。
3098+
3099+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118193513812.png" alt="image-20251118193513812" style="zoom:60%;" />
3100+
3101+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118193522884.png" alt="image-20251118193522884" style="zoom:60%;" />
3102+
3103+ 自适应网格化。
3104+
3105+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118193548637.png" alt="image-20251118193548637" style="zoom:60%;" />
3106+
3107+ #### 形状因子计算
3108+
3109+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118193941043.png" alt="image-20251118193941043" style="zoom:55%;" />
3110+
3111+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118193951856.png" alt="image-20251118193951856" style="zoom:55%;" />
3112+
3113+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118194015161.png" alt="image-20251118194015161" style="zoom:55%;" />
3114+
3115+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118194025836.png" alt="image-20251118194025836" style="zoom:55%;" />
3116+
3117+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118194047076.png" alt="image-20251118194047076" style="zoom:55%;" />
3118+
3119+ #### 方程求解
3120+
3121+ 理论上说,辐射度系统方程可采用任何一种线性方程组的求解算法来求解。
3122+
3123+ 
3124+
3125+ 直接求逆:高斯消去法(Gauss elimination)。
3126+
3127+ 迭代法:
3128+
3129+ - Gauss-Seidel 迭代—Gathering。
3130+ - Southwell 迭代—Shooting。
3131+
3132+ **Gathering:对于每一面片,收集场景中其它面片对它辐射的光能,更新该面片的辐射度。**
3133+
3134+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118194230231.png" alt="image-20251118194230231" style="zoom:50%;" />
3135+
3136+ **Shooting:选取辐射源面片(具有最大待辐射光能),将其辐射光能发送到其他面片,更新各面片的辐射度。选取新的辐射源面片。**
3137+
3138+ <img src="https://cdn.davidingplus.cn/images/2025/11/18/image-20251118194319387.png" alt="image-20251118194319387" style="zoom:55%;" />
3139+
3140+ 逐步求精辐射度算法:
3141+
3142+ - 通过迭代过程求解辐射度方程。
3143+ - 每次迭代相当于一次光能传递过程。
3144+ - 每次迭代后,采用场景中各面片的当前辐射度值绘制整个场景。
3145+ - 经过多次迭代后,各面片的辐射度值逐渐逼近方程组的解。
3146+ - 可用于对场景进行交互预览。
3147+
3148+ ### 辐射度和光追对比
3149+
3150+ 辐射度方法**能很好的解决光能传播**。
3151+
3152+ - **处理漫反射。**
3153+ - **无法处理镜面反射。**
3154+ - **图像是视点独立的。**
3155+
3156+ 光线跟踪反应的是**光线复杂的反射行为**。
3157+
3158+ - **对于镜面表面表现很好。**
3159+ - **漫反射光线反射到各个方向光线跟踪无法抓住所有方向光线。**
3160+ - **必须使用环境映照来替换缺失的扩散。**
3161+
28203162## 阴影
28213163
28223164阴影可以反映物体之间的相对位置,增强场景的立体感和层次感。
0 commit comments