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.