Nível de detalhe
Em computação gráfica, o nível de detalhe (em inglês: level of detail, sigla LOD) é uma técnica que permite várias representações para um objecto gráfico, que vão sendo activadas de acordo com as diferentes distâncias a que o utilizador se encontra. Ou seja, envolve o decréscimo da complexidade da representação de objectos 3D e assim permite economizar recursos de computação. Esta técnica é muito utilizada no desenvolvimento de jogos 3D, mas também pode ser aproveitada para animações em 3D. A utilização das técnicas de Level of Detail permite um aumento da eficiência e rendimento, diminuindo assim o nível de trabalho sobre os vários níveis gráficos, chamados pipeline. A reduzida qualidade visual do modelo passa muitas vezes despercebida devido a um pequeno efeito sobre a aparência do objecto, quando distante ou em movimento rápido .
Recentemente, as técnicas LOD incluem também gestão shadder para manter o controle da complexidade do pixel. Uma forma de gestão LOD tem sido aplicada às texturas há anos, sob o nome de mipmapping, que também proporcionando maior qualidade.
Referencia Histórica
[editar | editar código-fonte]A origem[1] dos algoritmos LOD para computação gráfica 3D, quanto é possível determinar, foram dados a conhecer num artigo que saiu originalmente em Outubro de 1976 emissão de Communications of the ACM de James H. Clark.. Na época, os computadores eram raros, e os gráficos estava a ser objecto de investigação. Devido a isso, muitas diferenças poderiam ser observadas no que se refere aos algoritmos de hoje, mas também muitos pontos comuns. O algoritmo original apresentou uma abordagem muito mais genérica para o que será discutido aqui. Depois de introduzir alguns algoritmos disponíveis de gestão de geometria, afirma-se que começaram a aumentar os ganhos "... a estruturação de ambientes que vão sendo dados", permite a explorações mais rápidas, transformações e operações Clipping. O mesmo ambiente estruturação agora é proposto como uma forma de controle variando detalhe evitando assim cálculos desnecessários, e ainda tratar da qualidade visual:
“ | Por exemplo, um dodecaedro tem um aspecto de uma esfera a uma grande distância, e assim podemos modela-lo para ser visto ao longe. No entanto, ele não pode ser visto de perto, pois parecera um dodecaedro. Uma solução para isso é simplesmente definí-lo com o maior pormenor que nunca vai ser necessário. No entanto, ele poderia ter muito mais detalhes do que é necessário para representá-lo em grandes distâncias, e em um ambiente complexo com muitos objectos complexos, haveria muitos polígonos (ou outras primitivas geométricas) e muitas superfícies visíveis para o algoritmo lidar eficientemente. | ” |
O algoritmo proposto visiona uma estrutura de dados de árvore que codifica nos seus arcos tanto transformações como transições dos objetos mais detalhados. Deste modo, cada nó codifica um objeto e segundo uma heurística rápida, a árvore é provida de folhas que fornecem a cada objeto mais detalhe. Quando uma folha é conseguida, outros métodos podem ser usados quando o mais alto detalhe é necessário, como Catmull 's que permite subdivisão recursiva. [2]
“ | O ponto importante, porém, é que, em um ambiente complexo, a quantidade de informação apresentada sobre os diferentes objetos no ambiente varia de acordo com a fração do campo de visão ocupados por aqueles objectos. | ” |
O artigo então introduz clipping (não deve ser confundida com culling, muitas vezes semelhantes), e várias considerações no jogo de trabalho gráfico e do seu impacto no desempenho, e as interacções entre o algoritmo proposto e outros para melhorar a prestação de velocidade. Quem estiver interessado em saber mais deve consultar as referências para mais informações sobre o tema.
Abordagens Conhecidas
[editar | editar código-fonte]Embora o algoritmo introduzido anteriormente abrange toda uma gama de técnicas de gestão nível de detalhe, aplicações do mundo real costumam empregar métodos diferentes consoante a informação a ser prestada. Devido ao aparecimento de objectos considerados, dois principais famílias algoritmos são utilizadas.
O primeiro é baseado em subdividir o espaço em uma quantidade finita de regiões, cada uma com um determinado nível de detalhe. O resultado é discreta quantidade de níveis detalhes, a partir do qual apareceu o nome LOD Discreto (DLOD). Não há como apoiar uma transição suave entre níveis LOD, a este nível, embora alpha blending ou morphing pode ser usado para evitar popping visual.
Este último considera a rede de polígonos, que é processada como uma função que deve ser avaliada para evitar erros excessivos, isto é que são as funções de algumas heurísticas (normalmente distância). Os dados da função rede são continuamente avaliada, em seguida, uma versão optimizada é produzida de acordo com uma troca entre a qualidade visual e desempenho. Aqueles tipo de algoritmos são geralmente referidos como LOD Continuo(CLOD).
Detalhes de LOD Discreto
[editar | editar código-fonte]O conceito básico de LOD discreto (DLOD) deve fornecer vários modelos para representar o mesmo objeto. A obtenção desses modelos necessita de um algoritmo externo que é muitas vezes muito complicado e sujeito de muitas técnicas de redução de polígono. Os algoritmos LODding sucessivos assumirão simplesmente que aqueles modelos estão disponíveis.
Os algoritmos de DLOD muitas vezes são usados na realização de aplicações intensivas com pequenos jogos, que podem ajustar-se facilmente na memória. Embora fora de core de algoritmos possa ser usado, informações muito pequenas não é bem ajustada a esta espécie da aplicação. Este tipo do algoritmo é normalmente mais fácil de trabalhar, proporcionando simultaneamente um desempenho mais rápido e menor uso de CPU devido às poucas operações envolvidas.
Os métodos de DLOD muitas vezes são usados para objetos com “movimentos autónomos”, pode incluir também métodos de animação complexos. Uma abordagem diferente é usada para geomipmapping [3], um popular algoritmo de interpretação de terreno, porque isto se aplica a malhas de terreno que são tanto graficamente como topológicamente diferentes de redes "de objeto". Em vez de computar um erro e simplificar a malha segundo isto, o geomipmapping toma um método de redução fixo, avalia o erro introduzido e calcula a distância a que o erro é aceitável. Embora simples, o algoritmo fornece bom desempenho.
Exemplo LOD Discreto
[editar | editar código-fonte]Como um exemplo simples, considere o seguinte esfera. Uma abordagem seria LOD discreto que escolheria modelos diferentes para serem usados em distâncias diferentes.Porque o modelo pode ser gerado de uma forma simples pela formulação matemática, usando um número diferente de pontos de amostragem distribuídos na superfície é suficiente para gerar vários modelos necessitados. Este passo não é um algoritmo LOD.
Imagem | |||||
---|---|---|---|---|---|
Vertices | ~5500 | ~2880 | ~1580 | ~670 | 140 |
Notas | Detalhe máximo, vista ao perto. |
Detalhe mínimo , vista ao longe. |
Para simular um cenário realista, usa-se uma aplicação ad-hoc para escrita. Asseguramo-nos que não somos o CPU usando algoritmos simples e operações de fragmento mínimas. Cada frame, o programa calculará a distância de cada esfera e escolherá um modelo de uma semelhante a esta informação. Para mostrar facilmente o conceito, a distância a que cada modelo é usado é codificada no código fonte. Um método mais envolvido calcularia modelos adequados segundo a distância de uso escolhida. Usa-se OpenGL para interpretação devido a sua elevada eficiência na gestão de pequenas partes, armazenando cada modelo em uma lista evitando assim a comunicação de cabeçalhos. O carregamento de um vértice adicional é dado pela aplicação direccional de duas fontes luminosas idealmente localizadas no infinito. O quadro seguinte compara a performance do desempenho do LOD discreto e um método de maior detalhe ("Detalhe Bruto"). .
Detalhe Bruto | DLOD | Comparação | |
---|---|---|---|
Rendered images |
|||
Render time | 27.27 ms | 1.29 ms | 21 × Redução |
Scene vertices (Milhares) |
2328.48 | 109.44 | 21 × Redução |
Hierarquia LOD
[editar | editar código-fonte]Como o hardware é orientado para grandes quantidades de detalhes, os objectos de pequeno detalhe podem estabelecer performances sub-ótimas. O sistema HLOD evita o problema agrupando objectos diferentes em conjunto[4]. E assim obter uma maior eficiência, e tirar partido da proximidade dos objectos.
Referências
[editar | editar código-fonte]- ↑ Communications of the ACM, October 1976 Volume 19 Number 10. Pages 547-554. Hierarchical Geometric Models for Visible Surface Algorithms by James H. Clark, University of California at Santa Cruz. Digitalized scan is freely available at https://web.archive.org/web/20060910212907/http://accad.osu.edu/%7Ewaynec/history/PDFs/clark-vis-surface.pdf.
- ↑ Catmull E., A Subdivision Algorithm for Computer Display of Curved Surfaces. Tech. Rep. UTEC-CSc-74-133, University of Utah, Salt Lake City, Utah, Dec. 1974.
- ↑ Carl Erikson's paper at http://www.cs.unc.edu/Research/ProjectSummaries/hlods.pdf provides a quick, yet effective overlook at HLOD mechanisms. A more involved description follows in his thesis, at https://web.archive.org/web/20061006053805/http://www.cs.unc.edu/~geom/HLOD/Dissertation/Dissertation.pdf.
- ↑ de Boer, W.H., Fast Terrain Rendering using Geometrical Mipmapping, in flipCode featured articles, October 2000. Available at http://www.flipcode.com/tutorials/tut_geomipmaps.shtml.