O que é textura



Baixar 3,49 Mb.
Página1/10
Encontro06.03.2018
Tamanho3,49 Mb.
  1   2   3   4   5   6   7   8   9   10



Introdução
As texturas utilizadas na computação têm experimentado grande evolução na última década. Resultado deste rápido processo, os conceitos e as definições a ela pertinentes ainda não são unanimidade: a literatura especializada não chegou a uma posição consensual acerca de seus termos, conceitos e definições. Em contrapartida, é indiscutível que são amplas as possibilidades de aplicação gráfica desse recurso e, por conseqüência, os benefícios notáveis que elas trouxeram.
Uma das aplicações que mais pode-se notar o uso das texturas são os jogos, os quais usam amplamente o recurso e exploram profundamente suas possibilidades. Contudo, a empresa desenvolvedora de jogos que melhor utilizar estas técnicas, garante um maior lazer por parte do jogador e, conseqüentemente, conquista uma maior prosperidade em seus produtos. Dessa forma, as técnicas de texturas utilizadas nos jogos, especialmente os de última geração, não são divulgadas, valendo-se de métodos híbridos e descobertas que visam incrementar o potencial de um jogo. O presente trabalho, portanto, tem por objetivo investigar os benefícios e as possibilidades do uso das texturas, tentando identificar alguns elementos leventados na aplicação aos jogos, apresentando, sempre que possível, técnicas que podem ser usadas para simular um determinado efeito.

Para tanto, no primeiro capítulo, serão examinadas as várias definições básicas relacionadas ao assunto, como também será explorado o processo de utilizar texturas, estudando-se conceitos, possibilidades e dificuldades. O primeiro passo consistirá em apresentar algumas definições formais do termo textura e algumas idéias a elas relacionadas; para em seguida, fazer um levantamento dos principais benefícios proporcionados, exemplificando sempre que possível. Após isso, será referenciada algumas aplicações, para melhor contextualizar seu uso, e por fim, o foco será o estudo da texturização e do mapeamento de texturas, investigando as possibilidades e as dificuldades relacionadas ao mapeamento.

O segundo capítulo considera vários mapeamentos e classificações de texturas, detendo-se no exame dos termos que se referem a tipos particulares de mapeamento, sempre apresentado, ao final de uma explicação, uma imagem que ilustre seu resultado. Neste, também será apresentando uma breve descrição matemática do processo de texturização para casos específicos. Em seguida, uma classificação dos tipos de textura será discutida, tentando salientar as divisões mais encontradas na literatura.

O terceiro capítulo trata especificamente das texturas em jogos, salientando suas qualidades de verossimilhança e de custo computacional, as quais configuram elementos essenciais para o milionário e crescente mercado de games. Neste capítulo serão apresentadas várias imagens, visando identificar alguns dos tipos de textura expostos no capítulo anterior, bem como algumas particularidades que podem ser notada. Também serão apresentadas algumas alterações que as imagens costumam sofrer para que se tenham texturas mais sofisticadas. Ao final do capítulo, a técnica de Cel-Shading, que é um método que está sendo muito usado em jogos e, que usa mapeamento de texturas unidimensionais, será apresentada brevemente.

O quarto capítulo é dedicado ao estudo das bibliotecas gráficas, às quais o funcionamento dos jogos está diretamente relacionado, uma vez que elas possuem muitos recursos que são implementados em hardware, agilizando o pesado processamento que alguns jogos possuem. As bibliotecas gráficas mais famosas e usadas – OpenGL e DirectX – são referidas e nelas analisadas as funções que trabalham com mapeamento de textura, bem assim suas vantagens e fins. Por fim, será feito um comparativo entre as vantagens e desvantagens no emprego de cada uma dessas duas bibliotecas.

1. Conceitos Relacionados a Texturas
As texturas utilizadas na computação fazem parte de uma área que tem evoluído fortemente na última década. Como costuma acontecer nas fases de experimentação, pesquisa e desenvolvimento, e até mesmo por ser recente a evolução, os conceitos a ela pertinentes ainda não alcançaram consenso na literatura. Apesar disto, os benefícios proporcionados por elas são notáveis e inegáveis, o que fez com que uma grande diversidade de aplicações gráficas a utilizassem.

