Tópicos de matemática para programação de gráficos 3D [fechado]


14

Entendo que os seguintes tópicos de matemática são necessários para a programação de gráficos 3D. Comecei a fazer alguns deles no meu curso de matemática. Alguém pode me apontar na direção de um recurso que explica como eles se aplicam? Quais problemas gráficos / de jogo são usados ​​para resolver?

  • matemática de vetor
  • matriz de matemática
  • quaternions
  • álgebra Linear

Tanto quanto eu posso ver, todos esses são tópicos de álgebra / matriz lineares. Existem outros tópicos necessários?


Esta pergunta tem algumas informações boas sobre isso: gamedev.stackexchange.com/questions/2029/…
michael.bartnett

@ Beardcp eu poderia ir tão longe quanto duplicar.
The Duck Comunista

Respostas:


10

A álgebra linear é a principal disciplina para a programação de gráficos 3D simplesmente porque é a linguagem matemática para descrever a geometria espacial. Seus outros três tópicos são realmente apenas subconjuntos de álgebra linear:

  • Vetores são uma maneira de pensar sobre pontos no espaço
  • Matrizes são formas de pensar sobre transformações de espaço e objetos: traduzir objetos, dimensioná-los, etc.
  • Quaternions são uma representação natural para um subgrupo específico dessas transformações, as rotações
  • etc etc.

Quanto a outras peças relevantes de matemática para programação de gráficos 3D, a que eu recomendo que não receba amor o suficiente é a geometria computacional. Muitos problemas naturais se resumem a tópicos em geometria computacional:

  • Uma das maneiras mais naturais de definir um volume a partir de um conjunto de pontos (por exemplo, para definir um volume de áudio em que um ruído de fundo específico será reproduzido ou um volume de neblina ou algo semelhante) é encontrar o casco convexo dos pontos. ; existem bons algoritmos para fazer isso nas dimensões 2 e 3, mas mesmo os algoritmos 2D não são imediatamente óbvios.
  • O problema de ser capaz de determinar quais objetos estão próximos de um determinado ponto ou próximos (por exemplo, reduzir o número de objetos que devem ser verificados quanto a possíveis colisões, ou descobrir quais inimigos notarão os jogadores em um ponto). ponto dado) entra no campo dos problemas de consulta geométrica e nos esquemas de particionamento espacial (e, portanto, em estruturas como árvores e árvores de BSP). As mesmas idéias gerais também são usadas para responder a consultas de 'rastreamento de linha' (por exemplo, 'o que esse raio laser acerta?')

Depois disso, eu encorajaria a pesquisa em cálculo básico e métodos particularmente numéricos para equações diferenciais; elas são menos relevantes para os gráficos 3D em si do que para a física 3D, mas, em geral, os dois tópicos são bem acoplados (mesmo para problemas simples da cinemática - por exemplo, para animações de personagens e afins) - e algum conhecimento de ambos melhorar substancialmente o seu conhecimento de qualquer um; é difícil, se não impossível, trabalhar a física relevante sem o mesmo conhecimento básico de álgebra linear usado pelos gráficos, mas, ao mesmo tempo, ter o conhecimento de física fornece outro ponto de referência para a compreensão dos tópicos nos gráficos.


Essa foi uma resposta fantástica, Steven, obrigado. Adorei seus resumos de como pensar em vetores, matrizes e quaternions (infelizmente, mais informativos em 2 segundos do que meu atual professor de álgebra linear) Você também me deu uma melhor compreensão dos tipos de desafios de modelagem colocados aos programadores de gráficos 3D. Felicidades!
Katherine Rix



1

Se você conhece as coordenadas cartesianas, a aplicação dos tópicos acima à computação gráfica deve ser bastante clara. Existem tutoriais como esses para o OpenGL que ajudarão a esclarecer a aplicação da matemática para resolver problemas básicos de exibição, por exemplo, como fazer um modelo de estrutura de arame parecer girar. O artigo da Wikipedia sobre desenho em perspectiva pode ajudar com um pouco de histórico.

Além disso, existem muitos tópicos de exibição que se beneficiam da formulação matemática. Por exemplo, sólidos 3D são geralmente representados por triangulações de sua superfície. Como mostramos apenas a parte da superfície que um observador "deveria" ver (algoritmos de superfície / linha ocultos)? Se um objeto deve ser iluminado a partir de uma fonte / direção específica, como isso interage com a perspectiva para fornecer uma renderização convincente da superfície?

Além disso, existem todos os tipos de tópicos interessantes de modelagem, como animação de uma névoa ou chama. Mas a transformação de coordenadas, como sua lista de tópicos parece centralizar, é um grampo de todos os avanços posteriores.



1

Eles não são todos necessários. A matemática vetorial é composta por gráficos 3D, você poderá configurar a geometria sem conhecer os pontos mais delicados da matemática vetorial, mas coisas como mapas de relevo ficarão muito difíceis e você entenderá a física.

Quaternions simplesmente oferecem uma descrição diferente para algumas das matemáticas, pode ser bom ter, mas certamente não é necessário, pois a matemática mais convencional é suficiente para descrever qualquer cálculo que você possa fazer com quaternions.

Matemática matricial e álgebra linear estão intimamente relacionadas, sobretudo descrevendo operações lineares em conjuntos de números. Mas, novamente, é apenas outra maneira de descrever algumas coisas que poderiam ser descritas com vetores e álgebra.

Não sei se você considera que isso é apenas uma parte da matemática básica, mas a trigonometria certamente precisa fazer a lista também.


Eu já vi algumas menções da física até agora - você pode me dizer a quais conceitos você está se referindo aqui? Não toquei no assunto há 12 anos (ou seja, desde o colegial) e, francamente, eu odiava. Talvez eu ache sua aplicação mais fácil de suportar.
Katherine Rix

Física newtoniana, principalmente resolução de colisão. Você pode não ter aprendido essas coisas no ensino médio, mas tudo é muito matemático; portanto, se você gosta de matemática, deve ser bom.
Aaaaaaaaaaa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.