INF443 Amphi 3: Modélisation 3d
- 1. Modélisation procédurale
- 2. Modélisation Interactive
- 2.0 Courbes et surfaces paramétriques 【看Poly】
- 2.1 Courbes et Surfaces "Splines"
- 2.2 Splines d'interpolation
- 2.2 Spline Cardinale (Catmull)
- 2.3 Courbes d'Hermite d'ordre 2
- 2.4 Bspline cubique uniforme3![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/987cd4012ffffbb47d22f971896795ee.png)
- 2.5 Surfaces Splines
两种方法:
- Modélisation procédurale
- Modélisation interactive [Graphiste,可以修改细节]
还有一种Reconstruction。
1. Modélisation procédurale
- Objet ou scène 3D crées par un programme
- 常利用循环来创建有很多重复元素的scène
例子:Arbres CSG(Constructive Solid Geometry)
叶子结点:Primitives géométriques
结点:操作,如交集、并集等
1.1 Ajout Récursif de détails : Les Fractales
例子2:Fractales
Flocon de Koch
Ensemble de Mandelbrot
Dimension Fractale D
例子:创建一个山脉
每次在三角形的边上随机选取一个点,然后根据边的长度乘上一定的比例系数来移动点。
例子:创建一个自然风景(1982) ❓
例子:L-Système
这种循环的方式被推广至了一般的情况:
- 一开始的形状
- 将一个形状用多个其他的形状替代
- 用一定的概率使用一些指定好的规则
- 在改变形状的过程中参数是随机的
- 将一个形状用多个其他的形状替代
- 一直修改直到有最后的形状
例子:房屋的创建
2. Modélisation Interactive
目的:让用户能自己直观地修改模型
例子:Maya,Sketch-Up
Approche Constructive
- 创建简单的形状
- 对其进行全局或者局部地修改
- 组装
- 重复1-3
希望有的性质:
Formes Libres (Free-Form Shapes)
Aide pour créer des formes lisses
Stockage
-> 并不直接使用Maillages
Représentation
Représentation par bord (surfaces)
- Maillages (surfaces discrètes)
- Splines, NURBS (surfaces paramétriques)
- Surfaces de subdivision et multi-résolution
Représentation volumiques
- Voxels (Volumes discrets)
- Surfaces implicites
2.0 Courbes et surfaces paramétriques 【看Poly】
Courbe:
C
(
u
)
C(u)
C(u)
Surface:
S
(
u
,
v
)
S(u,v)
S(u,v)
好处:
- 方便计算点的坐标
- 方便创建三角形
- 方便贴材质
2.1 Courbes et Surfaces “Splines”
目的:用户可以修改points de contrôle,曲线要么是C1或者C2的。
Courbes splines
对于每一个点
i
i
i都有一个对应的函数(Fontions de Base
F
i
F_i
Fi),然后加权得到曲线。
C
(
u
)
=
∑
i
F
i
(
u
)
P
i
C(u)=\sum_i F_i(u)P_i
C(u)=∑iFi(u)Pi
Contrôle Local
F
i
F_i
Fi à support compact. ❓❓❓
连续性
若
F
i
F_i
Fi是
C
k
C^k
Ck的,则曲线也是
C
k
C^k
Ck的。
Interpolation可以选用的函数:一定通过我们定义的几个点
- Courbes d’Hermite d’ordre 1
- Spline cardinale (dont celle de Catmull Rom)
- Courbe d’Hermite d’ordre 2 (non locale)
Approximation可以选用的函数:曲线不通过我们定义的几个点,但是受他们的限制。
- Courbes de Bézier (Interpolent les extrémités)
- Bspline cubiaue uniforme
- NURBS “Non Uniform Rational Bspline”
2.2 Splines d’interpolation
Courbes polynomiales de degré 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
- 我们可以看成有4个向量 ( a 0 , b 0 , c 0 ) (a_0,b_0,c_0) (a0,b0,c0)
- 这里的 C i ( u ) C_i(u) Ci(u)是在 P i P_i Pi和 P i + 1 P_{i+1} Pi+1之间的线段
- Contrôle local: Localité d’ordre 2
具体参数的确定:
C
i
(
0
)
=
P
i
,
C
i
(
1
)
=
P
i
+
1
,
C
i
′
(
0
)
=
D
i
,
C
i
+
1
′
(
1
)
=
D
i
+
1
C_i(0)=P_i,C_i(1)=P_{i+1},C'_i(0)=D_i,C'_{i+1}(1)=D_{i+1}
Ci(0)=Pi,Ci(1)=Pi+1,Ci′(0)=Di,Ci+1′(1)=Di+1
这样对于x坐标中的4个参数(
a
0
,
.
.
.
,
a
1
a_0,...,a_1
a0,...,a1),我们就有4个方程。
但是要用户手动控制
P
i
P_i
Pi和其导数
D
i
D_i
Di比较困难,我们希望有一个自动控制导数
D
i
D_i
Di的方法。
2.2 Spline Cardinale (Catmull)
C i ( 0 ) = P i , C i ( 1 ) = P i + 1 , C i ′ ( 0 ) = k ( P i + 1 − P i − 1 ) , C i + 1 ′ ( 1 ) = k ( P i + 2 − P i ) C_i(0)=P_i,C_i(1)=P_{i+1},C'_i(0)=k(P_{i+1}-P_{i-1}),C'_{i+1}(1)=k(P_{i+2}-P_{i}) Ci(0)=Pi,Ci(1)=Pi+1,Ci′(0)=k(Pi+1−Pi−1),Ci+1′(1)=k(Pi+2−Pi)
- tension k=0.5,k越大,斜率越大
- 曲线依旧是 a 0 , . . . , a 3 a_0,...,a_3 a0,...,a3 4个系数,即3次。
- Localité de degré 4 , classe C1
2.3 Courbes d’Hermite d’ordre 2
C i − 1 ( 0 ) = P i , P i = C i ( 0 ) , C i − 1 ′ ( 1 ) = C i − 1 ′ ( 0 ) , C i − 1 ′ ′ ( 1 ) = C i ′ ′ ( 0 ) C_{i-1}(0)=P_i,P_i=C_i(0),C'_{i-1}(1)=C'_{i-1}(0),C''_{i-1}(1)=C''_{i}(0) Ci−1(0)=Pi,Pi=Ci(0),Ci−1′(1)=Ci−1′(0),Ci−1′′(1)=Ci′′(0)
2.4 Bspline cubique uniforme3
上图中由 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,下面,我们考虑怎么求解具体参数:
每一个点都与左边两个、右边两个点有关:Localité d’ordre 4.
❓❓