INF443 整理

INF443 整理

0. 一些词汇

物体按反光特点的分类:

  • Diffus:使得光线向四周发射

  • Spéculaire:遵守反射定律

  • Mixte:某一个方向上比较强(Lobe 叶 spéculaire (反射的))【不同材料】
    Ombre Portée, Ombre Propre

  • Ombre Portée:投影到屏幕上的影子

  • Ombre Propre:物体本身因为没有被照亮的阴暗面。
    在这里插入图片描述

  • Source ponctuelle -> ombre nette

  • Source étendue -> ombre douce

  • relief: 凸起;浮雕;

  • mat:毛糙面, 未经磨光的部分

  • crénelé: 锯齿形的

  • courbe gauche: courbe non plane

  • artefacts: 假象

  • chevronné: 熟练的,有经验的

  • granulaires: 颗粒状的

  • tubulaire: 管状的

  • embranchement: 分杈

  • fente: 缝隙

  • arborescent: 树木状的

1. Pipeline du rendu projectif

Rendu Projectif

定义:

  • la méthode implémentée dans les cartes graphiques des machines et permet de ce fait une accélération matérielle des calculs. [这个Pipeline也被OpenGL所采用]
  • 即,一种从Scène 3D得到Image的方法

优点:

  • 可以并行

Algorithme du rendu projectif

在这里插入图片描述

1. Transformation de la géométrie: Transformation Projective

目的:exprimer la géométrie de la scène dans le repère image

简言之,第一步中包含两步:

  1. 将物体变换到Repère du monde上,这里可以对物体大小方向进行变换。[translation, rotation et changement d’échelle]
  2. 变换到Repère de la caméra上。

Rq: Suppression des faces arrière (back-face culling)
这两步只对于朝向camera的面才适用,即面的中心与camera的连线与面的法向量乘积为正数

Découpage de la scène (frustum-culling)

  • 只保留Volume de vue中的物体。
  • 如果有一部分在Volume de vue中的物体会被切开,只保留看得见的部分。

具体数学部分:
Espace projectif
Coordonnées Homogènes ( x , y , z , w ) (x,y,z,w) (x,y,z,w)
Coordonnées Cartésiennes ( x , y , z , 1 ) (x,y,z,1) (x,y,z,1)
两者的转化:
Coordonnées Homogènes
Coordonnées Cartésiennes → \to Coordonnées Homogènes: w : = 1 w:=1 w:=1
Coordonnées Homogènes → \to Coordonnées Cartésiennes: 所有点坐标 / w /w /w
【Translation等操作】
【Transformation Projectif】

2. Élimination des parties cachées

具体来说,本步有3小步:

  • la discrétisation de la facette en pixels
  • un calcul de visibilité, Élimination des parties cachées
  • calcul de l’ illumination pour chaque pixel visible Chapitre 2.
Algorithme de balayage

La discrétisation de la facette en pixels
【Algorithme de Breznham】

每一次看P1P2,P1P3的连线确定起始点和终止点,
然后一行一行扫描

Algorithme du peintre

Élimination des parties cachées

将每一个面的深度排序,显示的时候先显示远的,再显示近的。

局限:
每一个面的前后关系要是一个ordre total:
A > B , B > C -> A > C
在这里插入图片描述

Tampon de profondeur (Z-buffer)

Élimination des parties cachées

在这里插入图片描述

Scène 3D

Object

  • Maillage,mesh描述,或者说由一系列Sommets,Vertices描述
  • 每一个Facette由3个定点的序号构成的liste表示。
  • 每一个Facette还会有一个matériau(颜色etc)
Sommet
  • 有normales这一个属性
  • 有2种方法得到:
    • prédéfinies de manière analytique (球)
    • pré-calculées de manière approchée comme étant la moyenne des normales des facettes triangulaires adjacentes au sommet considéré. [改点所属所有面的法线的平均值,会让物体表面更加光滑]

Lumières

Caméra

Volume de vue
左边这个 z = − d z=-d z=d z = − D z=-D z=D之间的区域。
【图片】

Image

是一个三维的列表,包含了(RGB)

2. Calculs d’Illumination

  • 地板不是全黑的原因:la lumière ambiante est loin d’être uniformément répartie
  1. les sources de lumière sont généralement des sources étendues (fenêtres, luminaires)
  2. tous les éléments éclairés (plafond, murs, tables…) renvoient une partie de cette lumière, jouant le rôle de sources de lumière secondaires.
  • 我们看到的每一个像素的颜色取决于:
  1. 物体表面的位置
  2. 物体表面的朝向
  3. 构成物体的材料

2.1 Moddèle d’illumination locale

假设:

  1. Objets opaques [不考虑完全Spéculaire的物体]
  2. Illumination directe de sources ponctuelles
  3. Rebonds successifs de la lumière创造的是一个lumière ambiante uniforme
  4. 🌟 解决了Ombre propre,但没能解决Ombre portée(Sol: Placage d’ombre portée)!

2.1.1 Modèle de Phong

给出了计算一个点的I§=(R,G,B)的方法。[考虑到物体本色C,Ambiante I a I_a Ia和Source de lumière I s I_s Is]

在这里插入图片描述
L L L: 指向光源 S S S的向量
N N N:平面的法向量
R R R:Réflexion spéculaire,光线按照反射定律的方向
V V V:La direction de vue,指向人的眼睛。
C ( R , V , B ) C(R,V,B) C(R,V,B):Couleur intrinsèque du matériau
I : = ( R , V , B ) I:=(R,V,B) I:=(R,V,B): 待求的illumination
I s I_s Is:source de lumière s s s的光线(R,G,B)
I a I_a Ia:intensité ambiante (R,G,B)的向量
k d k_d kd:lumière diffuse (散射)的系数
k s k_s ks:lumière spéculaire 反射的系数

I = ( C : I a ) + ∑ S ∈ s o u r c e [ k d ( L ⋅ N ) + ( C : I s ) ] + ∑ S ∈ s o u r c e [ k s ( V ⋅ R ) + n I s ] = Ambiant  +  Couleur Diffuse  +  Reflet Sp e ˊ culaire  \begin{aligned} I & = (C:I_a) + \sum_{S \in source} [k_d(L\cdot N)_+(C:I_s)] + \sum_{S \in source} [k_s(V\cdot R)^n_+ I_s] \\ &= \text{Ambiant } + \text{ Couleur Diffuse } + \text{ Reflet Spéculaire }\\ \end{aligned} I=(C:Ia)+Ssource[kd(LN)+(C:Is)]+Ssource[ks(VR)+nIs]=Ambiant + Couleur Diffuse + Reflet Speˊculaire 