O uso de texturas pode ser feito de diversas maneiras, cada qual se valendo do objetivo final de uma aplicação. Desta forma, existem muitas possibilidades, ao se decidir trabalhar com texturas, tanto em métodos quanto em combinações, porém, o uso delas não é uma tarefa trivial, havendo muitas dificuldades que precisam ser consideradas.

Por tais razões, neste capítulo serão expostas várias definições básicas relacionadas ao assunto, bem como seus benefícios e aplicações. Em seguida, o processo de utilizar texturas será explorado, apresentando-se conceitos, possibilidades e dificuldades.


    1. Textura: benefícios e aplicações

Nesta seção serão apresentadas algumas definições formais do termo textura, como também algumas idéias que estão relacionadas a elas. Os principais benefícios proporcionados serão levantados e um exemplo será dado para demonstrá-los. Por fim, algumas aplicações serão citadas para melhor contextualizar seu uso.


1.1.1 – Textura
O termo “textura” não se aplica apenas ao ramo da computação, possuindo significados tanto na natureza, como também em materiais, como, por exemplo, tecidos em geral. De fato, a expressão “textura” pode ter diferentes significados, de acordo com o contexto no qual é empregada. Assim, para os engenheiros têxteis pode se referir ao efeito de tramar um tecido, para os histologistas pode dizer respeito à contextura da pele e para um literato pode remeter ao arranjo das partes de uma obra.
A informática modelou esse substantivo do mundo real para as mais diversas aplicações relacionadas à Computação Gráfica. Isto explica a razão pela qual, ainda que os pesquisadores desta área relacionem o vocábulo com a “escala dos objetos visíveis numa imagem”, ele pode receber conotações particulares, de acordo com o campo de aplicação dos sistemas gráficos1.
Embora não exista uma definição universalmente aceita para este conceito, muitos autores a referenciam como um conjunto de estruturas detalhadas, existentes nas superfícies físicas, perceptíveis ao olho humano, e que trazem grande quantidade de informações sobre a natureza de uma superfície.
Eis algumas definições formais do termo:
Instituto de Engenheiros Elétricos e Eletrônicos (1990), IEEE Standard Glossary of Image

Processing and Pattern Recognition Terminology:

“Textura é um atributo representando o arranjo espacial dos níveis de cinza dos pixels em uma região.”


Sklansky (1978), Image Segmentation and Feature Extraction:

“Uma região, em uma imagem, tem uma textura constante se um conjunto de estatísticas locais ou outras propriedades locais da função da figura são constantes, de lenta variação, ou de variação aproximadamente periódica.”


Wilson e Spann (1988), Image Segmentation and Uncertainty:

“Regiões de Textura são padrões espacialmente estendidos baseados na maior ou menor repetição precisa de alguma unidade celular (texton ou subpadrão).”


Jain (1988), Fundamentals of Digital Image Processing:

“O termo textura geralmente se refere à repetição de elementos básicos de textura chamados texels. O texel contem vários pixels, cuja colocação pode ser aleatória ou periódica. Texturas Naturais são geralmente aleatórias, ao passo que texturas artificiais são freqüentemente determinísticas ou periódicas. Textura pode ser áspera, fina, suave, granulada, ondulada, irregular, regular, ou linear.”


Jahne (1995), Digital Image Processing:

“Modelos que caracterizam objetos são chamados texturas em Processamento de Imagens.


Gonzalez e Woods (1992), Digital Image Processing:

“Nós intuitivamente vemos este descritor como provedor de uma medida de propriedades tal como suavidade, asperidade e regularidade.”


