Por que as coordenadas homogêneas são usadas em computação gráfica?
Qual seria o problema se as coordenadas homogêneas não fossem usadas nas transformações matriciais?
Por que as coordenadas homogêneas são usadas em computação gráfica?
Qual seria o problema se as coordenadas homogêneas não fossem usadas nas transformações matriciais?
Respostas:
Eles simplificam e unificam a matemática usada nos gráficos:
Eles permitem representar traduções com matrizes.
Eles permitem que você represente a divisão por profundidade nas projeções em perspectiva.
O primeiro está relacionado à geometria afim. O segundo está relacionado à geometria projetiva.
Está no nome: coordenadas homogêneas são bem ... homogêneas. Ser homogêneo significa uma representação uniforme de rotação, translação, escala e outras transformações.
Uma representação uniforme permite otimizações. O hardware gráfico 3D pode ser especializado para realizar multiplicações de matrizes em matrizes 4x4. Pode até ser especializado para reconhecer e salvar em multiplicações por 0 ou 1, porque essas são frequentemente usadas.
Não usar coordenadas homogêneas pode dificultar o uso de hardware altamente otimizado ao máximo. Qualquer que seja o programa que reconheça que instruções otimizadas do hardware podem ser usadas (normalmente um compilador, mas às vezes as coisas são mais complicadas) para coordenadas homogêneas, será difícil otimizar para outras representações. Ele escolherá instruções menos otimizadas e, portanto, não usará o potencial do hardware.
Como havia pedidos de exemplos: o PS4 da Sony pode realizar multiplicações matriciais massivas. É tão bom nisso que ficou esgotado por algum tempo, porque grupos deles foram usados em vez de supercomputadores mais caros. A Sony exigiu posteriormente que seu hardware não pudesse ser usado para fins militares. Sim, supercomputadores são equipamentos militares.
Tornou-se bastante comum os pesquisadores usarem placas gráficas para calcular suas multiplicações matriciais, mesmo que não haja gráficos envolvidos. Simplesmente porque são magnitudes melhores do que as CPUs de uso geral. Para comparação, as CPUs modernas de vários núcleos têm da ordem de 16 pipelines (x0,5 ou x2 não importa muito), enquanto as GPUs têm da ordem de 1024 pipelines.
Não são apenas os núcleos que os pipelines que permitem o processamento paralelo real. Os núcleos funcionam em threads. Threads devem ser programados explicitamente. Os oleodutos funcionam no nível da instrução. O chip pode paralelizar instruções mais ou menos por conta própria.
complemento:
coordenadas homogêneas também permitem representar o infinito: em 3D, ou seja, o ponto no infinito na direçãox,y,z . Normalmente, fontes de luz em posição finita ou infinita podem ser representadas da mesma maneira.
Sobre a transformação de perspectiva, ele ainda permite interpolar corretamente, sem distorção de perspectiva (ao contrário do hardware gráfico inicial no PC).
Como gosto pessoal, sempre me abstive (quando possível) de usar coordenadas homogêneas e preferi a formulação cartesiana simples.
O principal motivo é o fato de que coordenadas homogêneas usam 4 entradas triviais nas matrizes de transformação (0, 0, 0, 1), envolvendo armazenamento e computação inúteis (também a sobrecarga das rotinas de computação de matriz de uso geral que são "por padrão" usadas em este caso).
A desvantagem é que você precisa de mais cuidado ao escrever as equações e perde o apoio da teoria das matrizes, mas até agora eu sobrevivi.
plain Cartesian formulation
ou link para um recurso que descreve seu uso em gráficos 3D?
w
?
Seja R e S matrizes de rotação e escala e T seja um vetor de conversão. Na computação gráfica, você pode precisar fazer uma série de traduções até certo ponto. Você pode imaginar como isso pode ser complicado.
Os cálculos nas coordenadas afins geralmente exigem divisões, que são caras em comparação com adições ou multiplicações. Geralmente, não é necessário dividir ao usar coordenadas projetivas.
O uso de coordenadas projetivas (e mais geralmente, a geometria projetiva) também tende a eliminar casos especiais, tornando tudo mais simples e uniforme.