Rq:

  1. 因为N和L夹角越大,物体会越暗。所以引入N和L的Produit Scalaire ( L ⋅ N ) + = m a x ( 0 , ( L ⋅ N ) ) (L\cdot N)_+ = max(0,(L \cdot N)) (LN)+=max(0,(LN)),物理上这象征着flux incident élémentaire de photons sur la surface.
  2. 如果观察方向V和R的夹角很小,则物体越亮 -> 引入V和R的Produit Scalaire。
  3. C : I A = C R ∗ I A , R + C V ∗ I A , V + C B ∗ I A , B C:I_A = C_R*I_{A,R}+C_V*I_{A,V}+C_B*I_{A,B} C:IA=CRIA,R+CVIA,V+CBIA,B 逐个元素相乘。
  4. Couleur Diffuse 与物体本色和光源颜色 C , I s C,I_s C,Is有关,Reflet Spéculaire 只与入射光 I s I_s Is有关。
  5. n n n越大Reflet Spéculaire越集中, k s k_s ks越大Reflet Spéculaire越明显。
    【茶杯的图片】
  6. 无Ambiante C : I a C:I_a C:Ia时,我们可以清楚的感知到光源的位置。
    在这里插入图片描述
  7. 这个 I ( P ) I(P) I(P)的不同计算方法得到了不同的Ombrage的方法。

2.1.2 Ombrage Plat

如果我们直接将上面计算 I ( P ) I(P) I(P)的方法放入Tampon de profondeur中,会得到如下的效果:
在这里插入图片描述

2.1.3 Ombrage de Gouraud

为了解决Ombrage Plat的问题,Gouraud的思路是

  1. 对于每一个Sommet定义一个Normale。[要么用几何方法(如一个球体中),要么有该点所属的几个面的法向量的平均值]
  2. 对于面上的每一个点 P P P,利用面的三个顶点 I ( P 1 ) , I ( P 2 ) , I ( P 3 ) I(P1),I(P2),I(P3) I(P1),I(P2),I(P3)的线性插值得到。

因此,Z buffer可以写为:

在这里插入图片描述

Rq: I ( P 1 ) , I ( P 2 ) , I ( P 3 ) I(P1),I(P2),I(P3) I(P1),I(P2),I(P3)的线性插值可以很方便地在Algorithme de balayage中实现
在这里插入图片描述
优点:

  1. Surface Lisse
    缺点:
  2. 没有lisser les silhouettes(侧影) de l’objet.
  3. 有很多反射的中心(正常情况下点光源应该只有一个亮点)
    情况A:理论反射的中心在一个Facette的正中心,此时插值得到的亮度应该和此Facette周围三点亮度平均值一致 -> Manque reflets spéculaires
    情况B:理论反射的中心正好是一个Sommet -> reflets spéculaires étalé.
    在这里插入图片描述

2.1.4 Ombrage de Phong

Ombrage de Phong使用插值计算每一点P对应的法向量而非对颜色 I ( P 1 ) , I ( P 2 ) , I ( P 3 ) I(P1),I(P2),I(P3) I(P1),I(P2),I(P3)的插值解决了这一问题。
缺点:
更加Couteux
在这里插入图片描述

2.2 Ombres et Reflets

在这里插入图片描述
左边是Ombrage de Phong的结果,右边是Placage d’environnement的结果。

Placage d’environnement:
可以让物体反射周围环境。

我们发现之前不够逼真的原因有:

  1. 缺少Ombre Portée,即地面上没有阴影。
  2. 缺少Les reflets du reste de la scène
  3. 缺少Les reflets de transparence,如réfraction de la lumière

2.2.1 Placage d’ombres portées | Tampon L (L - Buffer)

解决地上没有阴影的问题
Tampon-L “Carte d’ombre”

基本思路:将之前的公式里source做一定的限制,利用P和S的距离是否是该方向上最小的判断物体是否能被S照亮。(最短距离才能被照亮)

之前:
I = ( C : I a ) + ∑ S ∈ s o u r c e [ k d ( L ⋅ N ) + ( C : I s ) ] + ∑ S ∈ s o u r c e [ k s ( V ⋅ R ) + n I s ] I = (C:I_a) + \sum_{S \in source} [k_d(L\cdot N)_+(C:I_s)] + \sum_{S \in source} [k_s(V\cdot R)^n_+ I_s] I=(C:Ia)+Ssource[kd(LN)+(C:Is)]+Ssource[ks(VR)+nIs]
现在:
I = ( C : I a ) + ∑ S ∈ P能看见的source [ k d ( L ⋅ N ) + ( C : I s ) ] + ∑ S ∈ P能看见的source [ k s ( V ⋅ R ) + n I s ] I = (C:I_a) + \sum_{S \in \text{P能看见的source}} [k_d(L\cdot N)_+(C:I_s)] + \sum_{S \in \text{P能看见的source}} [k_s(V\cdot R)^n_+ I_s] I=(C:Ia)+SP能看见的source[kd(LN)+(C:Is)]+SP能看见的source[ks(VR)+nIs]

缺点:

  1. 只能适用于Ombre nette的情况,因为Ombre douce需要多个光源,这就需要计算很多个L-Buffer,实际上不可能。
  2. 有锯齿(Effet de crénage),因为L buffer是由离散化得到的。特别的,当物体里光源越远,所需要的采样的点越多。

2.2.2 Placage d’environnement ❓

解决有反射能力物体不能显示周围环境的问题
是一种制造Faux Reflets的方法,常在广告中利用真实图片投影在一个物体上

Hyp:

  • Reflets sur un object isolé, scène très loin. [为了近似平型光射出?]

想法:将贴图的点通过反射定律反馈给人眼。
在这里插入图片描述
优点:

  1. une très bonne perception du relief de l’objet auquel il est appliqué, et donne une complexité intéressante aux reflets.
    缺点:
  2. ne se reflète pas lui-même, mais reète le ciel et la terre, en dépit des zones de ces derniers qui devraient lui être cachées.

2.2.3 Effets de transparences

🌟 因为Rendu Projectif中是一个个独立地处理物体,所以在Rendu Projectif的过程中得到réfraction是不可能的。

透明度实现的想法:

  • 不显示当前物体颜色,显示它之后物体的颜色
  • 🌟Mélange (Blending): 先显示所有objets Opaques,然后由远到近显示objets transparents。对每一个Pixel上的颜色做线性插值。

I ( P ) : = α I ( P ) + ( 1 − α ) I ( F , P ) I(P):=\alpha I(P) + (1-\alpha)I(F,P) I(P):=αI(P)+(1α)I(F,P)

α = 1 \alpha =1 α=1 = Transparent.

Billboard:
采用物体颜色(材质)进行贴图,alpha=1为透明。

2.3 其他的一些方法(不再使用Rendu Projectif)

2.3.1 Lancer de rayons (Ray Tracing)

优点:

  1. 能显示Ombre Portée (其实原理和L-Buffer类似)和Reflets(如réfraction)
    缺点:
  2. 不能用于Source étendue来得到ombre douce

在这里插入图片描述
思路:

  1. 从相机到image上的一个像素连线得到一束光线
  2. 顺着这束光线移动,碰到了一个物体就记录它的 I ( P ) I(P) I(P) (利用L-Buffer版本的,即如果它在ombre portee就不考虑source对他的影响),然后接着看它的反射光和折射光的移动,对之前的结果 I ( P ) I(P) I(P)进行加权。
  3. 重复2.若干次

2.3.2 La radiosité (radiosity)

优点:

  1. 能用于Source étendue来得到ombre douce
    缺点:
  2. Sans reflet
  3. 只能用于Objet Opaque

toutes les facettes de la scène (supposées opaques) sont considérées comme des sources de lumière (car elles renvoient une partie de la lumière reçue).

每次选择最亮的光源进行计算 -> la scène s’éclairer progressivement.

2.3.3 Le placage de photons (photon mapping)

