2009-02-04 7 views
0

Lors de l'implémentation de mappage de texture sur un maillage polygonal standard à l'aide de l'algorithme habituel, vous pouvez rencontrer des problèmes de déformations le long de l'axe y suivre des bandes de rangées de quadrilatères de hauteur constante au lieu des sommets dans cette direction, capables de s'étirer indépendamment de celle le long de l'axe des x. J'y arrive parce que quand je définis les sommets du maillage, chaque rangée définit à la fois un sommet inférieur et un sommet supérieur, ce qui fait que la rangée supérieure de sommets d'une rangée partage la rangée inférieure des sommets de la rangée supérieure il. Bien que ce soit correct si vous ne faites que déformer le mesh le long des axes x ou z, si vous déformez le mesh le long de l'axe y sans en tenir compte, vous verrez que les rangées de quads agissent ensemble comme une bande de hauteur constante au lieu de rangées de points indépendants. Vous verrez une déformation du maillage le long de l'axe des ordonnées, mais vous verrez aussi une déchirure de la texture puisque ces bandes ne changent pas de largeur, ce qui entraîne des trous dans le maillage. Y a-t-il quelqu'un d'autre qui pourrait avoir des suggestions sur la meilleure façon d'appliquer un filtre de carte de déplacement (x, y) à un maillage polygonal construit de cette façon? Ou l'approche de définition du maillage doit-elle changer de manière fondamentale?Hauteurs de bande horizontales constantes dans un maillage polygonal en cours de déformation verticale (OpenGL ES 1.1)

Un exemple de l'algorithme de génération de maillage peut être vu sur ZEUS OpenGL|ES Tutorial on Texture Mapping.

Merci.

+0

Je crois que j'ai résolu mon problème particulier avec le filtre de déplacement que j'utilisais. Comme il était circulaire et basé sur un point arbitraire, je ne vérifiais pas si le déplacement de l'axe y était> 0 ou <0 avant de déplacer le sommet haut/bas. La déchirure est maintenant éliminée. –

Répondre

0

Ok permet de voir si je comprends d'abord la question. Si je vous comprends bien, vous essayez de rendre un patch mappé en texture. Mais quand vous essayez de tendre le patch dans le sens vertical pour qu'il devienne plus grand, les différentes bandes horizontales de votre mesh se déchirent et vous vous retrouvez avec plusieurs bandes horizontales de patch.

Est-ce exact? Si tel est le cas, le problème est dans l'algorithme de génération de maillage, le mappage de texture lui-même doit rester inchangé. De ce que je peux voir sur le lien fourni, les sommets entre chaque bande horizontale ne sont pas partagés, ils sont dupliqués. Donc, si vous mettez à l'échelle l'espacement entre les sommets supérieurs, vous devez également mettre à l'échelle la hauteur de la bande de sorte que les sommets inférieurs s'ajustent au sommet supérieur de la rangée suivante. Les principes de base de l'algorithme fonctionnent, vous avez juste besoin d'ajuster à la fois l'espacement des lignes et la hauteur des rangées. Lorsque vous comprenez un peu plus comment fonctionnent les listes primitives, vous pouvez en apprendre davantage sur les primitives indexées. Ceux-ci vous permettront réellement de partager des sommets au lieu de les dupliquer pour chaque primitive.

Espérons que ça aide.

+0

Oui, vous comprenez la question correctement et merci pour la perspicacité. Cela devrait me faire pointer dans la bonne direction. –

+0

En outre, cela utilise OpenGL ES 1.1 (iPhone) FYI ... –

Questions connexes