Quels sont les inconvénients de marquer chaque bord comme une couture lors du déballage d'un maillage?

9

Je suis un programmeur qui essaie d'apprendre un peu de modélisation 3D de base. Je suis raisonnablement à l'aise avec la modélisation géométrique de base et je peux dérouler et texturer des modèles simples. Mais j'ai une question ...

En ce qui concerne le déballage des modèles, tous les didacticiels soulignent la nécessité de marquer le moins de coutures possible lors du déballage d'un maillage. Ma question est, pourquoi? Je suppose que cela est super évident pour les personnes ayant une expérience de modélisation, mais pas pour moi (étant donné que mes efforts de texturation sont principalement limités à la génération d'AO ou de cartes normales).

Je suppose que c'est uniquement pour préserver la forme du modèle lorsqu'il s'agit de modifier la texture diffuse? Est-ce la seule raison pour laquelle vous ne voulez pas simplement couper chaque bord et disposer toutes les faces individuellement?

Je réalise que je montre ma totale ignorance du sujet en posant cette question, donc excuses, mais parfois les choses super évidentes sont les plus difficiles à trouver des réponses à .

NM01
la source

Réponses:

10

Chaque «couture UV» de votre modèle - c'est-à-dire chaque endroit où les faces du modèle sont continues tandis que la carte UV pour le même bord est découpée - est un problème à la fois pour les artistes et pour le matériel.

  • Il est plus difficile de texturer correctement le modèle. Cela est particulièrement vrai lorsque l'édition se fait directement sur la texture, en 2D, et non dans un programme de peinture 3D. Moins il y a de telles coutures, plus il est facile d'enrouler mentalement la texture autour du modèle.
  • Bien qu'un simple mélange puisse fonctionner pour la texture diffuse et certains autres types de texture, vous devez être très prudent avec des choses comme une carte normale à espace tangent. Pour ceux-ci, vous ne pouvez pas simplement fusionner (interpoler) linéairement entre les valeurs X et Y (généralement mappées sur R et B dans les visualiseurs de texture) sans que le vecteur normal résultant ne soit dénormalisé et la couture ne devienne visible (généralement sous la forme d'un peu plus sombre). "ligne") dans certaines conditions d'éclairage. D'un autre côté, essayer de le fixer dans la texture et de rendre les valeurs sur les deux bords UV proches ou identiques peut faire en sorte que la couture devienne visible car elle est anormalement plate par rapport au reste du modèle.
  • Les pixel shaders doivent faire plus de travail à chaque discontinuité (même si cela est généralement abstrait dans le matériel de nos jours), et arriver à frapper différents endroits de la mémoire pour récupérer les données de texture (qui est généralement le "chemin de code" moins optimisé dans le matériel) , au lieu de travailler habituellement avec des valeurs de texture spatialement proches.
  • Le mipmapping automatique (et très peu de magasins peuvent se permettre de retoucher manuellement les textures générées à basse résolution) interrompra tout le travail que vous et vos artistes avez fait pour rendre une couture invisible à la résolution par défaut.

Cela dit: si votre style artistique dicte que les faces du modèle sont clairement distinctes les unes des autres et qu'elles n'auront que des bords explicites "durs", rien de tout cela n'est un problème.

Martin Sojka
la source
Excellent point sur les accès mémoire incohérents dans le pixel shader. Sauter autour d'une texture comme celle-ci va vraiment jeter le cache de texture.
Bob Somers
@Bob Somers: Pour être honnête, ce ne sera pas vraiment un problème de performances, sauf si vous programmez pour une plate-forme bas de gamme ou mobile, ou si vous taxez déjà le ou les GPU au maximum.
Martin Sojka
Bon point Martin. Je vis dans le pays GPGPU depuis un an, mais j'écris du code sensible aux performances, donc j'ai pensé que c'était un point intéressant qui n'était pas immédiatement évident. :)
Bob Somers
6

Deux grandes raisons expliquent la texture non enveloppée et les artefacts de bord .

Comme vous l'avez mentionné, il peut être très difficile pour un artiste de comprendre comment ses modifications 2D s'enrouleront autour du modèle 3D si les coutures n'ont pas de sens. Dans le cas où chaque visage était séparé et placé de manière optimale avec une sorte d'algorithme d'emballage de bac, il serait presque impossible de modifier la texture à la main. J'espère qu'ils utilisent une sorte d'outil de peinture 3D de nos jours, mais c'est toujours agréable (et nécessaire!) De faire des modifications directement sur la texture 2D.

L'autre problème (artefacts de bord) peut apparaître en raison des limitations de précision en virgule flottante avec l'échantillonnage de texture. Disons que les visages sont tous disposés déconnectés sur un fond noir. En raison d'une erreur de virgule flottante dans vos coordonnées de texture ou lors de l'échantillonnage sur la carte vidéo, il est fort probable que ces pixels de bord noir apparaissent de temps en temps ou soient mélangés lorsque la texture est filtrée. Parce que cela affecte chaque visage, vous aurez cet étrange effet d'arrière-plan-artefact-filaire. La seule façon de lutter contre cela serait de rétrécir artificiellement vos cordes de texture, mais chaque visage aurait l'air bizarre car il ne s'alignera pas tout à fait avec ses voisins en termes de texture.

La bonne chose à propos de la minimisation des coutures est qu'il y a moins d'arêtes dans votre modèle où la face est adjacente à l'arrière-plan (inutilisé), donc il y a moins d'endroits où ces artefacts se glissent. La plupart des faces sont immédiatement adjacentes à leurs faces voisines dans le modèle réel, donc les artefacts de bord sont en fait des pixels adjacents dans la texture et vous ne les remarquerez jamais.

Bob Somers
la source