Teoria 3D antes das APIs gráficas? [fechadas]


19

Sou engenheiro de software e espero mudar minha carreira para o desenvolvimento de jogos. Estou lendo um livro agora em 2D usando C ++ / DirectX. Quando entro em 3D, sei que quero fazê-lo corretamente. Por exemplo, não sei nada sobre o espaço 3D. Portanto, se eu aprender apenas uma API, talvez eu a conheça, mas não sei se posso desenvolver um mini mundo 3D interativo com ela. Eu não me consideraria bem-sucedido apenas por ter uma caixa rotativa com os shaders mais recentes, etc. Minhas habilidades de matemática são de álgebra linear / trigonométrica e ainda estão na faculdade. Eu sei que mais matemática está por vir. Devo ler os livros de teoria 3D antes de pegar no OpenGL / Direct3D ou com outras sugestões? Só sei que uma API não vai ensinar o desenvolvimento de jogos em 3D e não quer se perder depois. Sou muito orientada para livros, então tudo bem se houver sugestões lá também. Pensamentos são bem-vindos. Obrigado!

Respostas:


11

Depois de te desrespeitar no outro site, sinto-me obrigado a responder :)

Eu também não sou profissional, mas fiz um curso de computação gráfica em 3D na minha universidade e isso realmente me ajudou a entender as APIs que acabei usando.

Entre as coisas que achei especialmente úteis:

  1. Matrizes de transformação e como elas funcionam, não apenas para transformações de objetos, mas também para visualizar transformação, projeção em perspectiva etc. Essa é provavelmente a coisa mais importante.
  2. Toda a teoria por trás de raios e sombras, especialmente útil quando você começa a se envolver em shaders.
  3. Amostragem de textura, mipmapping.
  4. A teoria das cores e as técnicas de mistura também são úteis.

Definitivamente, acho que esses são assuntos que podem ser abordados apenas pela leitura de um ou dois livros sobre o assunto, desde que você tenha conhecimentos matemáticos.


Obrigado. Você já ouviu falar deste livro? Ouvi dizer que ensina a teoria 3D, mas também se concentra na rasterização de software 3D. Acho que ainda pode ajudar a entender o que está acontecendo. amazon.com/...
Phil

1
A rasterização @Phil é importante, mas não sei se teria começado com um livro chamado "dicas" e abordado desenvolvedores 3D "avançados" ... parece algo para ler mais tarde.
Oak

Estou lendo o volume 1 agora e este é o volume 2. Acho que ele mescla você, mas nunca o vi. Eu sei que ele diz "avançado", mas a maioria diz que não. Vou mantê-lo na lista :)
Phil

1
Ray tracing também é outro tema interessante, mas é demasiado lento para jogos em tempo real
Bryan Denny

@Byran +1 por mencionar. No entanto, é usado para calcular a iluminação.
Jonathan Fischoff

9

Comece fazendo. Dessa forma, você descobrirá o que não sabe.

Depois, pegue um bom livro sobre matemática 3D.

Eu recomendo '3D Math Primer for Graphics and Game Development'

de Fletcher Dunn e Ian Parberry. (Wordware)

Muito claro, direto ao ponto, relevante - com código C ++ e tudo.

É muito importante conhecer o básico de pontos, vetores, transformações etc.

Mas isso não significa que você deva estudar tudo antes de mergulhar. :)


3

Tomei uma aula de Introdução à Computação Gráfica na faculdade (há 1 ou 2 anos) e o site do curso ainda está ativo. Ainda há muitos slides do PowerPoint que você pode achar úteis e úteis. Os tópicos abrangem a teoria de gráficos 2D e 3D.


2

Estou em um barco semelhante a você (embora eu esteja tecnicamente reaprendendo coisas que eu sabia vagamente na faculdade), e minha solução foi verificar vários dos livros mencionados na pergunta " Bons livros de teoria da matemática 3D " aqui. Se você é um aluno de livros, pode ser um bom caminho a seguir. Especialmente se a sua faculdade não tiver um bom curso de gráficos 3D (o meu não).


2

Hummm, quando eu tive que fazer meu primeiro jogo em 3D há 15 anos (tinha que ser como meu trabalho, isso ajuda a perseverar), eu não tinha nenhum conhecimento em 3D além da matemática do ensino médio. Se você gosta de resolver quebra-cabeças e ler, pode raciocinar a maior parte disso sozinho e com alguma ajuda da Internet (comp.graphics.algorithms faq). Eu li as Bíblias do openGL e http://www.amazon.com/Computer-Graphics-Principles-Practice-2nd/dp/0201848406(aviso oldskool), pois fornecem informações de plano de fundo válidas. Se você fizer isso dessa maneira, poderá começar da maneira errada, mas em um momento poderá sonhar ou encontrar uma solução melhor. A maioria dos problemas em 3D pode ser resolvida se a sua compreensão 2D for boa. Adicione ao trigonométrico geral, pitágoras, matrizes e inversa / transponha (para projeção), produto pontilhado e cruzado e o que você usa para eles, quaternions (não precisa entendê-los, apenas saiba como usá-los - você pode ficar sem, mas eles hoje em dia fazem parte do vocabulário básico) e é possível resolver a maioria dos problemas encontrados. À medida que avança, você se depara com maneiras melhores, mas esses poucos podem resolver qualquer coisa. A melhor maneira é estabelecer uma meta fora do seu alcance e forçar-se a chegar lá. Os problemas que você encontra são o que você precisa aprender e, ei, você '