Uma forma muito simples de entender a textura é imaginá-la como se fosse um papel de parede, o qual pode ser colado em uma variedade de objetos n-dimensionais. Desta forma, a representação de uma textura, em Computação Gráfica, nada mais é que uma matriz que contêm informações sobre cada um de seus elemento, como por exemplo, dados de cor, de luminância, ou de cor e canal alfa. De forma análoga ao espaço de tela, que é um conjunto de coordenadas paramêtricas bidimensionais, o espaço de textura é um conjunto de coordenadas paramétricas que pode ser definido sobre um domínio de uma, duas ou três dimensões, sendo que enquanto cada elemento do espaço de tela é chamado de pixel (picture element), no espaço de textura, chama-se texel (texture element).
Contudo, é interessante dizer que essa intuição leva, por parte da maioria das pessoas, a entender uma textura como um objeto bidimensional, porém, elas podem também ser uni ou tridimensional2.
1.1.2 – Benefícios
A textura pode ser entendida como um conjunto de elementos que interfere na aparência da superfície de um objeto, mediante os efeitos de brilho e luminosidade obtidos dos pixels3 ou de outros pontos, da mesma superfície, que tenham a capacidade de atribuir aparência de realidade à imagem deste objeto. Reside neste último aspecto a importância da textura para a computação gráfica, que é justamente a aptidão que ela tem de conferir verossimilhança à imagem.
Sabe-se que a visão é um dos sentidos mais caros ao homem, uma vez que “é por ela ou a partir dela que as observações e constatações básicas são feitas” e que sua curiosidade é aguçada. Sabe-se, também, que natureza humana exige o belo. As representações gráficas, ainda que na área científica, não podem deixar de tomar em conta a questão estética, aí incluída a ergonomia visual. A textura entra justamente neste aspecto, atribui maior conforto à visão, diminuindo, por exemplo, as intercorrências de fadiga visual provocadas pela tela do monitor4. Além disto, a textura é especialmente importante na pesquisa científica, de modo a permitir que as imagens produzidas, ou reproduzidas, por computação gráfica tenham o atributo da veracidade. É que, tomando-se a “computação gráfica como uma extensão da visão humana”, é essencial que elas mantenham e exibam “as características próprias do modelo que representam”5.
É de consenso na literatura, diferentemente do que ocorre quanto aos conceitos e definições envolvidos, que o uso das texturas traz grandes benefícios para a síntese de imagens, e daí o motivo pelo qual seu estudo ganha novos adeptos a cada dia. Pensado nestas vantagens, pode-se destacar três pontos, que serão expostos abaixo.
Um primeiro grande benefício relacionado à utilização de texturas é o aumento do realismo das cenas geradas por Computação Gráfica, uma vez que outras técnicas, como iluminação, sombreamento, remoção de superfícies escondidas, entre outras, não conseguem, por si próprias, conferir alto grau de verossimilhança às imagens, tendo em vista a complexidade do mundo real.
Além do aspecto de aproximar a realidade, as texturas também possuem vantagens em termos de custo computacional, pois elas podem modelar características de objetos complexos sem mudar a geometria do objeto, e com isso, tornar uma cena mais rápida de ser renderizada.
Um terceiro benefício, segundo o famoso “Red Book”6, é garantir certos aspectos visuais, pois em alguns pacotes gráficos, como OpenGL, a textura é empregada em objetos fazendo-se uma escala automática, sendo fornecido, para isto, os pontos extremos do objeto e da textura, e assim, garantindo que ela possa ser visualizada de acordo com as transformações do objeto.
Como exemplo desses três benefícios, pode-se pensar em uma parede de tijolos. Ao se modelar tal objeto, para cada tijolo deverá ser criado um novo polígono, o que implica que para uma cena com uma grande parede serão precisos muitos polígonos, aumentando o custo de renderização. Entretanto, se para a mesma cena fosse usada uma textura de tijolos, apenas um grande polígono deveria ser desenhado e, sobre ele, seria preenchida a textura, fornecendo um nível de detalhes igual ou maior e ainda reduzindo significadamente o processamento da cena. Contudo, esquecendo a vantagem computacional, se a parede fosse produzida sem textura, os tijolos poderiam parecer muito lisos e regulares para serem realistas, enquanto que uma foto de uma parede real poderia ser usada como textura do objeto e com isso, se obter uma cena mais real. Finalmente, usando este mesmo exemplo para ilustrar o terceiro benefício citado, quando a parede de tijolos é vista em perspectiva, os tijolos podem aparecer menores na medida em que a parede se afasta do ponto de visão.
1.1.3 – Aplicações
As aplicações que usam texturas são vastas, começando por padrões de papéis de parede, passando por aquelas que simulam substâncias naturais e químicas, como mármore, madeira, fogo, roupa; ajudando a medicina com seu uso em visualização de imagens médicas e culminando em uma aplicação massiva no uso dos jogos de última geração.
As possibilidades de aplicação de textura são infinitas: podem ser aplicadas a pontos, polígonos e imagens em geral, bem como combinadas com outros atributos de uma cena, como sombra e iluminação, para gerar texturas mais sofisticadas. Algumas destas possibilidades recebem termos particulares, os quais serão descritos no próximo capítulo. No caso dos jogos, as alternativas também são numerosas, uma vez que elas podem ser utilizadas para gerar terrenos que constituem um certo cenário do jogo, como será comentado no capítulo 3.
1.2 – Texturização: possibilidades e dificuldades
Nesta seção, os conceitos relacionados ao processo de se usar texturas serão expostos, como suas possibilidades e suas dificuldades.
1.2.1 - Texturização e mapeamento de texturas
O conceito de texturização pode ser definido como uma forma de se variar as propriedades de uma superfície ponto a ponto de modo que esta simule detalhes que não estão de fato presentes na sua geometria. De forma mais simples e intuitiva, texturização nada mais é do que o processo de empregar uma textura em um objeto. No exemplo da seção acima, portanto, o processo de colocar uma textura na parede pode ser entendido como uma texturização.
O processo de texturização, normalmente, é feito com o uso de uma função de mapeamento, a qual associa cada texel a pontos de uma superfície de um objeto tridimensional. Por esta razão, a texturização é muitas vezes sinônimo de mapeamento de texturas, sendo este o termo mais empregado quando se quer referir ao processo de utilizar texturas em cenas.
Assim, os três componentes básicos necessários a um procedimento de mapeamento de textura são: (1) a textura, definida em um espaço de textura, (2) a geometria tridimensional, em geral definida por uma malha de vértices e (3) uma função de mapeamento que associa a textura ao objeto tridimensional.
O mapeamento de texturas cresce de complexidade de acordo com geometria do objeto, pois muitas vezes determinar uma função de mapeamento não é uma tarefa simples. Logicamente, é muito mais simples encontrar uma função que faça este mapeamento para uma bola, do que para um corpo humano.
Por esse motivo, o mapeamento de texturas está presente em muitas placas gráficas, possibilitando a modificação das informações do pixel durante o processo de rendering, mesmo após o término do processo de tonalização. O tempo de rendering de imagens em Computação Gráfica depende especialmente do hardware e de como ele é utilizado: o nível de entrada e interação do usuário podem reduzir significativamente o desempenho do sistema. Assim, a utilização de hardware gráfico para o mapeamento de textura pode ajudar a maximizar o desempenho.
1.2.2 – Possibilidades de mapeamento
Exposto o conceito de mapeamento de texturas, pode-se explorar um pouco mais as possibilidades de mapeamento introduzidas na seção anterior.
O mapeamento de texturas pode ser feito sobre um conjunto de polígonos ou superfícies curvas, e pode-se repetir uma textura em uma, duas ou três direções (dependendo de quantas dimensões a textura é definida) para cobrir a superfície. Há também como mapeá-las automaticamente em um objeto, de tal forma que a textura indique contornos e outras propriedades do objeto visto.
Objetos brilhantes podem ser texturizados para que eles aparentem estar no centro de um quarto, ou de qualquer outro ambiente, refletindo os ambientes em sua superfície. Esta possibilidade é conhecida como a técnica enviromnent map, muito utilizada em jogos, que será melhor explicada no próximo capítulo.
Uma textura ainda pode ser aplicada de diferentes formas: pintada diretamente, como um decalque, usada para modular a cor de uma superfície que teria sido pintada, ou para misturar a cor de uma textura com a cor de uma superfície.