将前两种方法汇总起来了
优点:

  1. 能显示Ombre Portée和Reflets
  2. 能用于Source étendue来得到ombre douce

2.3.4 Le tracé de chemins bidirectionnel (bidirectional path tracing)

结合了avantages du lancer de rayons (convergence relativement rapide) 和 du placage de photons。

3. Principes de modélisation 3D

3种方法:

  1. Modélisation procédutale [自动生成]
  2. Modélisation interactive [Système de modélisation,可以修改细节]
  3. Reconstruction。
    在这里插入图片描述

3.1 Modélisation procédurale

定义:
Toute méthode permettant de créer des objets ou une scène 3D via un programme, ce dernier prenant éventuellement en entrée un chier de spécification.

Primitives géométriques (geometric primitives)
基本的几何图形

3.1.1 Modélisation Constructive: Arbres CSG

Arbres CSG (Constructive Solid Geometry)

  • 叶子节点是基本几何图形
  • 节点是基本操作:Union, intersection, difference

3.1.2 Fractales [Récursif]

缺点:缺少contrôle directe.

Fractale
定义:
Une fractale, est un objet mathématique (courbe, surface, volume…), dont la structure est invariante par changement d’échelle.

Dimension Fractacle
在这里插入图片描述

例子1:创建一个山脉
每次在三角形的边上随机选取一个点,然后根据边的长度乘上一定的比例系数来移动点。

例子2:Brin d’herbe
注意到草叶可以由一个以随机方向和速度发射到空中的粒子的弹道轨迹的一部分来模拟,灌木和树木可以被看作是这样的轨迹,每个粒子都会沿着这个轨迹发射子粒子,而且是在几个递归层次上(对于冷杉树来说,一直到针叶)。

3.1.3 Systèmes de ré-écriture | L-systèmes aux grammaires de formes

Règles de réécriture
在递归的时候制定了一些规则。

这种循环的方式被推广至了一般的情况:

  • 一开始的形状
    • 将一个形状用多个其他的形状替代
      • 用一定的概率使用一些指定好的规则
      • 在改变形状的过程中参数是随机的
  • 一直修改直到有最后的形状
    在这里插入图片描述
    Grammaires de forme
    Après génération, seules les formes terminales sont affichées.
    在这里插入图片描述

3.2 Modélisation interactive

软件一般提供:création, déformation和assemblage的功能。

courbes et surfaces splines (spline curves and surfaces)
优点:

  • 因为由equation paramétrique给出,所以不需要担心résolution
  • 允许contrôle local intuitif

Rq:

  1. Notez que les surfaces splines font partie des représentations par bord (boundary representations - BREP)

Rq:Spline

  • les points de contrôle doivent être donnés sour forme de grille. [而不是liste]

3.2.1 Les courbes splines | Polynomial & Rationnel

Points de contrôle
Contrôle locale

Courbe spline:

有2种,Polynomial 和 Rationnelle
对于多项式函数的线性组合构成的曲线,多项式函数(support compact -> Contrôle locale)

Une courbe paramétrique C(u) plane ou gauche (une courbe non plane) dont l’équation est une combinaison polynomiale ( P ( X ) P(X) P(X)) ou rationnelle (quotient de polynômes) P ( X ) Q ( X ) \frac{P(X)}{Q(X)} Q(X)P(X) des coordonnées des points de contrôle créés par l’utilisateur :
C ( u ) = ∑ i F i ( u ) P i C(u) = \sum_i F_i(u) P_i C(u)=iFi(u)Pi

  • Fonction de base: F i ( u ) F_i(u) Fi(u)
    • 🌟 Fonction de base的个数定义了degré de la courbe
  • Segment de courbe: C i ( u ) C_i(u) Ci(u),每一个segment是一个 F i ( u ) F_i(u) Fi(u)的support。

🌟
Courbe Spline Rationnelle

  • P ( X ) Q ( X ) \frac{P(X)}{Q(X)} Q(X)P(X)
  • 如 NURBS (Non Uniform Rational B-Splines)
  • 常用于CAO,用来表示准确的弧线

🌟 我们课内只研究
Courbe Spline Polynomiale Uniforms

  • P ( X ) P(X) P(X)
  • Uniform表示参数 u ∈ [ 0 , 1 ] u \in [0,1] u[0,1]是一个constant的区间。

3.2.2 Courbes splines d’interpolation

n 个点 可以用来确定 a 1 x 1 + . . . . + a n − 1 x n − 1 + a n a_1x_1+....+a_{n-1}x_{n-1}+a_n a1x1+....+an1xn1+an
几个点求解几个参数 [如2个点可以用来求解 y=ax+b]

Spline Cubique

  • Degré 3, u最高3次
    C i ( u ) x = a 0 + a 1 u + a 2 u 2 + a 3 u 3 C i ( u ) y = b 0 + b 1 u + b 2 u 2 + b 3 u 3 C i ( u ) z = c 0 + c 1 u + c 2 u 2 + c 3 u 3 \begin{aligned} C_i(u)_x & = a_0 + a_1 u+ a_2 u^2 +a_3 u^3 \\ C_i(u)_y & = b_0 + b_1 u+ b_2 u^2 +b_3 u^3 \\ C_i(u)_z & = c_0 + c_1 u+ c_2 u^2 +c_3 u^3 \\ \end{aligned} Ci(u)xCi(u)yCi(u)z=a0+a1u+a2u2+a3u3=b0+b1u+b2u2+b3u3=c0+c1u+c2u2+c3u3

根据不同的求解参数的方法(无论哪种方法,对于一个线段 i i i我们只需要4个方程),我们有如下的3种方案:

  • Courbes d’Hermite d’ordre 1
  • Courbes d’Hermite d’ordre 2
  • Spline Cardinales

Courbes d’Hermite d’ordre 1

  • C i ( 0 ) = P i C_i(0)=P_i Ci(0)=Pi
  • C i ( 1 ) = P i + 1 C_i(1)=P_{i+1} Ci(1)=Pi+1
  • C i ′ ( 0 ) = D i C_i'(0)=D_{i} Ci(0)=Di, D i D_{i} Di是用户指定的在线段i开始处的导数
  • C i ′ ( 1 ) = D i + 1 C_i'(1)=D_{i+1} Ci(1)=Di+1

每一个限制条件对应3个维度,所以一共有4*3个方程。对应 a 0 , . . . , a 3 , b 0 , . . . , c 3 a_0,...,a_3,b_0,...,c_3 a0,...,a3,b0,...,c3这12个参数。因此有唯一解。

Courbes d’Hermite d’ordre 2

  • C i ( 0 ) = P i C_i(0)=P_i Ci(0)=Pi
  • C i ( 1 ) = P i + 1 C_i(1)=P_{i+1} Ci(1)=Pi+1
  • C i − 1 ′ ( 1 ) = C i ′ ( 0 ) C_{i-1}'(1)=C'_{i}(0) Ci1(1)=Ci(0),连接处导数相同
  • C i − 1 ′ ′ ( 1 ) = C i ′ ′ ( 0 ) C''_{i-1}(1)=C''_{i}(0) Ci1(1)=Ci(0)

可以解的原因是需要给定第一个点的一、二阶导数,然后就可以确定 C 0 C_0 C0然后就一次可以慢慢求解 C i C_i Ci

