Loading

Alison's New App is now available on iOS and Android! Download Now

Study Reminders
Support
Text Version

Set your study reminders

We will email you at these times to remind you to study.
  • Monday

    -

    7am

    +

    Tuesday

    -

    7am

    +

    Wednesday

    -

    7am

    +

    Thursday

    -

    7am

    +

    Friday

    -

    7am

    +

    Saturday

    -

    7am

    +

    Sunday

    -

    7am

    +

Olá e bem-vindo à palestra número 24 no curso Computer Graphics. Estamos em processo de aprendizado sobre o pipeline gráfico 3D, que tem cinco estágios.
Quais são esses estágios, vamos recapitear. Representação de objetos, transformação de modelagem, iluminação, pipeline de visualização e conversão de varredura. Por isso, estamos atualmente nesta quarta fase de discussão que é o pipeline de visualização.
Lá nós cobrimos três transformações que são sub estágios da quarta fase a saber: transformação de visão, transformação de projeção, transformação de viewport.
Em seguida, há mais duas operações. Estes também são sub estágios desta quarta etapa, recorte e remoção de superfície oculta.
Entre eles, já discutimos clipping e iniciamos nossa discussão sobre HSR ou remoção de superfície oculta. Por isso, continuaremos nossa discussão sobre HSR e concluiremos essa discussão hoje.
Por isso, na última palestra, conversamos sobre dois método de remoção de superfície oculta a saber: back face eliminação e algoritmo buffer de profundidade. Hoje, vamos falar sobre poucos métodos de remoção de superfície ocultos. Iniciaremos nossa discussão com outro método que é chamado algoritmo de classificação de profundidade.
Agora, esse algoritmo de classificação de profundidade também é conhecido como algoritmo do pintor, outro nome popular e funciona em espaço de imagem e de objeto. Assim funciona tanto no nível do pixel quanto no nível da superfície. E por que se chama o algoritmo do pintor? Porque ele tenta simular a maneira como o pintor desenha uma cena.
Agora este algoritmo consiste em duas etapas básicas.
Qual é o primeiro passo? Na primeira etapa, classifica as superfícies com base em sua profundidade com relação à posição de visualização. Para isso, é preciso determinar a profundidade máx e mínima de cada superfície. Isso significa a profundidade máxima e mínima de cada superfície e, em seguida, criamos uma lista de superfície classificada com base na profundidade máxima.
Assim, podemos denotar esta lista em termos de notação si, e podemos organizá-los em ordem crescente de profundidade. Por isso, nesta notação, profundidade de si é menor que profundidade de si + 1 que é a primeira etapa do algoritmo.
Na próxima etapa, renderemos a superfície na tela um de cada vez, iniciando com superfície tendo profundidade máxima que é a nsima superfície na lista a superfície com a menor profundidade ou a mais baixa profundidade.
Agora, durante a renderização, durante a segunda etapa, realizamos algumas comparações. Por isso, quando estamos renderizando uma superfície si, comparamos com todas as outras superfícies da lista S para verificar a sobreposição de profundidade. Isso significa que a profundidade mínima de uma superfície é maior do que a profundidade máxima de outra superfície à medida que a situação é ilustrada aqui. Pois que essas duas superfícies aqui, não há sobreposição de profundidade porque o mínimo é maior que o máximo. No entanto, aqui o mínimo não é maior do que o máximo, portanto, há uma sobreposição de profundidade.
Se não houver sobreposição então renderizar a superfície e remotá-la da lista S.
No caso de haver sobreposição, realizamos mais cheques. Primeira verificação são retângulos arredondos das duas superfícies não se sobrepõem, verificamos por ele. Em seguida, verificamos se superfície si está completamente atrás da superfície sobreposta em relação à posição de visualização. Esse é o segundo cheque, este é o primeiro cheque. Na terceira verificação, sobreposição de superfície completamente na frente de si em relação à posição de visualização que é a terceira verificação.
E, finalmente, as projeções de borda limite das duas superfícies em relação ao plano de visão não se sobrepõem, esta é a quarta verificação. Por isso, há séries de cheques que executamos no caso de haver sobreposição de profundidade.
Vamos tentar entender esses cheques. A primeira verificação é de retângulos delimitantes; não se sobreponha. Agora, como nós verificamos por isso? Assim, os retângulos não se sobrepõem se não houver sobreposição no x e y coordenam as extensões das duas superfícies.
Considere a situação aqui. Esta é uma superfície, esta é outra superfície. Por isso, aqui, Xmin é menor que Xmax, então há sobreposição. Se não houver sobreposição então Xmin seria mais alto que Xmax da outra superfície. Portanto, se qualquer uma dessas coordenadas se sobrepõe então a condição falha que significa retângulos de retângulos sobrepostos. Por isso, verificamos as extensões de coordenadas X e Y e, em seguida, decidimos se retângulos de retângulos se sobrepõem ou não.
A próxima verificação é superfície si completamente atrás de sobreposição de superfície em relação à posição de visualização. Agora como determinamos isso? Nós determinamos a equação do avião da superfície sobreposta onde o ponto normal em direção ao espectador.
A seguir verificamos todos os vértices de si com a equação de avião daquela superfície sobreposta. Se para todos os vértices de si a equação de avião da superfície sobreposta devolve valor inferior a 0, então si está por trás da superfície sobreposta, caso contrário, não está atrás e esta condição falha. Situação é representada neste diagrama.
A terceira condição que verificamos é se a superfície sobreposta está completamente em frente à superfície de interesse si, novamente em relação à posição de visualização. Agora, isso nós podemos verificar similarmente com as equações de avião que fizemos anteriormente.
Agora, desta vez usamos a equação de avião de si em vez dessa superfície sobreposta e utilizamos os vértices da superfície sobreposta. Por isso, utilizamos esses vértices na equação do avião e para todos os vértices, se a equação devolver valor positivo então ela está completamente na frente, caso contrário, a condição falha. Situação é mostrada nesta figura.
E, finalmente, as projeções de borda limite das duas superfícies sobre o plano de visão não fazem a sobreposição, esta é a verificação final. Agora, para verificar por estes precisamos de conjunto de pixels projetados para cada superfície e, em seguida, verificar se há algum pixels comum nos dois conjuntos. A ideia é ilustrada aqui. Se há pixels comuns nos dois conjuntos então definitivamente, há uma sobreposição, caso contrário, não há sobreposição.
Agora, como você pode ver aqui que este algoritmo incorpora elementos de ambos os métodos de espaço de objeto e espaço de imagem. O primeiro e os últimos cheques foram realizados no nível do pixel para que seja espaço de imagem, enquanto que os outros dois, segundo e terceiro, foram executados no nível do objeto. Por isso, aqui, o elemento do método espacial de objeto está presente.
Agora, quando realizamos os testes, realizamos os testes seguindo essa ordem crescente mantida em s e também, a ordem dos cheques que mencionamos. Agora, assim que qualquer um dos cheques é verdadeiro, passamos para o cheque de sobreposição com a próxima superfície da lista.
Então, essencialmente, o que estamos fazendo? Inicialmente, estamos verificando a sobreposição de Z para uma superfície, com todas as outras superfícies, se ela tiver sucesso então simplesmente renderemos a superfície, caso contrário, executamos as verificações nessa ordem específica e durante as verificações se qualquer verificação for verdadeira então passamos para o próximo passo em vez de continuar com as outras verificações.
Agora se todo o teste falhar, o que acontece nesse caso? Trocamos a ordem das superfícies na lista. Isso se chama reordenação e depois paramos. Em seguida, reiniciamos todo o processo novamente desde o início. Por isso, se todas as verificações falharem, então precisamos reordenar a lista de superfície e então começamos desde o início.
Agora, às vezes há questões. Às vezes, podemos obter superfícies que se cruzam umas com as outras. Por exemplo, veja esta superfícies. Esta é uma superfície, esta é outra superfície, e elas se cruzam umas às outras. Portanto, neste exemplo, uma parte da superfície 1 está a uma profundidade que é maior que a superfície 2, enquanto que a outra parte está a uma profundidade que é menor que a superfície 2, como se pode ver nesta figura.
Agora, em tais situações podemos enfrentar problema, podemos inicialmente manter a superfície 1 e a superfície 2 de uma maneira particular que é superfície 1 após a superfície 2 na lista de classificados.
No entanto, se você executar o algoritmo você verá que para essas superfícies, todas as condições falharão para que tenhamos que reordenar. Mas isso não vai resolver o nosso propósito. Mesmo que reordenemos, as condições falharão novamente e temos que reordenar novamente.
Então, inicialmente, temos S1 seguido por S2, a seguir teremos S2 seguido de S1. Então teremos que reordenar novamente S1 seguido por S2 e isso vai continuar, e podemos acabar em um loop indeterminado porque as superfícies se cruzam e a distância relativa entre as duas são difíceis de determinar.
A fim de evitar tais situações o que podemos fazer é podemos usar uma bandeira extra, uma bandeira booleana para cada superfície. Se uma superfície for reordenada então a sinalização correspondente será configurada ON, o que indica que a superfície já está reordenada uma vez.
Agora, se a superfície precisar ser reordenada novamente da próxima vez vamos fazer o seguinte. Dividimos a superfície ao longo da linha de interseção e, em seguida, adicionamos duas novas superfícies na lista classificada em posições apropriadas. Então, quando a superfície precisa reordenar novamente, sabemos que há interseção. Em seguida, dividimos a superfície ao longo das linhas de interseção e depois adicionamos duas novas superfícies em vez de uma na lista em uma ordem classificada.
É claro que essas duas etapas são muito fáceis de fazer e requer muitas computações, no entanto, não entraremos nos detalhes apenas damos a você alguma ideia em vez dos detalhes de como fazer isso. Portanto, essa é a ideia básica do algoritmo do pintor.
Discutiremos mais um algoritmo do algoritmo Warnock.
Isso na verdade é parte de um grupo de métodos para remoção de superfície oculta, que são coletivamente conhecidos como métodos de subdivisão de área e eles trabalham na mesma ideia geral. E o que é essa ideia?
Por isso, primeiro consideramos uma área da imagem projetada.
Em seguida, se pudermos determinar quais superfícies poligonais são visíveis na área então atribuímos essas cores de superfície à área. É claro que se podemos determinar então o nosso problema está resolvido. Por isso, essa determinação é a questão fundamental aqui.
Agora se não podemos determinar, subdividimos de forma recorrente área em regiões menores e aplicamos a mesma lógica de decisão nas sub regiões. Portanto, é um processo recursal.
O algoritmo de Warnock é um dos primeiros métodos de subdivisão desenvolvidos.
Neste algoritmo, subdividimos uma área de tela em quatro quadrados iguais. Como você pode ver esta é a região que dividimos em quatro quadrados iguais P1, P2, P3 e P4 então executamos recursividade.
Verificamos a visibilidade em cada quadrado para determinar cores de pixels na região quadrada. Por isso, processamos cada quadrado de cada vez.
E, neste processamento, há três casos para verificar. O caso 1, é a atual região quadrada sendo verificada não contém nenhuma superfície. Nesse caso, não subimos mais a região porque ela não tem nenhuma superfície para que não haja nenhum ponto em mais verificação e simplesmente atribuímos cor de fundo aos pixels contidos nesta sub região.
No caso 2, a superfície mais próxima sobrepõe completamente a região em consideração. Isso significa que ela está completamente sobreposta pela superfície que está mais próxima do espectador. Neste caso também, não subdividimos ainda mais a praça, em vez disso, simplesmente atribuímos a cor da superfície à região porque ela é completamente coberta pela superfície. Por isso, observe que aqui precisamos determinar a superfície mais próxima e então determinar a extensão dessa superfície após a projeção para que possamos verificar se ele cobre completamente aquela sub região.
E há o caso 3, em que nenhum dos casos 1 e 2 se mantém. Neste caso, executamos recursão. Nós dividimos recorrentemente a região em quatro sub regiões e depois repetimos os cheques. As paradas de recursão se um dos casos for atendo ou o tamanho da região se torna igual ao tamanho do pixel. Por exemplo, aqui, como você pode ver, subdividimos em mais quatro sub regiões P31, 32, 33 e 34. Em seguida, 31 apresentamos outra recursão, novamente dividida em sub regiões, quatro sub regiões.
E continuamos até que qualquer uma das condições 1 ou 2 é atendida ou o tamanho da sub região se torna igual a tamanho de pixel que é o menor tamanho possível. Então, essa é a ideia do algoritmo, onde supomos que estamos tendo imagem projetada e depois, dividimos em quatro sub regiões por vez e realizamos etapas recursivas.
Então, com isso, chegamos à conclusão de nossa discussão sobre remoção de superfície oculta.
Agora, antes de concluirmos, poucas coisas a serem notadas aqui. A remoção de superfície oculta é uma operação importante na quarta fase, mas envolve muitas operações complexas e exploramos os princípios de coerência para reduzir tais complexidades. Essas são as coisas que devemos lembrar.
Também, devemos lembrar que existem muitos métodos para remoção de superfície oculta e amplamente, eles são de dois tipos, método de espaço de objeto e método de espaço de imagem.
Entre esses métodos, cobrimos quatro métodos desse tipo que está de volta facial eliminação, que é um método de espaço de objetos; algoritmo de buffer de Z, um método de espaço de imagem; algoritmo do pintor, um mix de imagem e método baseado em objetos; e o algoritmo de Warnock, que é o método de espaço de imagem. Há outras abordagens de curso.
Uma abordagem popular, que é um método de espaço de objetos é um método Octree, que não discutiremos em detalhes, você pode referir-se ao material de aprendizagem. Assim, cobrimos a quarta fase e todas as suas sub-etapas, a saber, as três transformações visem transformação, transformação de projeção, transformação de viewport e também as duas operações a saber, recorte e remoção de superfície oculta.
O que quer que tenhamos discutido até agora pode ser encontrado neste livro. Você pode consultar o capítulo 8, as seções 8,6 e 8,7. Além disso, se você estiver interessado em saber mais sobre outro método de espaço de objeto que é o método Octree você pode conferir a seção 8,8 também.
Então isso é tudo para hoje. Na próxima palestra, iniciaremos nossa discussão sobre a próxima etapa do pipeline que é a conversão de varredura. Até lá, obrigado e adeus.