2010-10-03 3 views
5

J'ai un ensemble de triangles connectés, coplanaires, c'est-à-dire un maillage 2D. Maintenant, j'ai besoin d'extruder quelques unités dans l'axe z. Le maillage est défini par un ensemble de sommets dont le rendu a un sens en s'alignant sur un tableau de triangles.Comment extruder un maillage 2D plat, en lui donnant une profondeur

Exemple Mesh:

sommets: (0,0,0), (10,0,0), (10,10,0), (0,10,0) < - (x, y, z) Triangles: (1, 2, 3) & (3, 4, 1) < - les nombres référencent ici la position d'un sommet au-dessus.

Donc ici nous avons un carré 2D. Maintenant, j'ai besoin d'ajouter plus de sommets et de triangles à cette liste pour faire une forme extrudée. Les triangles doivent être tournés dans le sens des aiguilles d'une montre, sinon ils sont retournés.

Existe-t-il un algorithme simple pour cela? Je vous remercie.

Répondre

10

En supposant que vous voulez extruder une distance z, vous devez suivre les étapes suivantes:

0) Soit n le nombre initial de sommets (4 dans votre exemple)

1) Pour chaque sommet dans votre tableau de sommets, ajoutez-y (0,0, z) et ajoutez le résultat à votre tableau de sommets, pour un total de 2 * n sommets. Donc, pour votre exemple, vous allez ajouter les sommets (0,0, z), (10,0, z), (10,10, z), (0,10, z) à votre tableau de vertex, pour un total de 2 * 4 = 8 sommets.

2) Créez une liste de bordures (par opposition aux bordures internes) pour votre maillage d'origine. Pour ce faire, créez une liste de toutes les arêtes du triangle (3 arêtes dans le sens des aiguilles d'une montre pour chaque triangle). Ensuite, supprimez les paires de bords égaux mais opposés (ce sont les bords internes). Pour votre exemple, vous commencerez avec 6 arêtes, et finirez avec 4 arêtes après avoir enlevé la paire de arêtes (3,1) et (1,3).

3) pour chaque triangle (a, b, c) de votre liste de triangles, créez un triangle correspondant (a + n, b + n, c + n). Ce seront les faces extrudées

4) Enfin, vous voulez créer les côtés de votre forme extrudée. Ajoutez les triangles (a, b, b + n) et (b + n, a + n, a) pour chaque arête (a, b) dans la liste des arêtes de limites créée à l'étape 2

C'est tout. En supposant qu'il n'y a pas de fautes de frappe de ma part, et qu'il n'y a pas de fautes de frappe de votre part, vous devriez maintenant avoir le maillage désiré.

+0

Que renferme-t-il dans cette réponse? – Skylion

+0

Oh, attendez n les étapes 3 et 3 sont les mêmes que dans un? – Skylion

+0

@Skylion - n est le même partout, c'est-à-dire le nombre initial de sommets. – brainjam

Questions connexes