缺点:

  • 因为线段i需要i-1的导数,i-1需要i-2的,等等。因此Contrôle local est perdu.

Spline Cardinales:
对Hermite d’ordre 1的改进,无需用户给定 D i D_i Di

  • C i ( 0 ) = P i C_i(0)=P_i Ci(0)=Pi
  • C i ( 1 ) = P i + 1 C_i(1)=P_{i+1} Ci(1)=Pi+1
  • C i ′ ( 0 ) = k ( P i + 1 − P i − 1 ) C_i'(0)=k(P_{i+1}-P_{i-1}) Ci(0)=k(Pi+1Pi1), D i D_{i} Di是用户指定的在线段i开始处的导数
  • C i ′ ( 1 ) = k ( P i + 2 − P i ) C_i'(1)=k(P_{i+2}-P_{i}) Ci(1)=k(Pi+2Pi)

🌟Rq:

  • k: “Tension”,一般 k = 0.5 k=0.5 k=0.5
  • Localité d’ordre 4: 每一个线段 C i C_i Ci需要4个Point de contrôle,每一个Point de contrôle也会影响4条线段。

3.2.3 Courbes splines d’approximation

Courbes splines d’approximation:
有时候我们为了得到Courbe lisses,我们希望曲线是C2的,而不一定要完全通过我们之前定义的点。

为了减少此类Courbes的Parasite,我们对它进行了如下的2个限制:

  1. Enveloppe Convex
    Chaque segment de courbe est situé dans l’enveloppe convexe des points qui le dénissent.
  2. Courbe Régularissante
    Tout hyper-plan (toute droite, en 2D) coupe la courbe un nombre inférieur ou égal de fois par rapport au nombre de fois où il coupe le polygone de contrôle (la courbe polygonale reliant les quatre points).
    在这里插入图片描述
    上图中由 P 0 , P 1 , . . . , P 6 P_0,P_1,...,P_6 P0,P1,...,P6构成的多边形记为 C ‾ \underline{C} C,我们希望找到一个courbe C,使得对于任何Hyperplan D D D 它和C的交点要小于它和 C ‾ \underline{C} C的交点。

上面我们定义了怎么衡量一个曲线靠近 C ‾ \underline{C} C,下面,我们考虑怎么求解具体参数: u k u_k ukPoint de contrôle
【Bspline cubique uniforme】
每一个点都与左边两个、右边两个点有关:Localité d’ordre 4.
我们有4段线段 f 0 , . . . , f 3 f_0,...,f_3 f0,...,f3,如果取Cubique的话一共有4*4=16个参数,其中连续性,一二阶导一共可以列出15个方程。
最后一个方程说的是所有线段的起始点这个Point de contrôle加权之后的结果为1。
【Bspline cubique uniforme Solution Unique】

3.2.4 Notation Matricielle ❓

C i ( u ) = ( u 3 , u 2 , u , 1 ) M ( P i − 1 P i P i + 1 P i + 2 ) C_i(u)=(u^3,u^2,u,1)M \begin{pmatrix} P_{i-1} \\ P_{i} \\ P_{i+1} \\ P_{i+2} \end{pmatrix} Ci(u)=(u3,u2,u,1)MPi1PiPi+1Pi+2

在这里插入图片描述

3.2.5 Les Surfaces spline

Une surface spline est une surface paramétrique S(u; v) dont toutes les courbes obtenues en fixant la valeur de u ou de v sont des courbes splines. Ces surfaces, sont, mathématiquement parlant, des “produits tensoriels” de courbes splines. Elles sont contrôlée par l’utilisateur grâce à la spécification d’une grille de points de contrôle Pij , et définies par une équation analogue à l’équation (3.1) pour les courbes :
【Surfaces Splines】
S i , j ( u , v ) = ( u 3 , u 2 , u , 1 ) M ( P i , j ) M t ( v 3 , v 2 , v , 1 ) t S_{i,j}(u,v)=(u^3,u^2,u,1) M (P_{i,j}) M^t (v^3,v^2,v,1)^t Si,j(u,v)=(u3,u2,u,1)M(Pi,j)Mt(v3,v2,v,1)t
其中
P i , j P_{i,j} Pi,j是16个Point de contrôle,最终的结果是利用 F i , j F_i,j Fi,j对这16个点进行加权之后得到的。

La surface complète est obtenue en utilisant les points de contrôle de la grille 16 par 16, et en décalant d’une ligne ou d’une colonne pour calculer le carreau voisin.

4. Les Textures

之前我们学习的方法可以让我们直接创建一个Maillage,或者通过échantillonner une surface paramétrique.
只单纯利用颜色插值的方法不能实现:

  1. 颜色的细微变化
  2. Illusion de relief

4.1 Appliquer des variations de couleur à un objet

4.1.1 Texture 2D | Placage, Projection

  • [Texture和物体的maillage之间相互联系的方法]
  • L’association entre les pixels de la texture et le maillage de l’objet peut alors être fait
    • soit par plaquage
    • soit par simple projection.

Plaquage:
f : P ( x , y , z ) → ( u , v ) , ( θ , z ) → ( u , v ) , ( θ , ψ ) → ( u , v ) f: P(x,y,z) \to (u,v), (\theta,z) \to (u,v), (\theta,\psi) \to (u,v) f:P(x,y,z)(u,v),(θ,z)(u,v),(θ,ψ)(u,v)
将物体的一个像素点对应到Texture上的一个像素点上。

  • 一般来说:我们最后再用Texture,避免在用了Texture再Déformation。

缺点:

  • 需要考虑物体的形状,否则会有distorsion(地球仪的例子)
  • 只有sur un objet plan或者 sur tout autre objet développable dans un plan (cylindre, cône…),la texture pourra être plaquée sans distorsion.

Projection de la texture

  • 将Texture projeter sur un objet 3D.
  • 物体上每一个点的纹理坐标是这个点从放置在纹理后面的视频投影仪上看到的坐标(u; v)(这可以通过投影渲染管道计算出来)。因此,所有投射在纹理的同一部位的三维物体的区域都有相同的图案。
    在这里插入图片描述
    优点:
  • 避免了Placage函数的计算。

这种方法在利用照片重建物体图像的时候比较常用。

4.1.2 Textures 2D à motif répétitifs

  • 通过存一个图,多次利用的方式节省资源消耗。
  • topologie torique (环)

🌟 缺点:对于Texture Orienté,因为有立体折叠的因素在,所以不一定能对上。
在这里插入图片描述
改进1:Texture en forme de traingle équilatéral
limite:

  • 只能对textures isotropes有效。
    缺点:
  • Répétition apparentes
  • Distorsions

改进2:
先大块填充物体表面,然后将Texture切成小块尝试和已经和填充好的物体表面进行匹配。

limite:

  • 只是一个"trompe en l’oeil",因为有些数学上无法实现的Placage,如:
    【Pattern-based,1】

4.1.3 Textures volumiques - Texture procédurale

此时的Placage为: f : P ( x , y , z ) → ( u , v , w ) f: P(x,y,z) \to (u,v,w) f:P(x,y,z)(u,v,w)

  • 因为此时要存的是一个volume T ( u , v , w ) T(u,v,w) T(u,v,w),比较消耗存储空间。所以Texture volumique一般只通过Textures procédurale的形式实现(如Bruit ),它并不存储,只在最后显示的时候进行计算。

