Panda3D/Manual/Esconder faces da frente e as faces de trás

Origem: Wikilivros, livros abertos por um mundo aberto.

Esconder faces da frente e Posteriores

Por padrao panda3d automaticamente esconde( nao renderiza ) as faces de tras dos poligonos. Em outras palavras, o poligono funciona como um espelho de um lado só. Voce pode velo de um lado, mas do outro voce vai ver atraves dele. Esconder as faces de tras é muito util para otimizar a performance. Sem ela, o motor 3d teria de renderizar a superficie interior de modelos 3D. Ja que esta superficie nao esta visivel, seria trabalho desperdiçado. Ja que a area do interior é igual a superficie da area no exterior, isso dobraria a quantidade de trabalho que a placa de video teria de fazer. Esse é o motivo porque esconder as faces de tras está habilitada por padrão.

Interessante, isso significa que se voce mover a camera dentro do modelo 3d, voce pode visualizar o exterior. Isso é conveniente a maior parte do tempo.

Contudo, existem casos onde voce pode querer ver as faces de tras. Existem tambem casos muito raros onde voce nao quer ver as faces da frente. Por isso, faces posteriores e faces frontais podem ser controladas.

Cuidade: modeladores 3d inexperientes podem as vezes criar modelos com poligonos apontado para dentro: ou seja, o lado visivel do poligono esta dentro do modelo 3D, e voce pode ver atraves das faces exteriores. Como resultado, o modelo 3d pode parecer muito estranho - ele pode ter buracos ou pode ser visualizado de dentro para fora. Deslidar esconder faces posteriores pode de certa forma "consertar" esses modelos, mas a um custo pesado: primeiro, ele é renderiza á metade da velocidade normal, e depois, ele criar artefatos de ilumação ( porque a placa de video esta calculando a iluminação de dentro do modelo nao de fora. Isso nao é uma solução para uma má modelagem 3d: a unica solução real é fazer modelos 3d corretamente antes de tudo.

em outras palavras, não altere o esconder faces posteriores e frontais a nao ser que voce esteja usando um algoritmo que demande que seja de tal forma, como sombras stencil.


Renderizando lado-duplo

Existe um modo rapido de renderizar certosNodePath em sua cena com dois lados, o que significa que culling nao e efetuado em qualquer dos lados, sem alterar os atributos:

nodePath.setTwoSided(True)

Se voce quiser controle mais avançado sobre o culling voce poderia olhar o CullFaceAttrib:

Controlando culling de faces posteriores e frontais

Existem tres configurações validas para culling:

nodePath.setAttrib(CullFaceAttrib.make(CullFaceAttrib.MCullNone)) nodePath.setAttrib(CullFaceAttrib.make(CullFaceAttrib.MCullClockwise)) nodePath.setAttrib(CullFaceAttrib.make(CullFaceAttrib.MCullCounterClockwise))

None significa que todas as faces sao visiveis, tanto posteriores quanto frontais. Clockwise é a configuração padrão, que faz as faces posteriores receberem cull. Counter-clockwise é a configuração reversa, que faz as faces frontais serem escondidas