1.2.3 – Dificuldades no mapeamento

O que faz o mapeamento de texturas ser enganoso é o fato de que uma textura retangular pode ser mapeada para regiões não retangulares, e isto precisa ser feito de uma forma coerente.


Dependendo do tamanho da textura, da distorção quadrilateral, e do tamanho da imagem de tela, alguns texels podem ser mapeados para mais de um fragmento (pixel), e alguns fragmentos podem ser cobertos por múltiplos texels. Como uma textura é feita de texels discretos, operações de filtro podem ser executada para mapear texels a fragmentos.
Como exemplo, se muitos texels correspondem a um fragmento, suas médias são arredondadas para baixo para que então possa ser feito o encaixe. Se os limites de texel caem sobre limites de fragmento, uma média ponderada dos texels aplicados é executada.
Também por causa desses cálculos, a texturização é computacionalmente cara, o qual é mais um motivo de muitos sistemas gráficos especializados incluírem suporte de hardware para mapeamento de texturas.
É importante lembrar que a dimensão do espaço de textura é independente da dimensão do espaço do objeto a ser mostrado. Por exemplo, uma textura unidimensional pode ser usada para gerar isolinhas sobre uma superfície arbitrária.
Apresentadas as noções básicas acerca da textura, pode-se passar aos tipos de mapeamento usualmente empregados.
2. – Mapeamentos e Classificações
Conforme visto no capítulo anterior, o termo mapeamento de texturas é o mais empregado quando se quer referenciar o processo de aplicar uma textura em um determinado objeto. Entretanto, a palavra mapeamento (mapping) é frequentemente acompanhada de outras que, juntas, significam um tipo particular de mapeamento. Contudo, esta diversidade de mapeamentos pode ser feita, ainda, sobre muitos tipos de textura, aumento as possibilidades visuais.
Da mesma forma que não há um consenso na literatura sobre a definição do que seja uma textura computacional, também não há uma classificação padrão dos tipos de texturas existentes. Porém, para este propósito, pode-se considerar as classes de textura que mais aparecem em materiais didáticos, ou mesmo fixar certos atributos, como, por exemplo, origem e padrão, e a partir deles expor algumas divisões.
Assim, neste capítulo serão expostos os termos que se referem aos diversos tipos de mapeamento, como também um breve descrição matemática do processo de texturização para casos específicos. Em seguida, uma classificação dos tipos de textura será discutida, tentando salientar as divisões mais encontradas na literatura.
2.1 – Tipos de mapeamento