4.2 Synthèse de textures (材质的生成)

4.2.1 Textures de Perlin

Bruit de Perlin:
Un bruit fractal procédural.

  • 它可以把原来图像中的niveau de gris当作一个altitude。

产生方法:

Fonction de base 1D
【Bruit de Perlin】

  • 我们随机选取若干个点 V ( x ) ∈ [ 0 , 1 ] V(x) \in [0,1] V(x)[0,1],每两个相邻点之间的间距为1
  • 对这些点进行插值得到 B ( x ) B(x) B(x)
  • 如果需要角度更尖一点,我们使用 B ‾ ( x ) = ∣ 2 B ( x ) − 1 ∣ \underline{B}(x)=|2B(x)-1| B(x)=2B(x)1

最后:

T ( x ) = ∑ 1 2 i B ( 2 i x ) T(x)=\sum \frac{1}{2}^i B(2^ix) T(x)=21iB(2ix)

Rq:

  • 这是一个fractale的信号,因为它是un signal auto-similaire à différentes résolutions.

为了得到2D和3D的Bruit,我们引入Permutations non circulaires P 1 , P 2 P_1,P_2 P1,P2,Bruit的dim是看输入的变量的,如 T ( x ) T(x) T(x)就是1维的Bruit。

2D:对于 ( x , y ) (x,y) (x,y)这个点增加Bruit
T 2 ( x , y ) = T 1 ( ( x + P 1 ( y ) ) m o d ( n ) ) T_2(x,y)=T_1((x+P_1(y))mod (n)) T2(x,y)=T1((x+P1(y))mod(n))

3D
T 3 ( x , y , z ) = T 1 ( ( x + P 1 ( y ) + P 2 ( z ) ) m o d ( n ) ) T_3(x,y,z)=T_1((x+P_1(y)+P_2(z))mod (n)) T3(x,y,z)=T1((x+P1(y)+P2(z))mod(n))

具体使用方式:

  • Image: 需要2维的Bruit de Perlin
  • Volume:需要3维的Bruit de Perlin
    【Bruit de Perlin 具体使用方法】

4.3 Extension: Texturer pour ajouter des détails

之前我们仅仅把Texture看作是一副图片来用,但实际上我们还可以更改局部的材质、反射率、透明度等。

4.3.1 Plaquage de bosses (Bump Mapping)

  • 特点:只改变了点的法向量,使得人感觉它有un motif en relief,但实际上物体轮廓不变,因此影子形状不变。
  • 原理:
    建设我们输入一幅图 I ( u , v ) I(u,v) I(u,v),假设物体凹凸程度和颜色大小成正比,因此我们希望用户看到的表面应该是现在的表面沿着当前法向平移之后的结果:
    S ′ ( u , v ) = S ( u , v ) + I ( u , v ) N ( u , v ) S'(u,v)=S(u,v)+I(u,v)N(u,v) S(u,v)=S(u,v)+I(u,v)N(u,v)
    因为 N ′ ( u , v ) = ( ∂ S ∂ u , ∂ S ∂ v ) N'(u,v)=(\frac{\partial S}{\partial u},\frac{\partial S}{\partial v}) N(u,v)=(uS,vS)
    所以
    N ′ ( u , v ) = N ( u , v ) + ∂ I ∂ u N ∧ u + ∂ I ∂ v N ∧ v N'(u,v)=N(u,v)+\frac{\partial I}{\partial u} N \wedge u+\frac{\partial I}{\partial v} N \wedge v N(u,v)=N(u,v)+uINu+vINv
    因此,我们只要让当前表面上(u,v)的法向量变为 N ′ ( u , v ) N'(u,v) N(u,v)就可以起到迷惑人的作用了。

法向量的求解:
比如 a x + b y + c z + d = 0 ax+by+cz+d=0 ax+by+cz+d=0的法向量就是 ( a , b , c ) (a,b,c) (a,b,c),更一般地,对于 F ( x 1 , . . . , x n ) = 0 F(x_1,...,x_n)=0 F(x1,...,xn)=0求导: 0 = d F = a 1 d x 1 + ⋯ + a n d x n = ( a 1 , . . . , a n ) ⋅ ( x 1 , . . . , x n ) 0=dF=a_1dx_1+\cdots+a_ndx_n=(a_1,...,a_n)\cdot(x_1,...,x_n) 0=dF=a1dx1++andxn=(a1,...,an)(x1,...,xn),而后者在曲面上,所以前者是平面的法向量。

4.3.2 Plaquage de déplacements

在rendu的时候,直接利用 S ′ ( u , v ) = S ( u , v ) + I ( u , v ) N ( u , v ) S'(u,v)=S(u,v)+I(u,v)N(u,v) S(u,v)=S(u,v)+I(u,v)N(u,v)改变物体的轮廓。

4.3.3 Les Texels

Texels: Texture Elements

  • 类似于3维的Texture planes à topologie torique
  • 可以用来批量种树

在这里插入图片描述

4.4 Problèmes d’aliassage

4.4.1 Artefacts visuels liés à l’échantillonnage

产生原因:

  • 当远处的物体很小,就有可能很多的物体“挤”在同一个像素点上,因此该像素点不能被正常显示。或者像素采样过于稀少。
  • 因为最后产生的图像的像素点大小的限制,导致远处采样频率没有物体出现频率大。因此Problèmes d’aliassage在我们使用Texture de motifs répétitifs的时候更加明显。

Rq:一般取像素点正中心的面的颜色作为这个像素点的颜色。
在这里插入图片描述

4.4.2 Solution: Post Filtrage | Pyramide d’images ❓

Post Filtrage

  • 思路:首先生成一张比我们目标清晰度更高的图片, 然后Filtrer(如每4个像素取一个平均值)
  • 问题:只是将aliassage模糊了一点,问题依旧存在。

Pyramides d’images

  • 对于近的物体使用更高清的图片(小的)
  • 对于远的物体使用大的图片。(避免很多个Texture出现在同一个像素点里。)
    【解决办法】

5. Animation Descriptive

Animation Descriptive:用户画出物体的关键帧,然后由软件填补相邻两个关键帧的部分。[对Position,orientation, formes de modèle 3D进行插值]
Animation par modèle générateur:
用户导入物体后,直接根据一些物理定律得到动画

5.1 Interpolation des positions

目的:得到trajectoire du repère local dans lequel chaque objet de la scène est définie。[即物体自己坐标系远点在世界坐标系中的位置。]
问题:因为默认每一段的时间是相同的,可能导致物体运动速度忽快忽慢。
Sol: Re-paramétrage C ( t ) C(t) C(t)
原先: C ( u ) C(u) C(u)
现在: C ( u ( t ) ) , u ( t + d t ) = u ( t ) + V ( t ) d t C(u(t)),u(t+dt)=u(t)+V(t)dt C(u(t)),u(t+dt)=u(t)+V(t)dt

5.2 Interpolation des orientations

  • 可以用Courbe Spline进行插值。
  • 插值的对象有下面3种。

5.2.1 Matrices de rotation

想法:对33的Matrices de rotation进行插值(而不是44的!)
步骤:

  1. 用Courbe splines的方法对于相邻两帧的3*3矩阵进行插值
  2. 对插值得到的矩阵进行Re-orthonormalisation。

