Estou tentando entender por que as malhas suavizadas no estúdio 3D (Modificadores / Suaves) acabam tendo a mesma quantidade de vértices / faces antes ou depois desse processo, bem como a mesma geometria exata.
No exemplo a seguir, ambas as malhas têm 32 vértices e 60 faces.
Embora tenha experiência em trabalhar com programação (c ++ e c #), sou bastante iniciante em computação gráfica. Assim, minha expectativa era que a aparência suavizada de uma malha suavizada exigisse vértices adicionais, isto é, subdivisão de triângulos, para acabar tendo uma malha final mais detalhada. No entanto, esse parece não ser o caso.
Por isso pergunto:
1) como é possível a suavização sem aumentar o detalhamento da geometria da malha?
2) a suavização aumenta pelo menos a memória alocada / usada para armazenar a nova malha em comparação com a malha original?
As explicações são super bem-vindas, mas as referências (acadêmicas ou não) também são apreciadas.
Respostas:
Suave, nesse caso, apenas faz com que a superfície normal dos vértices aponte da mesma maneira; quando interpolada, ela parece lisa. Meshsmooth adicionaria vértices.
1) como é possível a suavização sem aumentar o detalhamento da geometria da malha?
Os olhos humanos não conseguem ver a curvatura, exceto nas bordas dos objetos. Tudo o que eles podem fazer é aproximar a suavidade e processar a inclinação do gradiente. Portanto, ter um campo contínuo dá uma sensação de suavidade. O olho, no entanto, é extremamente sensível a mudanças bruscas de cor e interpreta isso como um vinco duro.
Ao interpolar as normais do vértice, sua superfície terá a aparência de fluxo suave. Como esse normal é usado para calcular a cor refletida final, você obtém um campo de cores suave.
Imagem 1 : um normal sombreado plano versus os normais de uma interação suave. O normal preto está em um vértice. Os coloridos são interpolados.
Não há nada que diga que precisamos fazer uma interpolação linear. De fato, perturbando os normais, podemos fazer com que a superfície plana mude de aparência. É assim que o mapeamento de resposta e o mapeamento normal funcionam. O efeito pode ser convincente, a menos que a borda da superfície tenha um papel muito grande no local em que a ilusão se quebra.
Imagem 2 : uma superfície sombreada plana (traseira), sombreada suave (média) e um normal suave mapeado. A ilusão de uma superfície ondulada quebra porque a borda desempenha um papel tão proeminente na imagem que você pode aumentar as normais
2) a suavização aumenta pelo menos a memória alocada
Difícil dizer coisas definitivas sobre o mecanismo gráfico subjacente. Os normais precisam ser emitidos para a placa gráfica de qualquer maneira, provavelmente esses dados são armazenados em cache, mas podem ser calculados em tempo real (em ambos os casos).
Como Max usa grupos de suavização, parece-me que o uso da memória é constante, independentemente. Difícil dizer, mesmo que não seja armazenado em cache, não faria muita diferença. Isso torna o shader minúsculo um pouco mais complicado, mas é provável que essa complexidade esteja presente, use-o ou não.
fonte