2

O blog Wolfire Games teve uma série realmente excelente de tutoriais em álgebra linear para desenvolvedores de jogos recentemente.

É realmente importante entender a matemática por trás disso antes de começar a aprender uma API. Caso contrário, a ordem e o objetivo das chamadas da API não farão muito sentido para você. Você precisa entender o que eles estão fazendo por você primeiro no nível de matemática.


1

Eu sugiro que você se inscreva no Game Institute , especificamente nos cursos de Programação Gráfica com DirectX 9.

Você não precisa participar das aulas interativas se quiser apenas aprender sozinho.

A propósito, existe a opção de obter também livros impressos por um valor adicional muito baixo. Eles valem bem a pena.

Eu fiz muitos dos cursos deles há alguns anos e os cursos, embora um pouco de skool velho seja realmente muito bom e eu não possa recomendá-los o suficiente - além de Gary Simmons é um cara muito legal.


1

Acima de tudo, apenas tente fazer coisas. Primeiro e acima de tudo, salte. Caso contrário, você se tornará um especialista em teoria, mas não em prática.

Se você acha que é realmente apaixonado por gráficos, imagine que continuará aprendendo novos materiais a maior parte de sua vida. Não é como se você pudesse aprender tudo o que precisa antes de começar. Simplesmente não funciona assim.

À medida que você aprende mais e mais sobre a matemática dos gráficos 3D, você perceberá que não há matemática em computação gráfica, apenas matemática. Aprenda a aprender matemática sozinho . Então você será capaz de digerir novas técnicas, conforme apresentadas na literatura.

À medida que as tecnologias gráficas evoluem, emprestamos diferentes técnicas matemáticas. O que é popular hoje pode não ser popular amanhã.

Aqui estão algumas coisas que permanecerão iguais.

No momento, estou achando o material em Álgebra Geométrica para Ciência da Computação muito interessante e acho que talvez seja melhor começar com a abordagem que eles fazem para a computação gráfica. http://www.amazon.com/Geometric-Algebra-Computer-Science-Object-Oriented/dp/0123694655

O livro explica coisas como quaternions de uma maneira muito mais simples e pode ser útil para você, dependendo de seus conhecimentos e conhecimentos matemáticos.


1

Não vá para livros de "computação gráfica". Comece com álgebra linear - estabelece as bases para tudo o que você precisa. O MIT tem um bom curso em vídeo: http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2005/

A partir daí, deve ser fácil pegar qualquer texto introdutório em computação gráfica. UoWashington tem um curso on-line (sem vídeo): http://www.cs.washington.edu/education/courses/457/06au/lectures/

Se você está impaciente, pode começar com o curso de gráficos sem álgebra linear, mas acredite em mim quando digo que ele voltará para morder você :)


1

Se você quiser entender como funciona um pipeline de renderização de software tradicional (e as coisas não mudaram muito, mesmo com a introdução de pipelines de hardware programáveis), um livro que eu recomendaria definitivamente seria o de Jim Blinn: A Trip Down The Graphics Pipeline.

Ao contrário de algumas das outras sugestões, não é particularmente abrangente, mas é muito legível e acho que se você está apenas começando com o 3D, é uma boa introdução. E foi escrito por Jim Blinn, que é um dos pais fundadores da computação gráfica e, portanto, é escrito da perspectiva de alguém que realmente inventou / descobriu essas técnicas.


1

Eu fui o TA do curso de gráficos na minha universidade por vários anos. Eu defini o plano de estudos e cobri coisas como rasterizações e sombreamento de software, Java3D, OpenGL etc. Depois de algum tempo, decidi escrever um traçador de raios para minha própria edificação. Foi uma experiência incrível - com um buffer de quadro e uma rotina putpixel (x, y, cor), em 500 linhas eu tinha código para gerar uma imagem com esferas, triângulos, sombreamento por pixel, sombras etc. refazer as práticas dos cursos, eu insistiria que os alunos fizessem um traçador de raios. É muito fácil se envolver com os detalhes de um algoritmo da linha de varredura ao criar um rasterizador ou sentir como se estivesse trabalhando em uma caixa preta usando uma API 3D.

Para acesso rápido e sólido a uma caixa de areia gráfica, recomendo que você escreva seu próprio traçador de raios. Obviamente, isso está muito longe do que é comumente usado na produção de gráficos 3D em tempo real, mas é uma maneira muito intuitiva e compacta de ver e aprender a teoria.


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.