性质:Matrices de rotation一定是Orthonormale(Ortogonale + Det =1)的。

问题:
直接对相邻两帧的3*3矩阵进行线性组合并不能得到Orthonormale的矩阵(因为Det并不一定为1) -> 不能得到合理的Rotation矩阵。

Sol:
Re-orthonormalisé(但并不一定所有的矩阵都可以Orthonormalisé)

5.2.2 Angles d’Euler | Blocage de cardan ❓

  • 使用 ( ψ , θ , ϕ ) (\psi,\theta,\phi) (ψ,θ,ϕ)三个角度表示,分别为绕z轴转的角度,绕x轴转的角度,绕z轴转的角度。
  • 只要对它进行插值即可。

问题:

  • Les calculs ne sont pas invariants par rotation.
  • Résultat non intuitif
  • Blocage de cardan(失去一个自由度)
    【**Blocage de Cardan**】

5.2.3 Quaternions

  • Base: ( 1 , i , j , k ) (1,i,j,k) (1,i,j,k)
  • Elément Neutre: ( 1 , 0 , 0 , 0 ) (1,0,0,0) (1,0,0,0)
  • q的模长: q r 2 + q p ⋅ q p q_r^2+q_p\cdot q_p qr2+qpqp
  • 对于一个Quaternion Unitaire: q − 1 = ( q r , − q p ) = q ‾ q^{-1}=(q_r,-q_p)=\overline{q} q1=(qr,qp)=q
    在这里插入图片描述
    性质:
  1. Composition de deux rotations = 2个相乘
    q ( α 1 , N 1 ) ∘ ( α 2 , N 2 ) = q ( α 1 , N 1 ) ⋅ q ( α 2 , N 2 ) q_{(\alpha_1,N_1)\circ (\alpha_2,N_2)}=q_{(\alpha_1,N_1)}\cdot q_{(\alpha_2,N_2)} q(α1,N1)(α2,N2)=q(α1,N1)q(α2,N2)
  2. q ( − α , N ) = q ( α , N ) ‾ = q ( α , N ) − 1 q_{(-\alpha,N)}=\overline{q_{(\alpha,N)}}=q_{(\alpha,N)}^{-1} q(α,N)=q(α,N)=q(α,N)1
  3. 对于 V ∈ R 3 V \in \mathbb{R}^3 VR3施加一个Rotation ( α , N ) (\alpha,N) (α,N)
    ( 0 , R ( V ) ) = q . ( 0 , V ) . q ‾ (0,R(V))=q.(0,V).\overline{q} (0,R(V))=q.(0,V).q

5.2.4 SLERP (Spherical Linear intERPolation)

  • 对于Quaternion插值的一种简单想法就是(LERP)
    q ( t ) = q 0 ( 1 − t ) + q 1 t q(t)=q_0(1-t)+q_1t q(t)=q0(1t)+q1t,问题是它会忽快忽慢。
  • 因此,我们可以使用SLERP。(鉴于每一个quaternion都可以用球面上的一个点表示。)
    q ( t ) = q 0 s i n ( ( 1 − t ) w ) + q 1 s i n ( t w ) s i n ( w ) q(t)=\frac{q_0sin((1-t)w)+q_1 sin(tw)}{sin(w)} q(t)=sin(w)q0sin((1t)w)+q1sin(tw)
  • 对于多个点我们可以用spline插值的方法得到
    【Quaternions Interpolations】

5.3 Animation des solides articulés

5.3.1 Représentation et animation

Coordonnées généralisées: C ( t ) C(t) C(t)
用于表示一个solide articulé。

  • C ( t ) C(t) C(t)的大小由其Degrés de liberté确定。

C ( t ) = ( x 0 , y 0 , z 0 , q 0 , ⋯   , α i , ⋯   ) C(t)=(x_0,y_0,z_0,q_0,\cdots,\alpha_i,\cdots) C(t)=(x0,y0,z0,q0,,αi,)

les premières coordonnées représentent la position suivie de l’orientation q0 de la racine (correspondant elle-même à plusieurs coordonnées, selon la représentation choisie), suivi des angles α i \alpha_i αi pour un ensemble de rotations des éléments par rapport à des axes prédénis dans le repère de leur parent respectif.

5.3.2 Cinématique directe et Cinématique inverse

Cinématique directe:
chaque position et chaque orientation constituant les degrés de liberté d’un modèle articulé est spécifié à des instants clés puis interpolée.

Cinématique inverse: [直接控制末端]
calculer automatiquement les angles intermédiaires nécessaires pour obtenir des positions et orientations clés spéciées dans le repère du monde, pour les extrémités d’une chaine cinématique.

问题:可能由很多种选择。
Sol:最一些限定,如最小化两帧之间变换的角度,或者使得物体重心更加平衡。

【Cinématique inverse】

5.4 Interpolation des formes

5.4.1 Interpolation de maillages-clés

  • 物体自身坐标系下(repère local)引入formes clés

5.4.2 Interpolation multi-cibles

  • 预先定义一些Cible,如一个人不同的表情。
  • Spline插值的时候可能会经历一些列不同表情。

【Interpolation multi-cibles】

5.4.3 Principes de l’animation expressive

  • 如 l’étirement ou la compression des formes pour accompagner leur accélération ou décélération.
  • Anticipation: Préparer le spectateur en déformant un objet ou un personnage dans le sens contraire juste avant
    qu’un mouvement ne démarre.
    [如一个人要快速跑之前会先收缩]
  • Continuité dans le mouvement: Accompagner l’arrêt d’un objet par une déformation donnant l’impression que chacune de ses parties, ou que chacun de ses membres pour un personnage, continue à avancer.
    [如一个人停下来还在会向前冲一段距离]

6. Animation par modèles générateurs

例子:

  1. L’animation par modèle physique
  2. L’animation comportementale [利用IA设计人物的行为和动作,如NPC(Non Player Character)]
    décrit les lois de comportement des personnages autonomes dans les mondes virtuels (也可以用于游戏中针对用户操作的实时反馈,即有交互)

用户提供:

  • Lois, modèles et valeurs des paramètres.
  • Conditions initiales.

好处:

  • 不需要用关键帧(Position clé)调整。例如,不用手动处理碰撞的情况
  • 定义了一系列的动作。

坏处:

  • 是间接的控制
  • 不稳定,稍微改变一些参数就有可能出现我们不希望的效果。 “Effet Papillon”

一般使用于:

  1. objets passifs,如水、烟、爆炸
  2. croissance rapide / npc的动作

例子:l’animation par systèmes de particules

  • tissu
  • liquide visqueux
  • la trajectoire d’un groupe d’animaux

6.1 Principe de l’animation par modèle physique

modèle physique的种类:

模型物理原理
Particules animéesPhysique du point
Brique animéePhysique du solide
Un cube élastique déformé par une balle rigideObjet déformable structuré
LiquideMatériau non structuré

6.1.1 Modèle et loi de mouvement

  • Modèle: Paramètres intrinsèques (masse…) + cinématiques (vitesse…)
  • Lois: Eq dérivées partielles → cinématique fct des forces appliquées

给出了一些例子:

在这里插入图片描述
其中 x x x是力 F F F的作用点, X X X是物体的重心。
在这里插入图片描述
Solides articulées
使用的是Coordonnées généralisées。
Modèle déformables structurés

  • Un objet élastique est un objet dont la forme courante dépend des forces appliquées à l’instant t, et qui revient donc immédiatement à sa forme intrinsèque, appelée “forme au repos”, lorsque les forces extérieures disparaissent.
  • L’objet est dit visco-élastique (记忆性,慢慢回弹) si le retour à la forme au repos n’est pas immédiat. Une notion de vitesse de déformation intervient alors dans les équations. Notons que ce modèle est plus proche que le précédent du comportement des objets du monde réel.
  • L’objet est dit plastique (塑形形变) si les déformations qui excèdent un certain seuil sont irréversibles. La forme au repos évolue alors au cours du temps, et la forme courante de l’objet dépend, de ce fait, de tout l’historique des déformations qu’il a subies.
    在这里插入图片描述

6.1.2 Discrétisation spatiale

  • 为了能计算物体的déformation我们需要discrétisation
  • 存在3种方法:
    Méthode Lagrangienne [点随着物体移动]
    Les méthodes Lagrangiennes échantillonnent l’objet par des points qui se déplacent avec la matière, les dérivées spatiales des quantités étant calculées par éléments finis.

Méthode Eulérienne [点在世界坐标系下取,点不懂]
Au contraire, les méthodes Eulériennes, surtout utilisées pour les fluides, discrétisent l’espace dans lequel se trouve l’objet via des points fixes, placés généralement sur une grille fixe. Ces derniers, permettent de suivre les quantités de matière qui entrent et sortent de la case de la grille qu’ils représentent, avec éventuellement un calcul plus simple des dérivées spatiales, par différences finies.

Mixte (particules + grille)

6.1.3 Boucle d’animation | Intégration temporelle

在这里插入图片描述

  • 利用F(t)得到V(t+dt),X(t+dt),发生的碰撞将在t+2dt的时候用到。

有3种积分的方式:

  • Euler explicite ( Δ t \Delta t Δt不能取得太大,否则不能收敛)
    v ( t + Δ t ) = v ( t ) + Δ t ⋅ F ( v ( t ) , x ( t ) , t ) / m x ( t + Δ t ) = x ( t ) + Δ t ⋅ v ( t ) \begin{aligned} v(t+\Delta t) & = v(t) + \Delta t \cdot F(v(t),x(t),t) / m\\ x(t+\Delta t) & = x(t) + \Delta t \cdot v(t)\\ \end{aligned} v(t+Δt)x(t+Δt)=v(t)+ΔtF(v(t),x(t),t)/m=x(t)+Δtv(t)
  • Euler semi-implicite
    v ( t + Δ t ) = v ( t ) + Δ t ⋅ F ( v ( t ) , x ( t ) , t ) / m x ( t + Δ t ) = x ( t ) + Δ t ⋅ v ( t + Δ t ) \begin{aligned} v(t+\Delta t) & = v(t) + \Delta t \cdot F(v(t),x(t),t) / m \\ x(t+\Delta t) & = x(t) + \Delta t \cdot v(t+\Delta t)\\ \end{aligned} v(t+Δt)x(t+Δt)=v(t)+ΔtF(v(t),x(t),t)/m=x(t)+Δtv(t+Δt)
  • Euler implicite
    v ( t + Δ t ) = v ( t ) + Δ t ⋅ F ( v ( t + Δ t ) , x ( t + Δ t ) , t ) / m x ( t + Δ t ) = x ( t ) + Δ t ⋅ v ( t + Δ t ) \begin{aligned} v(t+\Delta t) & = v(t) + \Delta t \cdot F(v(t+\Delta t),x(t +\Delta t),t) / m \\ x(t+\Delta t) & = x(t) + \Delta t \cdot v(t+\Delta t)\\ \end{aligned} v(t+Δt)x(t+Δt)=v(t)+ΔtF(v(t+Δt),x(t+Δt),t)/m=x(t)+Δtv(t+Δt)

6.2 Détection et réponse aux collisions

6.2.1 Détection des collisions

当有一个更高维(更抽象)的表示方法后,可以加快collision的检测。

  • 假设我们所有模型一共有n个面,则一种暴力方法要 O ( n 2 ) O(n^2) O(n2)的复杂度。
1. Phase de détection large

目的:快速去除不可能相交的物体的表面。
注意:要选择合适的格子大小。

Grille de l’espace
我们将整个空间切分成若干个格子。

Volumes englobants
我们还可以在对在同一个Grille上的物体使用它的Volumes englobants来粗粗搜索。
【不同的Volumes englobants】

🌟🌟 Hiérarchies de volumes englobants

  • 利用像树一样的方式提前存储Volumes englobants, 但对于内部组成部件会移动、Objet déformable可能需要多次计算。
  • 经常用在游戏上,因为可以限制计算的时间,不必计算很精确的Intersection。

伪代码:
在这里插入图片描述

2. Phase de détection fine
  • 计算逻辑:
    【Phase de détection fine】

  • 一般只有在Facette A的一个顶点进入了另外一个 objet的volume englobant或者sous-volume englobant的情况下才进行这个phase。

6.2.2 Réponse aux collisions

  • 因为回到过去比较Couteux,所以一般就直接对intersetce之后的情况进行处理了。
1. Par implusions [Objet léger / Infiniment lourd]

Changement Brusque de vitesse
碰撞之前: V = V t + V n V = V_t + V_n V=Vt+Vn
碰撞之后: V = k t V t − k n V n V = k_t V_t - k_n V_n V=ktVtknVn
系数可以用来刻画表面粗糙程度。

Déplacement plus changement de vitesse

  • 上面的问题在于因为我们是等到物体之间相交了才做检测,实际上有可能物体已经陷进去了。
  • 所以得先投影再改变速度。
    在这里插入图片描述
    优点:
  • 对于Objet léger:vêtements, cheveux
    • 🌟 对于衣服,我们只考虑切向的速度,否则它会弹起来。
  • 对于Objet Lourd: corps d’un personnage比较准确。
    缺点:
  • 可能与物体真实轨迹产生偏差。
2. Par forces

Forces de pénalisation

  • 取物体相交最深的两个点 P 1 , P 2 P_1,P_2 P1,P2
  • 考虑作用力 F 1 = k ( P 2 − P 1 ) , F 2 = − F 1 F_1 = k(P_2-P_1), F_2 = - F_1 F1=k(P2P1),F2=F1
    缺点:
    分离速度有可能大于接近速度。

Forces de frottement
当两个互相接触的物体具有不同的速度
F 1 = c ( V 2 − V 1 ) F_1 = c(V_2-V_1) F1=c(V2V1)
F 2 = − F 1 F_2 = - F_1 F2=F1

Cas des objets déformables
使用一个面(intégrer les forces par unité de surface)

6.3 Les systèmes de particules

  • Un système de particules (particle system) est un ensemble de masses ponctuelles liées entre elles par des liaisons, qui permettent de calculer les forces d’interaction internes au système.
  • L’habillage géométrique du système de particules permet
    • soit de leur associer des éléments géométriques isolés,
    • soit d’utiliser leurs positions pour mettre à jour les degrés de liberté d’un modèle géométrique global (d’un maillage à une géométrie de plus haut niveau). [类似于Approche Lagrangienne,因为是取物体表面的点进行研究。]

