Quais são as desvantagens de marcar cada aresta como uma costura ao desembrulhar uma malha?

9

Sou um programador que está tentando aprender um pouco de modelagem 3D básica. Estou razoavelmente confortável com a modelagem básica de geometria e posso desembrulhar e texturar modelos simples. Mas eu tenho uma pergunta...

Quando se trata de desembrulhar modelos, todos os tutoriais enfatizam a necessidade de marcar o mínimo possível de costuras ao desembrulhar uma malha. Minha pergunta é por que? Suponho que isso seja super óbvio para pessoas com experiência em modelagem, mas não para mim (dado que meus esforços de texturização são restritos principalmente à geração de AO ou mapas normais).

Acho que isso tem a ver apenas com a preservação da forma do modelo quando se trata de editar a textura difusa? Essa é a única razão pela qual você não deseja simplesmente cortar todas as arestas e expor todas as faces individualmente?

Sei que estou demonstrando total ignorância sobre o assunto ao fazer essa pergunta, então peço desculpas, mas às vezes as coisas super óbvias são as mais difíceis de encontrar respostas para .

NM01
fonte

Respostas:

10

Cada "costura UV" no seu modelo - ou seja, todo lugar em que as faces do modelo são contínuas enquanto o mapa UV da mesma borda é cortado - é um problema para os artistas e para o hardware.

  • Isso dificulta a textura do modelo corretamente. Isso é especialmente verdade quando a edição é feita diretamente na textura, em 2D, não em um programa de pintura em 3D. Quanto menos costuras, mais fácil é enrolar mentalmente a textura ao redor do modelo.
  • Embora a mistura simples possa funcionar para a textura difusa e alguns outros tipos de textura, você deve ter muito cuidado com coisas como um mapa normal de espaço tangente. Para isso, não é possível mesclar linearmente (interpolar) entre os valores X e Y (geralmente mapeados para R e B nos visualizadores de textura) sem que o vetor normal resultante seja desnormalizado e a costura fique visível (geralmente como um pouco mais escura). "linha") sob algumas condições de iluminação. Por outro lado, tentar corrigi-lo na textura e tornar os valores nas duas bordas UV próximos um do outro ou o mesmo pode resultar na visibilidade da costura, porque é artificialmente plana em comparação com o resto do modelo.
  • Os pixel shaders precisam fazer mais trabalho a cada descontinuidade (mesmo que hoje em dia esteja abstraído no hardware) e chegar a diferentes locais de memória para obter os dados de textura (que geralmente é o "caminho do código" menos otimizado no hardware) , em vez de normalmente trabalhar com valores de textura espacialmente próximos.
  • O mipmapping automático (e muito poucas lojas podem dar ao luxo de retocar manualmente as texturas de baixa resolução geradas) interromperá todo o trabalho duro que você e seus artistas fizeram para tornar uma costura invisível na resolução padrão.

Dito isto: se o seu estilo artístico determina que as faces do modelo são claramente distintas uma da outra e só terão bordas explícitas e "rígidas", nada disso é um problema.

Martin Sojka
fonte
Excelente ponto sobre os acessos incoerentes à memória no pixel shader. Pulando em torno de uma textura como essa, realmente trash o cache de textura.
Bob Somers
@ Bob Somers: para ser justo, isso não afetará muito o desempenho, a menos que você esteja programando para uma plataforma móvel ou low-end, ou já esteja tributando as GPUs ao máximo.
Martin Sojka
Bom ponto Martin. Eu tenho vivido na terra da GPGPU durante o ano passado escrevendo código sensível ao desempenho, então achei que era um ponto interessante que não é imediatamente óbvio. :)
Bob Somers
6

Dois grandes motivos estão dando sentido à textura desembrulhada e aos artefatos de borda .

Como você mencionou, pode ser muito difícil para um artista entender como suas edições em 2D envolverão o modelo 3D se as costuras não fizerem sentido. No caso de cada face estar separada e otimamente posicionada com algum tipo de algoritmo de empacotamento de lixeira, seria quase impossível editar a textura manualmente. Espero que eles estejam usando algum tipo de ferramenta de pintura 3D hoje em dia, mas ainda é bom (e necessário!) Fazer edições diretamente na textura 2D.

O outro problema (artefatos de aresta) pode aparecer devido a limitações de precisão de ponto flutuante com a amostragem de textura. Digamos que os rostos estejam todos desconectados em cima de um fundo preto. Devido ao erro de ponto flutuante nas cordas de textura ou durante a amostragem na placa de vídeo, é bem provável que esses pixels de borda preta sejam exibidos ocasionalmente ou misturados quando a textura for filtrada. Como isso afeta cada rosto, você terá esse efeito estranho de fundo-artefato-estrutura de arame. A única maneira de combater isso seria reduzir artificialmente as cordas de textura, mas cada rosto pareceria estranho, porque não se alinharia com os vizinhos em termos de textura.

O bom de minimizar costuras é que há menos arestas no modelo em que a face fica adjacente ao plano de fundo (não utilizado), portanto, há menos lugares para os artefatos se infiltrarem. A maioria das faces fica imediatamente adjacente às faces vizinhas no modelo real, para que os artefatos de borda sejam pixels adjacentes na textura e você nunca os notará.

Bob Somers
fonte