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 23 no curso Computer Graphics. Por isso, estamos atualmente discutindo o pipeline gráfico e há cinco estágios no pipeline como todos nós sabemos.
O primeiro estágio é representação de objetos, segundo estágio é transformação de modelagem, terceira etapa é iluminação, quarto estágio é pipeline de visualização e o quinto estágio é de conversão de varredura. Entre eles, estamos atualmente na quarta etapa que está visualizando a transformação. As três etapas anteriores que já discutimos.
Agora, nesta quarta fase, como você pode se lembrar há muitas sub-estágios. Sendo assim, há 3 transformações e 2 sub-estágios relacionados a algumas outras operações. Assim, as três transformações são transformação de visão, transformação de projeção e transformação de viewport.
Em seguida, temos duas operações, recorte e remoção de superfície oculta. Agora, entre todas essas transformações e operações, já cobrimos as três transformações e recorte.
Hoje, vamos discutir a operação restante que é de remoção de superfície oculta. Vejamos o que é remoção de superfície oculta, qual é a ideia básica, e como podemos fazer isso.
(Consulte O Slide Time: 02:22) Mais cedo, durante nossa discussão sobre clipping, aprendemos que como remover objetos totalmente ou parcialmente que estão fora do volume de visualização. Assim, aqueles que fizemos usando os algoritmos de clipping. Por isso, observe aqui que o recorte foi feito em objetos que estão parcialmente ou totalmente fora do volume de visualização. Às vezes, na verdade precisamos remover de novo total ou parcialmente objetos que estão dentro do volume de visualização.
Assim, em caso de recorte, estamos lidando com objetos que estão fora do volume de visualização, enquanto que em caso de remoção de superfície oculta, lidamos com objetos que estão dentro do volume. Agora quando os objetos estão dentro do volume, claramente, não podemos aplicar o algoritmo de clipping porque os algoritmos de clipping são projetados para detectar os objetos que estão fora, total ou parcialmente.
Vejamos um exemplo. Considere esta imagem. Aqui, há dois objetos; este é o único e este cilindro é o outro. Agora idealmente, há uma superfície aqui. Para a geração de imagem realista, se estamos olhando para este objeto a partir desta direção então idealmente, não devemos ser capazes de ver esta superfície representada pela linha de limite pontilhada, esta superfície. Portanto, se o espectador está localizado neste ponto aqui então este objeto Uma superfície, que está por trás deste objeto B não deve ser visível para o espectador.
Por isso, antes de rendermos a imagem para ter o efeito realista, devemos ser capazes de eliminar essa superfície da imagem renderizada.
Aqui neste caso não podemos usar clipping, pois aqui estamos assumindo que ambos os objetos estão dentro do volume de visualização. Por isso, os algoritmos de clipping não são aplicáveis. O que nós exigimos é um algoritmo diferente ou um conjunto diferente de algoritmos. Agora, esses algoritmos são coletivamente conhecidos como métodos de remoção de superfície ocultos ou, alternativamente, métodos de detecção de superfície visíveis.
Então, para notar qual recorte, o que fazemos? Tentamos remover objetos que estejam parcialmente ou totalmente fora do volume de visualização. Com remoção de superfície oculta, o que fazemos? Tentamos remover superfícies ou objetos objeto, que estão dentro do volume de visualização mas que são bloqueados a partir da visualização, devido à presença de outros objetos ou superfícies com relação a uma determinada posição de visualização.
Assim, em caso de superfície oculta, estamos assumindo uma direção de visualização específica. Porque uma superfície oculta de uma determinada posição de visualização pode não ser assim se estamos olhando para ela de outra direção. Assim, com relação à visualização da posição apenas, podemos determinar se superfície ou um objeto está oculto ou não.
Agora, antes de entrarmos em detalhes dos métodos para a remoção de superfície oculta, devemos ter em mente que há duas premissas que estaremos fazendo. Primeiro é que usaremos um sistema de coordenadas direitista e assumiremos que o espectador olhando para o local ao longo da direção Z negativa. Em segundo lugar, os objetos que estão lá no local têm superfícies poligonais, portanto todas as superfícies de objeto são poligonais. Essas duas suposições que faremos a fim de explicar os métodos de remoção de superfície ocultos.
Agora, vamos entrar nos detalhes dos métodos que estão lá para detectar e eliminar superfícies ocultas.
Agora existem muitos métodos, todos esses métodos podemos dividir amplamente em dois tipos. Um é o método espacial de objetos, o segundo é o método de espaço de imagem. Então qual é a ideia por trás desses métodos que vamos tentar entender?
Em caso de método de espaço de objeto o que fazemos, comparamos objetos ou partes dos objetos uns aos outros para determinar as superfícies visíveis. Por isso, aqui estamos lidando com objetos no nível de 3D.
E a abordagem geral que é seguida para realizar a remoção de superfície oculta com um método de espaço de objetos consiste em duas etapas de forma ampla. Por isso, para cada objeto na cena o que fazemos é primeiro determinamos aquelas partes do objeto cuja visualização é desobstruída por outras partes ou qualquer outro objeto com relação à especificação de visualização.
Portanto, primeiro estágio é determinar as partes que estão escondidas com relação à posição de visualização. E então na segunda posição, renderemos as partes que não estão escondidas. Por isso, essencialmente aquelas partes que não estão obstruídas com a cor do objeto. Sendo assim, essas duas são as etapas gerais que são executadas em qualquer método de espaço de objeto a saber, primeiro estágio é determinar as superfícies que não estão escondidas e na segunda etapa renderemos aquelas superfícies ou partes dos objetos com a cor particular.
Já que aqui estamos lidando com objetos, portanto, essencialmente esses métodos funcionam antes da projeção, no nível de objeto 3D. Lembre-se que uma vez que executamos projeção, os objetos são transformados em uma descrição 2D. Portanto, não podemos ter essas características 3D.
Então quais são as vantagens? Há uma vantagem. Portanto, este método de espaço de objetos fornece método independente de dispositivo e trabalho para qualquer resolução da tela, mas também tem algumas desvantagens a saber, determinação dessas superfícies que estão escondidas ou não ocultas é a computação intensiva. Em segundo lugar, dependendo da complexidade da cena e também dos recursos que estão disponíveis.
Esses métodos podem até tornar-se inviáveis porque são intensivos de computação e se os recursos não são suficientes então podemos não ser capazes de implementá-los em nada.
Usualmente, tais métodos são adequados para cenas simples com pequeno número de objetos. Por isso, os métodos de espaço objeto são mais bem aplicáveis quando a cena é simples e tendo pequeno número de objetos.
Em caso de método de espaço de imagem o que acontece? Assim como o nome sugere, a detecção e a renderização se dá no nível de imagem que significa após projeções. Por isso, aqui, a visibilidade é decidida ponto a ponto a cada posição de pixel no plano de projeção. Por isso, aqui, não estamos mais lidando no espaço 3D, estamos lidando em avião de projeção 2D no nível de pixels.
Novamente, há duas etapas na abordagem geral. Então para cada pixel na tela o que fazemos? Nós primeiro determinamos os objetos que estão mais próximos do espectador e são perfurados pelo projetor através do pixel. Assim, essencialmente, os objetos mais próximos que se projetam a esse ponto. Em segundo lugar, o segundo passo é desenhar o pixel com a cor do objeto.
Assim, na primeira etapa, determinamos qual é o objeto mais próximo que se projeta no pixel, e no segundo estágio atribuímos a cor pixel como a cor do objeto e que fazemos para cada pixel na tela. Então para comparar mais cedo o que estávamos fazendo? Mais cedo, estávamos fazendo para cada superfície aqui estamos fazendo por cada pixel.
Claramente, os métodos funcionam após as superfícies serem projetadas e rasterizadas que significa mapeados para a grade de pixels, ao contrário do caso anterior em que estávamos no domínio 3D.
Aqui os cálculos são geralmente menos comparados com os métodos de espaço objeto. No entanto, o método depende de resolução de exibição porque estamos fazendo as computações para cada pixel. Portanto, se houver uma mudança na resolução então exigimos re-cálculo de cores de pixels. Então, essa é a sobrecaria.
De forma tão ampla, existem esses dois métodos, métodos de espaço de objetos e métodos de espaço de imagem. Mais adiante, veremos exemplos de cada um desses métodos que são muito populares. Mas antes de entrar nisso deixe-nos tentar falar sobre algumas propriedades que na verdade são utilizadas para apresentar métodos eficientes para detecção e remoção de superfície oculta.
Por isso, há muitas propriedades desse tipo. Coletivamente, essas propriedades são chamadas propriedades de coerência, que são usadas para reduzir os cálculos em métodos de remoção de superfície ocultos. Como já falamos, esses métodos são computacionalmente intensivos. Por isso, se usarmos essas propriedades coerentes então alguma quantidade de cálculos pode ser reduzida como veremos mais adiante.
Agora essas propriedades estão essencialmente relacionadas a algumas semelhanças entre imagens ou partes das imagens e se executamos computação para uma parte então devido a essas propriedades, podemos aplicar os resultados em outras partes e é assim que reduzimos a computação.
Por isso, essencialmente, exploramos semelhanças locais que significa fazer uso de resultados que calculamos para uma parte de uma cena ou uma imagem para as outras partes próximas. Por isso, realizamos cálculo por uma parte e usamos o resultado para outra parte sem repetir o mesmo cálculo e, dessa forma, reduzimos alguma quantidade de computação.
Agora, são muitas as tais propriedades de coerência; amplamente, de seis tipos, coerência de objeto, coerência de face, coerência de borda, coerência da linha de varredura, coerência de profundidade e coerência do quadro. Vamos rapidamente ter uma discussão sobre cada um destes para melhor compreensão embora, não entraremos em discussões detalhadas e como elas estão relacionadas com diferentes métodos.
Primeiro é a coerência de objetos, o que ela conta? Aqui, verificamos a visibilidade de um objeto com relação a outro objeto, comparando seus sólidos circunscritos, que são em muitos casos, de formas simples, como esferas ou cubos. Então, então, só se os sólidos sobrepor nós vamos para um processamento adicional. Se não houver sobreposição que significa que não há superfícies ocultas, por isso não precisamos fazer nenhum processamento para mais. Portanto, esta é uma maneira simples de eliminar lotes de cálculos devido a essa propriedade de coerência de objetos.
A seguir, venha enfrentar a coerência. Aqui, propriedades de superfície computadas para uma parte de uma superfície podem ser aplicadas em partes adjacentes da mesma superfície que é o que é a implicação dessa propriedade de coerência de face. Por exemplo, se a superfície é pequena então podemos supor que a superfície é invisível para um espectador se uma parte dela invisível. Por isso, não precisamos verificar a invisibilidade para cada um e cada parte. Por isso, verificamos por uma parte e então simplesmente dizemos que outras partes também serão invisíveis se essa parte for invisível.
Em seguida, terceiro é coerência de borda. Aqui, esta propriedade indica visibilidade de uma borda muda apenas quando cruza outra borda. Se um segmento de uma borda não intersecante for visível, determinamos sem cálculo adicional a borda inteira também é visível. Portanto, coerência de borda nos diz que haverá uma mudança na visibilidade apenas se a borda intersecar outra borda. Em outras palavras, se um segmento de uma borda estiver visível e a borda não estiver se cruzando com qualquer outra borda isso significa que podemos dizer que a borda inteira também é visível.
Então vem a coerência da linha de varredura, o que ela conta? Ele indica ou implica em um segmento de linha ou de superfície que é visível em uma linha de escaneamento também é provável que esteja visível nas linhas de varredura adjacentes e não precisamos executar esta computações de visibilidade para cada linha de varredura. Por isso, fazemos por uma linha de varredura e aplicamos o resultado para linhas de varredura adjacentes.
A seguir, a coerência de profundidade, que nos indica que a profundidade de partes adjacentes da mesma superfície são semelhantes. Não há muita mudança de profundidade nas partes adjacentes de uma superfície. Essas informações, por sua vez, nos ajudam a determinar a visibilidade de partes adjacentes de uma superfície sem excesso de computação.
Em seguida, quadro coerência, que nos diz que fotos de uma mesma cena em pontos sucessivos no tempo provavelmente são semelhantes apesar de pequenas alterações em objetos e ponto de vista, exceto perto das bordas de objetos em movimento. Isso significa que as computações de visibilidade não precisam ser realizadas para cada cena renderizada na tela. Por isso, a coerência do quadro está relacionada à mudança de cena. As propriedades de coerência anteriores estavam relacionadas a imagens estáticas aqui estamos falando de mudança dinâmica em imagens e com base nessa propriedade de coerência podemos concluir que a visibilidade pode ser determinada sem computá-la novamente e novamente para cada cena.
Assim é em suma as seis propriedades de coerência. Primeiras cinco propriedades estão relacionadas a imagens estáticas últimas propriedades podem ser usadas para renderização de animações, que de qualquer forma não faz parte de nossas palestras aqui e os métodos de remoção de superfície ocultos fazem uso dessas propriedades para reduzir cálculos. Agora, vamos entrar em detalhes sobre tais métodos.
Por isso, começamos com um método simples que é chamado de back face eliminação método.
O que é esse método? Esta é, na verdade, a maneira mais simples de remover um grande número de superfícies ocultas para uma cena formada por poliedros. Por isso, aqui, estamos assumindo que cada objeto é um poliedro, e usando de volta a eliminação do rosto, podemos remover um grande número de superfícies ocultas. O objetivo é detectar e eliminar superfícies que estão no backside de objetos com relação ao espectador.
Assim, quando uma superfície está do lado de trás de um objeto com relação a um determinado espectador claramente, durante a renderização de que a superfície posterior não deve ser mostrada. Com o método de eliminação de face, podemos detectar naquelas superfícies de trás e, em seguida, removê-las de mais consideração durante a renderização.
As etapas são muito simples para este método específico. Por isso, há três etapas. Na primeira etapa, determinamos um vetor normal para cada superfície N representada em termos de suas grandezas escalares a, b, c ao longo do eixo de três. Assumo aqui que todos sabem calcular o vetor normal para uma determinada superfície, se não então você pode referir-se a qualquer livro sobre álgebra vetorial, livro básico; é um processo muito simples e não discuto os detalhes aqui.
Agora, uma vez que o normal é decidido nós verificamos por este componente Z. Se este componente Z for menor que igual a 0, o componente escalar, então eliminamos aquela superfície em particular porque quando o componente Z é inferior a 0, a superfície está de volta face, enquanto que quando é igual a 0 o vetor de visualização realmente graliza a superfície. Nesse caso, também, consideramos que é uma face traseira.
Agora, se c é maior que 0 então retemos a superfície não é a face traseira e executamos esses passos um e dois para todas as superfícies em um loop. Assim como você pode ver, é um método muito simples nós simplesmente tiramos uma superfície de cada vez, computamos sua superfície normal e verificamos o componente Z o componente escalar de Z. Se ele for menor que igual a 0 então eliminamos a superfície senão a retemos e fazemos por todas as superfícies.
Consideremos um exemplo. Suponhamos que este seja o nosso objeto, ele contém quatro superfícies ACB, ADB, DCB e ADC; quatro superfícies estão lá. Por isso, para cada uma dessas superfícies, executamos o método de eliminação de face traseira. Para cada uma dessas superfícies, calculamos o componente Z da superfície normal como mencionado nas etapas anteriores.
Façamos pelas superfícies. Para ACB, o componente z do normal é -12, portanto, é menor do que igual a 0. Por isso ACB não é visível como você pode ver deste lado ACB está na parte de trás da superfície.
Para ADB, DCB, e ADC os componentes z do normal são -4, 4 e 2, respectivamente. Por isso, podemos ver que para DCB e ADC o componente z é maior que 0, portanto, estas são superfícies visíveis. Mas, para a ADB, é menos de 0 novamente para que não seja uma superfície visível. Então, essa é a maneira simples de fazer isso.
E você deve notar aqui que estamos lidando com a descrição 3D dos objetos no sistema de coordenadas de visualização, portanto, ele funciona em superfícies, portanto, é um método de espaço de objetos. Na prática, usando este método muito simples, podemos eliminar cerca de metade de todas as superfícies em uma cena sem mais cálculos complicados.
No entanto, há um problema com este método. Este método não considera obscuras de uma superfície por outros objetos no local. Então o que fizemos? Nós essencialmente eliminamos faces de um objeto. Agora aqui, a face traseira é obscurecida por superfície do mesmo objeto. Se uma superfície não é uma face traseira mas ela é obscurecida por superfície de algum outro objeto então aquelas superfícies não podem ser determinadas ou detectadas usando o método de eliminação de face traseira e nós exigimos alguns outros algoritmos.
No entanto, aqueles outros algoritmos são úteis para a detecção de uma superfície que é obscurecida por outras superfícies de objetos e podemos utilizar esses algoritmos em conjunto com este método.
Vamos discutir um desses métodos que é algoritmo de buffer de profundidade ou também conhecido como algoritmo de Z-buffer.
Agora, esse algoritmo é um método de espaço de imagem. Isso significa aqui realizamos comparações no nível do pixel. Por isso, assumimos aqui que já as superfícies são projetadas na grade do pixel e então estamos comparando a distância da superfície da posição do espectador.
Mais cedo, mencionamos que após a projeção as informações de profundidade são perdidas. No entanto, exigimos aqui a informação de profundidade para comparar a distância da superfície a partir de um espectador. Por isso, armazenamos essa informação de profundidade mesmo após a projeção e assumimos um armazenamento extra, que tem essa informação de profundidade, que é chamada de buffer de profundidade ou Z-buffer. Aqui, o tamanho deste buffer é mesmo como o buffer de quadros. Isso significa que há um armazenamento para cada pixel neste buffer.
Outra suposição que fazemos disso é que estamos lidando com volumes canônicos. A profundidade de qualquer ponto não pode ultrapassar o alcance normalizado. Por isso, já temos uma faixa normalizada do volume e a profundidade não pode ultrapassar essa faixa que estamos assumindo. Se assumirmos que então nós realmente podemos fixar o tamanho do buffer de profundidade ou número de bits por pixels. Caso contrário, se permitimos profundidade irrestrita então não sabemos quantos bits a manter e que podem criar questões de implementação. Por isso, vamos para algumas considerações padronizadas.
Agora, este é o algoritmo, o algoritmo de buffer de profundidade mostrado aqui. Entrada é o buffer de profundidade que é inicializado a 1; em seguida temos o buffer de quadros, que é inicializado para a cor de fundo; lista de superfícies e lista de pontos projetados para cada superfície; assim, todos estes são entrada. E saída é esse buffer de profundidade e buffer de quadros com valores apropriados. Isso significa que o valor do buffer de profundidade irá manter-se em mudança e o buffer de quadros conterá os valores finais no final do algoritmo.
Então o que fazemos? Para cada superfície nesta lista de superfície, realizamos algumas etapas. Agora, para cada superfície, temos as posições projetadas do pixel. Então para cada posição de pixel projetada da superfície i, j a partir da posição de pixel mais projetada da esquerda, o que nós fazemos? Calculamos a profundidade denotada por d do ponto projetado na superfície e, em seguida, compará-la com profundidade já armazenada desse ponto.
Se d é menor do que o que já está armazenado no buffer de profundidade no local correspondente então atualizamos essas informações de buffer de profundidade e então atualizamos as informações do buffer de quadro com a cor da superfície particular e esta continuamos para todos os pixels para aquela superfície projetada e fazemos isso para todas as superfícies. Agora o estágio crucial aqui é o cálculo da profundidade, como fazer isso?
Podemos fazer isso de forma iterativa. Vamos ver como.
Considere este cenário aqui. Esta é uma maneira ilustrativa de entender esse método iterativo. Estamos considerando essa superfície triangular, que depois de projeção olha algo assim. Agora, a equação de superfície que conhecemos que podemos representar como ax + by + cz + d = 0. Novamente, se você não está familiarado com isso, você pode se referir a livros didéticos básicos sobre vetores e aviões.
Agora dada essa equação de superfície, podemos descobrir esses valores z em termos de um b c como mostrado aqui. E o valor z é a profundidade desse ponto específico para que esta seja a profundidade de qualquer ponto da superfície. Agora, estamos assumindo volume de visão canonical. Isso significa que todas as projeções são projeções paralelas Assim, a projeção é uma simples, se um ponto é x, y, z então após projeção, ele se torna x, y nós largamos o componente z. Então, essa é a nossa suposição.
Agora, consideremos um pixel projetado i, j da superfície particular. Então x é eu, y é j. Agora, a profundidade do ponto de superfície original z é então dada por esta expressão em que substituímos x e y com i e j a, b, c e d são constantes.
Agora, à medida que progredimos ao longo da mesma linha de varredura, digamos que considere este ponto e este ponto. O próximo pixel está na i + 1, e j. Agora, a profundidade do ponto de superfície correspondente no próximo local do pixel é dada por esta expressão em que substituímos i por i + 1. Depois de expandir e reorganizar, podemos obter este formulário.
Agora esta parte, nós já sabemos ser a profundidade do ponto i, j. Por isso, podemos simplesmente dizer que a profundidade de z é (z-a/c), e aqui você pode ver que este é um termo constante. Por isso, para pontos sucessivos, podemos computar profundidade simplesmente subtraindo um termo constante da profundidade anterior que é o método iterativo.
Então isso é ao longo de uma linha de varredura. O que acontece através de linhas de varredura? Um método iterativo semelhante que podemos formular. Agora, vamos supor o ponto x, y em uma borda de uma superfície projetada digamos, aqui. Agora na próxima linha de varredura, x torna-se (x-1/m) neste caso, e o valor y torna-se y menos 1; m é a inclinação da linha de borda.
Então podemos computar nova profundidade neste novo ponto como mostrado aqui e se expandirmos e reorganizarmos o que vamos obter? Esta nova profundidade em termos da profundidade anterior e de um termo constante. Por isso, novamente, vemos que através de linhas de varredura, podemos computar profundidade nas extremidades adicionando um termo constante à profundidade anterior e, em seguida, ao longo da linha de varredura, podemos continuar subtraindo um termo constante da profundidade anterior.
Portanto, esta é a maneira iterativa de computação profundidade e este método que seguimos no algoritmo de Z-buffer para computar profundidade em um determinado ponto. Vamos tentar entender este algoritmo com um exemplo ilustrativo.
Vamos supor que existam duas superfícies triangulares s1 e s2. Claramente, eles estão no volume de visualização. Agora, os vértices de s1 são dados como estes três vértices, s2 também é dado como estes três vértices. Como antes estamos assumindo projeção paralela devido à transformação de volume de visualização canônica e também, podemos derivar pontos de projeção ou os vértices projetados de s1 e s2 no plano de visualização a serem denotados por este vértices mostrado aqui, que essencialmente, podemos obter simplesmente soltando o componente z. Agora, esta é a situação mostrada nesta figura.
Agora, nos é dado um ponto (3, 1) e queremos determinar a cor neste ponto. Observe que este ponto faz parte de ambas as superfícies, de modo que a cor de superfície que ele deve obter, podemos determinar usando o algoritmo. Agora vamos supor que cl1 e cl2 são as cores de s1 e s2 e bg é a cor de fundo.
Agora, inicialmente, os valores de buffer de profundidade são configurados em um valor muito alto e valores de buffer de quadro são dito como cor de fundo, e então seguimos as etapas do algoritmo, processamos as superfícies uma de cada vez na ordem s1 seguida por s2.
Agora vamos começar pelo s1, o que acontece? A partir dos vértices fornecidos, podemos determinar a equação da superfície s1 para ser x + y + z-6 = 0. Em seguida, determinamos a profundidade do pixel de superfície projetado mais à esquerda na linha de varredura topete que é pixel (0, 6) aqui, que é z a ser 0.
Agora, este é o único ponto na linha de varredura da topografia como você pode ver na figura, então nos movemos para a próxima linha de varredura abaixo que é y=5. E desta forma usando método iterativo, determinamos a profundidade do pixel mais projetado nesta linha de varredura para ser, usando esta expressão para ser 1 porque aqui m é muito alta, infinito. E assim, a equação de superfície é esta.
Em seguida, o algoritmo procede ao cálculo de profundidade e determinação de cor ao longo de y= 5 até a borda direita. Nesse ponto, ele vai para a próxima linha de varredura abaixo que é y= 4 aqui. Agora, podemos pular todas essas etapas e podemos ir diretamente para y= 1, esta linha em que reside o ponto de interesse.
Agora, seguindo esse procedimento iterativo que delineamos anteriormente através de linhas de varredura, computamos primeiramente a profundidade do ponto mais à esquerda aqui como z=5. Pulamos esses passos, você pode fazer os cálculos por conta própria e descobrir. Em seguida, nos movemos ao longo desta linha de varredura quando esta direção. Então, vamos para o próximo ponto aqui, depois aqui, e assim em cima até este ponto, (3, 1), e calculemos que neste ponto z é 2.
Agora, esse valor de profundidade é menor do que já valor armazenado que é o infinito. Então nós fixamos esse valor no local de buffer de profundidade correspondente e então reajustamos o valor do buffer de quadro de fundo para a cor da superfície 1.
Aí o nosso processamento contínuo para todos os pontos, mas esses não são de muita relevância aqui porque estamos preocupados apenas com este ponto, então vamos pular esses processamentos. Assim, uma vez que o processamento for concluído para s1 para todos os pontos projetados, vamos para s2 e realizamos etapas iterativas semelhantes. E então, descobrimos a cor naquele ponto específico para s2 e depois realizamos comparação e atribuímos a cor.
Por isso, pulamos aqui todos os outros cálculos e ele é deixado como um exercício para você completar os cálculos. Sendo assim, essa é a ideia por trás do algoritmo de buffer de profundidade ou do algoritmo Z-buffer.
Agora um ponto está lá. Com este algoritmo em particular, um pixel pode ter uma cor de superfície. Assim, dadas múltiplas superfícies, um pixel de cada vez pode ter apenas uma dessas cores de superfície. A partir de qualquer posição de visualização dada, isso significa que apenas uma superfície é visível. Portanto, esta situação é aceitável se estamos lidando com superfícies opacas.
Se as superfícies não forem opacas, se forem transparentes então definitivamente, conseguimos ver múltiplas superfícies que não é possível com este algoritmo de buffer de profundidade específico. Em caso de superfícies transparentes, o pixel color é uma combinação da cor de superfície mais contribuição de superfícies para trás, e nosso buffer de profundidade não funcionará nesse caso porque temos apenas um local para armazenar o valor de profundidade para cada pixel. Por isso, não podemos armazenar todas as contribuições de superfície para o valor da cor.
Existe um outro método chamado de método A-buffer que pode ser usado para superar esta limitação específica. Não entraremos nos detalhes deste método, você pode referir-se ao material, material de leitura. Sendo assim, em resumo, o que podemos fazer com método de buffer de profundidade.
Por isso, para recapitear, hoje aprendemos sobre ideia básica de remoção de superfície oculta. Aprendemos sobre diferentes propriedades que podem ser utilizadas para reduzir as computações. Em seguida, aprendemos sobre duas amplas classes de algoritmos de remoção de superfície oculta, um é o método do espaço objeto, um é o método do espaço de imagem. Aprendemos sobre um método de espaço de objetos que é o método de eliminação de face traseira, e também aprendemos sobre um método de espaço de imagem que é o algoritmo de buffer de profundidade ou algoritmo Z-buffer.
O que quer que tenhamos discutido hoje pode ser encontrado neste livro, você pode referir-se ao capítulo 8, seções 8,1 8,4. E se você quiser aprender mais sobre um algoritmo de A-buffer então você também pode conferir a seção 8,5. Isso é tudo para hoje. Obrigado e adeus.