6.3.1 Le modèles physiques particulaires

在这里插入图片描述

Les matériaux granulaires

  • 太近(小于d)会有反作用力

Les objets déformables structurés

  • Les systèmes masses-ressorts
  • 可以用于pour modéliser des matériaux visco-élastiques surfaciques (comme un tissu élastique,弹性绳)
  • volumiques (comme un cube de caoutchouc,橡胶块).
  • Ressorts Amortis F = − k ( x − x 0 ) − c x ˙ F=-k(x-x_0)-c\dot{x} F=k(xx0)cx˙
  • Ressorts de cisaillement (剪切力):图上斜线部分
  • Ressorts de flexion (弯曲):图上蓝色部分,可以用来防止布料折叠在一起。
  • 对于立体的Cube只有 Ressorts de cisaillement 和 Ressorts de structures.

Les matériaux déformables non structurés

  • 用于模拟面团,或者liquides。
    在这里插入图片描述

6.3.2 Modélisation des comportements de groupe

Biod
在以物体为中心,半径为 D m a x D_{max} Dmax(Rayon de perception de la créature)的区域里的东西会对物体产生作用力。

  • Des forces d’évitement à courte portée, leur permettant de ne pas entrer en collision : chaque particule est repoussée par chacune de ses voisines, via une force proportionnelle à l’inverse du carré de leur distance. [斥力]
  • Une autre force, similaire à un frottement, pénalise la différence de vitesse avec chaque voisine, permettant d’homogénéiser la vitesse au sein du groupe. Ce frottement est pondéré avec un poids qui décroit exponentiellement en fonction de la distance avec la voisine considérée. [摩擦力]
  • Enfin, une force d’attraction, proportionnelle au carré de la distance, attire chaque particule vers le centre de masses des particules dans son rayon de perception. Cela permet aux créatures assez proches de rester groupées [吸引力]

改进:

  • 每一个créature最易收到离他最近的物体的影响。
  • Champ de vision limité.
    在这里插入图片描述

7. Modélisation surfacique interactive

7.1 Modélisation constructive par surfaces splines

7.2.1 Création des parties d’une forme

将介绍3种方法

在这里插入图片描述

1. Surface de révolution 🌟
  • 用户指定一个轮廓。
  • 类似曲线的情况,若有n个点,实际能用的只有n-2个点,对应n-3条边。
  • 所以如果我们希望我们定义的n个点形状一个封闭的图形,即我们希望有n条边,即需要n+3个点,即需要重复前3个点。
    【Surface de revolution】
  • 类似地,如果是要一个旋转曲面闭合,我们也需要重复前三列的点。
2. Surface d’extrusion ❓

应该就是 Balayage axial ?

  • 使用repère de Frenet:
    【Frenet】

  • 依旧需要注意边界的情况,对于一个非环形物体,需要复制第一层和最后一层。

缺点:每一层的épaisseur都相同。
Sol: Cylindres généralisés créés par offsets

3. Cylindres généralisés créés par offsets

不是用Section扫描了,而是类似画个圈圈。

Offset à une distance: [每一个点都离chemin距离为d]

  • 定义:On définit l’offset à une distance d d d d’un chemin comme une courbe dont chaque point est situé à la distance d du chemin. [每一条曲线到中心距离都是d]
  • 2D下只有2个Offset,3D下有无数个:
    【Offset】
    🌟 问题:
    L’offset d’une courbe cubique n’est pas forcément cubique, et de ce fait l’offset d’une spline ne peut pas forcément être représenté par une spline.
    Sol:
    在这里插入图片描述
    Extrusion de forme libre
    【Extrusion de forme libre】
4. Création de primitives 的问题

在这里插入图片描述

7.2.2 Assemblage de parties

目的:组装我们已经创建好的Surface。

1. Assemblage du bord

在这里插入图片描述

  • 问题:边界上有相同数量的points de contrôle。[否则会有第三幅图左边出现fente的问题(discontinuité locale)。]
  • Sol: T-Splin
2. Assemblage perpendiculaire ❓
  • 除了把边界连上,还需要引入embranchement。
  • 可以将一个Surface plus large变成deux surfaces ourvertes.
    在这里插入图片描述
    垂直的情况
    在这里插入图片描述- Courbes fermées tracées sur une surface spline cubique ne sont pas elles-même des courbes cubiques

7.2.3 Déformations locales et globales

1. Déformation locales
  • Pour les surfaces splines cubiques chaque point de contrôle intervient dans la définition des 16 carreaux de surface les plus proches (on parle de “localité d’ordre 16”). ❓

  • Fermeture des extrémités (des cylindres généralisés):

    • 这种特殊的 Déformation locales 可以被自动化。

在这里插入图片描述
问题:

  • 因为每增加一个细节就会多出一列来,所以Les carreaux de surface spline ne sont pas idéal pour modéliser des formes avec des détails.
  • 此外,对于让物体膨胀这种操作实现起来比较麻烦。
2. Déformation globales par “Défomation de l’espace” | FFD

方法一:
在这里插入图片描述
一般在进行上面操作之前还需要将世界坐标系的z轴和物体的z轴对齐。

方法二:FFD (Free Form Deformation)
在这里插入图片描述

  • P i , j , k P_{i,j,k} Pi,j,k是Point de contrôle。

7.3 Création par raffinements successifs

  • Surfaces de subdivision: 用于电影和游戏,因为他们不需要很精确的表面表示。

7.3.1 Splines hiérarchiques

解决了之前修改细节需要添加一整列的缺点。

思路:在局部增加Grille。

  • Arborescence de surfaces définies par des grilles de contrôle [对于精细的结构再进行细化]
  • 有些点能动,有些点[Surface mère]不能动。
  • 可以实现老人脸上的皱纹。
  • 存储相对于Surface mère的相对位置。
    在这里插入图片描述
    优点:
  • Modèle compact: 24 points éditables au lieu de plus de 1000 [模型更紧凑,因为只有细节才会增加描述的点的数量]
  • Déformations à différentes échelles, dans n’importe quel ordre [可以在局部或者全局无顺序的改动]
  • 🌟 因为所有的细节都是相对于surface mère存储的,所有可以让用户选择不显示细节。因为细节都是当场通过Recursive的方法得到的。
    缺点:
  • Splines : Toujours les mêmes limitations topologiques

7.3.2 Les surfaces de subdivision

受到Splines hiérarchiques的启发。
无S(u,v)的方程。
可以Raffinements progressives.

在这里插入图片描述
在这里插入图片描述
Butterfly是插值,Loop是每次落在之前的面里面。

7.3.3 Surfaces de subdivision étendues | Surfaces de subdivision multi-résolution

这可以让人在局部控制一个点的高度。
在这里插入图片描述

7.4 总结:

2种构建模型的方法:

  1. Approche constructive
  2. Sculpture : déformations, raffinements

3种表示Surface的方法:

  1. Maillages
  2. Les splines restent les plus utilisées en CAO (NURBS)
  3. Les surfaces de subdivision pour les films d’animation 3D

问题:

  1. Coordonnées généralisées怎么理解?
  2. Surface splines cubique 16 ?
  3. FFD 计算的原理?
  4. Surface ouverte / fermé的区别?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值