Nesta seção, serão expostos vários tipos de mapeamento, os quais serão identificados por seus nomes particulares, examinados em suas principais características e, sempre que possível, exemplificados com uma imagem. Como para alguns desses termos não há uma tradução correta, optou-se por deixá-los todos na língua inglesa. Ao final, uma breve descrição matemática de mapeamento de texturas em polígonos será apresentada.



2.1.1 - Texture Mapping
Embora a tradução deste termo seja exatamente mapeamento de textura, ele é geralmente usado para definir uma forma particular de texturização. Segundo o material publicado no SigGraph7 do ano de 1997, o texture mapping é aquele que não altera a suavidade (no sentido de ser lisa) de uma superfície, mas o que apenas define um padrão de cor para ela. É o mapeamento mais simples, usado muitas vezes como um simples decalque. Eis um exemplo deste mapeamento produzido pela Pixar Shutterbug:

Figura 2.1 – Texture Mapping

Pode-se notar que o piso do quarto apresenta uma textura de madeira, fornecendo um efeito visual bastante interessante quando comparado ao uso de uma simples cor que poderia ser pintada no chão. Além disto, a idéia do decalque está presente no cubo, onde parece que a foto da Monalisa foi “colada” nas faces do cubo. Nesta mesma imagem, também há texturas na bóia, bola, chapéu e parede.

2.1.2 - Bump Mapping

O termo bump mapping é frequentemente traduzido como mapeamento de rugosidade, porém, seu uso não está necessariamente restrito ao ato de querer dar uma aparência rugosa a uma determinada superfície. Ele também é usado quando se deseja obter um efeito áspero, dentado, perfurado, sem que se altere a superfície, ou seja, quando o objetivo é definir protuberâncias que não estão presentes na geometria do objeto, como uma espécie de ilusão.

A origem deste termo foi concebida por Blinn, o qual constatou que quando uma textura, oriunda de uma fotografia de alguma superfície áspera, é utilizada no processo de rendering, esta não fica muito correta, pois a iluminação do ambiente em que tal superfície foi fotografada é diferente do modelo de iluminação usado em uma cena. Assim, ele propôs um método que ameniza este efeito, o qual consiste em perturbar o vetor normal referente à superfície antes de aplicar o modelo de iluminação. A este método foi dado o nome de bump mapping.

Usando a mesma imagem da Pixar, porém agora com bump mapping, pode-se notar claramente a diferença entre os dois tipos de mapeamento.



Figura 2.2 – Bump Mapping

O objeto em que se pode notar uma grande diferença é a bóia, a qual dá a impressão que os losangos de sua superfície possuem uma saliência, entretanto, o modelo geométrico é o mesmo da figura 2.1, mudando-se apenas o tipo do mapeamento.



  1   2   3   4   5   6   7   8   9   10


©livred.info 2017
enviar mensagem

    Página principal