Por que malhas suavizadas no estúdio 3D acabam com o mesmo número de vértices / triângulos? Como então eles podem ser suavizados com a mesma geometria?


11

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.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

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.


Também não é super experiente aqui, mas suponho que você possa estar usando um shader diferente em um. O de Lambert se pareceria com o da direita. Mas os gourands os avaliam e fazem parecer mais suave. prosjekt.ffi.no/unik-4660/lectures04/chapters/jpgfiles/...
Andrew Wilson

1
Obrigado por seu comentário! Francamente, a única coisa que fiz foi aplicar o modificador Smoother. Não havia sombreador adicionado antes e não adicionei sombreador depois.
Louis15

Os termos históricos são "essa é a diferença entre o sombreamento plano e o gouraud". Na prática, isso relaciona-se com as normais como explicado por joojaa
v.oddou

Qual software você usou na captura de tela? THX :)
xyz

Respostas:


14

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.

Plano sombreado vs suave sombreado

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.

insira a descrição da imagem aqui

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.


Ótima resposta! Era exatamente isso que eu procurava: uma explicação conceitual que não deixava de fora detalhes cruciais, mas ainda era clara e direta ao ponto. Muito obrigado
Louis15

2
"No entanto, o olho é extremamente sensível a mudanças bruscas de cor e interpreta isso como um vinco duro". Na verdade, o sistema visual humano é muito bom em detectar alterações na derivada do sombreamento. O sombreamento pode ser contínuo, mas se houver descontinuidades na taxa de alteração, como nesta imagem, elas poderão ser surpreendentemente visíveis. Procure pelo efeito da banda Mach.
Simon F

1
@SimonF é por isso que eles vêem um vinco, porque eles derivam a detecção de bordas e tudo mais. Mas o cérebro humano realmente não esvazia o fluxo do gradiente. 2 suavidades são quase iguais à maioria dos seres humanos (não há um segundo sensor de dervação, por exemplo). Portanto, ter uma esfera lisa é suave, mesmo que os normais não se comportem de forma esférica, desde que sejam suaves. É por isso que nos safamos do truque. Muito poucas superfícies realmente se comportam dessa maneira.
Joojaa

"(não existe um segundo desvio de percepção, por exemplo)" Acabei de verificar os "Princípios da síntese de imagens digitais" de Glassner (volume 1, página 29) ... e agora estou mais confuso do que nunca.
Simon F

@SimonF Você pode ficar confuso com as reflexões que são naturalmente uma derivada menor do que a superfície. Assim, um humano pode, sob certas condições, sentir a segunda derivada. Mas o ponto é que os humanos podem ver vincos, mas não fazem diferença significativa entre todas as mudanças diferentes, o fato de um reflexo estar um pouco desligado ou na direção errada não é automaticamente aparente para um humano. Sem análise mais profunda. Contanto que não haja mudanças bruscas, na maioria das vezes, é bom o suficiente em muitas circunstâncias. Devemos continuar esta na sala de chat embora
joojaa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.