Description des macros

Voici tout d'abord une description des macros fournies dans le fichier "clothutil.inc":

ReadClothMesh(filename)

Cette macro permet de renseigner les variables globales n1 et n2, ainsi que le tableau Points[n1][n2], qui contient tous les points définis dans le fichier filename.

GetNormals(points, nx, ny)

Cette macro crée et calcule le tableau global Normals[nx][ny]. Celui-ci contient des vecteurs représentant les normales d'un mesh qui serait contitué par les valeurs du tableau points[nx][ny]. Les normales sont calculées en fonction de la variable globale Normal_Precision. Si cette variable n'st pas définie ou est égale à 0, les normales sont calculées à partir des 4 plus proches voisins. Si Normal_Precision est différente de 0, ce sont les 8 plus proches voisins qui sont utilisés.

DrawTriangles(points, nx, ny, uvon, file, filename)

Comme son nom l'indique, cette macro crée un série de triangle à partir des points du tableau points[nx][ny]. Si uvon est à true, des infos uv sont ajoutées à chaque triangles. Si file est à true, alors les triangles ne sont pas ajoutés à la scène, mais écrits dans le fichier filename. Cette macro devient obsolète avec POVMan0.71.3 (création du mesh directement par simcloth).

DrawSmoothTriangles(points, nx, ny, uvon, file, filename)

Même fonctionnement que la macro précédente, mais elle crée des smooth_triangles. Les normales sont calculées par la macro GetNormals(...), et la variable Normal_Precision est donc prise en compte. Cette macro devient obsolète avec POVMan0.71.3 (création du mesh directement par simcloth).

DrawDoubleSmoothTriangles(points, nx, ny, ep, uvon, uvep, file, filename)

Celle-ci est similaire au deux autres, mais crée un tissu avec une épaisseur ep. En fait, un deuxième tableau de points est créé, chacun à une distance ep de points[i][j], dans la direction inverse de la normale en ce point. uvep est un vecteur 2D représentant l'épaisseur, en terme de coordonnées uv, du joint entre les deux séries de points.

Comparatif des 3 macros de création de mesh

DrawTriangles
DrawSmoothTriangles
DrawDoubleSmoothTriangles