La théorie 3D avant les API graphiques? [fermé]

19

Je suis ingénieur logiciel et j'espère faire évoluer ma carrière vers le développement de jeux. Je lis un livre en ce moment sur 2D en utilisant C ++ / DirectX. Quand j'entre dans la 3D, je sais que je veux le faire correctement. Par exemple, je ne connais rien à l'espace 3D. Donc, si j'apprends seulement une API, je la connais peut-être mais je ne sais pas si je peux développer un mini monde 3D interactif avec. Je ne dirais pas que je réussis simplement à avoir une caisse rotative avec les derniers shaders, etc. Mes compétences en mathématiques sont jusqu'à l'algèbre trig / linéaire et toujours au collège. Je sais que plus de maths sont à venir. Dois-je lire des livres de théorie 3D avant de reprendre OpenGL / Direct3D ou toute autre suggestion? Je sais juste qu'une API ne va pas enseigner le développement de jeux 3D et je ne veux pas être perdue par la suite. Je suis très orienté vers les livres, donc ça va s'il y a des suggestions là aussi. Les pensées sont les bienvenues. Merci!

Phil
la source

Réponses:

11

Après vous avoir disséqué sur l'autre site je me sens obligé de répondre :)

Je ne suis pas moi-même un professionnel, mais j'ai suivi un cours d'infographie 3D dans mon université et cela m'a vraiment aidé à comprendre les API que j'ai fini par utiliser.

Parmi les choses que j'ai trouvées particulièrement utiles:

  1. Les matrices de transformation et leur fonctionnement, non seulement pour les transformations d'objets mais aussi pour la visualisation de la transformation, la projection en perspective, etc. C'est probablement la chose la plus importante.
  2. Toute la théorie derrière la foudre et l'ombre, particulièrement utile lorsque vous commencez à vous plonger dans des shaders.
  3. Échantillonnage de texture, mipmapping.
  4. La théorie des couleurs et les techniques de mélange sont également utiles.

Et je pense vraiment que ce sont des sujets qui peuvent être choisis en lisant simplement un livre ou deux sur le sujet, tant que vous avez des connaissances mathématiques.

Chêne
la source
Merci. Avez-vous entendu parler de ce livre? J'ai entendu dire qu'il enseigne la théorie 3D mais se concentre également sur la pixellisation de logiciels 3D. Je suppose que cela peut encore aider à comprendre ce qui se passe. amazon.com/…
Phil
1
La rastérisation @Phil est importante, mais je ne sais pas si j'aurais commencé avec un livre intitulé "conseils" et s'adressant aux développeurs 3D "avancés" ... cela ressemble à quelque chose à lire plus tard.
Oak
Je lis le volume 1 en ce moment et c'est le volume 2. Je suppose qu'il vous fusionne mais je ne l'ai jamais regardé. Je sais qu'il dit "avancé" mais la plupart disent que ce n'est pas le cas. Je vais le garder sur la liste :)
Phil
1
Le traçage de rayons est également un autre sujet intéressant, mais il est beaucoup trop lent pour les jeux en temps réel
Bryan Denny
@Byran +1 pour l'avoir mentionné. Il est cependant utilisé pour pré-calculer l'éclairage.
Jonathan Fischoff
9

Commencez par faire. De cette façon, vous découvrirez ce que vous ne savez pas.

Prenez ensuite un bon livre sur les mathématiques 3D.

Je recommande '3D Math Primer for Graphics and Game Development'

par Fletcher Dunn et Ian Parberry. (Wordware)

Très clair, au point, pertinent - avec du code C ++ et tout.

Il est très important de connaître les bases des points, des vecteurs, des transformations, etc.

Mais cela ne signifie pas que vous devez tout étudier avant de plonger. :)

jacmoe
la source
3

J'ai pris un cours d'introduction à l'infographie au collège (il y a 1-2 ans) et le site Web du cours est toujours en place. Beaucoup de diapositives PowerPoint sont toujours en place que vous pourriez trouver utiles et utiles. Les sujets couvrent à la fois la théorie graphique 2D et 3D.

Bryan Denny
la source
2

Je suis dans un bateau similaire à vous (même si je suis en train de réapprendre des choses que je connaissais vaguement à l'université), et ma solution a été de consulter plusieurs des livres mentionnés plus haut dans la question " Good 3D Math Theory Books " ici. Si vous êtes un apprenant du livre, cela peut être une bonne façon de procéder pour vous. Surtout si votre collège n'a pas vraiment un bon cours de graphisme 3D (le mien n'en avait pas).

Ben Zeigler
la source
2

Hmmm, quand j'ai dû faire mon premier jeu en 3D il y a une quinzaine d'années (car c'était mon travail, ça aide à persévérer) je n'avais aucune connaissance en 3D autre que les mathématiques au lycée. Si vous aimez la résolution de casse-tête et la lecture, vous pouvez en raisonner la plupart vous-même et avec l'aide d'Internet (FAQ comp.graphics.algorithms). J'ai lu les bibles openGL et http://www.amazon.com/Computer-Graphics-Principles-Practice-2nd/dp/0201848406(avertissement oldskool) car ils donnent des informations de fond valides. Si vous le faites de cette façon, vous pourriez commencer du mauvais côté, mais à un moment donné, vous imaginerez ou rencontrerez une meilleure solution. La plupart des problèmes 3D peuvent être résolus si votre compréhension 2D est bonne. Ajoutez au trig, pythagore, matrices et inverses / transposition généraux (pour la projection), le produit dot & cross et ce pour quoi vous les utilisez, les quaternions (ne devez pas les comprendre, sachez simplement comment les utiliser - vous pouvez vous en passer mais ils font aujourd'hui partie du vocabulaire de base), et vous pouvez résoudre la plupart des problèmes que vous rencontrez. Au fur et à mesure, vous rencontrerez de meilleures façons, mais ces quelques-uns peuvent tout résoudre. La meilleure façon est de vous fixer un objectif hors de votre portée et de vous forcer à y arriver. Les problèmes que vous rencontrez sont ce que vous devez apprendre, et bon, vous '

Kaj
la source
2

Le blog de Wolfire Games a récemment présenté une excellente série de tutoriels sur l'algèbre linéaire pour les développeurs de jeux.

Il est vraiment important de comprendre les mathématiques derrière cela avant de commencer à apprendre une API. Sinon, l'ordre et le but des appels API n'auront pas beaucoup de sens pour vous. Vous devez d'abord comprendre ce qu'ils font pour vous au niveau mathématique.

Bob Somers
la source
1

Je vous suggère de vous inscrire au Game Institute , en particulier les cours de programmation graphique avec DirectX 9.

Vous n'avez pas besoin de participer aux cours interactifs si vous voulez simplement vous auto-apprendre.

Soit dit en passant, il existe une option pour obtenir également des livres imprimés pour un montant supplémentaire très faible. Ils valent la peine.

J'ai fait beaucoup de leurs cours il y a quelques années et les cours, bien qu'un peu old-skool sont vraiment très bons et je ne peux pas les recommander assez fortement - en plus Gary Simmons est un gars vraiment sympa.

octonion
la source
1

Avant tout, essayez de faire des trucs. D'abord et avant tout, entrez. Sinon, vous deviendrez un expert en théorie mais pas en pratique.

Si vous pensez que vous êtes vraiment passionné par le graphisme, alors imaginez que vous continuerez à apprendre de nouveaux matériaux presque toute votre vie. Ce n'est pas comme si vous pouviez apprendre tout ce dont vous avez besoin avant de commencer. Cela ne fonctionne tout simplement pas de cette façon.

En apprenant de plus en plus sur les mathématiques des graphiques 3D, vous vous rendrez compte qu'il n'y a pas de mathématiques de l'infographie, il n'y a que des mathématiques. Apprenez à vous-même apprendre les mathématiques . Ensuite, vous pourrez digérer de nouvelles techniques telles qu'elles sont présentées dans la littérature.

À mesure que les technologies graphiques évoluent, nous emprunterons différentes techniques mathématiques. Ce qui est populaire aujourd'hui pourrait ne pas l'être demain.

Voici certaines choses qui vont rester les mêmes.

En ce moment, je trouve le matériel en algèbre géométrique pour l'informatique très intéressant, et je pense qu'il serait préférable de commencer par l'approche qu'ils mettent en page pour l'infographie. http://www.amazon.com/Geometric-Algebra-Computer-Science-Object-Oriented/dp/0123694655

Le livre explique des choses comme les quaternions d'une manière beaucoup plus simple, et pourrait vous être utile en fonction de votre formation et de vos intérêts mathématiques.

Jonathan Fischoff
la source
1

N'allez pas pour les livres "infographie". Commencez par l'algèbre linéaire - elle jette les bases de tout ce dont vous avez besoin. Le MIT a un bon cours vidéo: http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2005/

De là, il devrait être simple de récupérer tout texte d'introduction sur l'infographie. UoWashington a un cours en ligne (pas de vidéo cependant): http://www.cs.washington.edu/education/courses/457/06au/lectures/

Si vous êtes impatient, vous pouvez commencer avec le cours de graphisme sans algèbre linéaire, mais croyez-moi quand je dirai qu'il reviendra vous mordre :)

Rachel Blum
la source
1

Si vous voulez comprendre comment fonctionne un pipeline de rendu logiciel traditionnel (et les choses n'ont pas beaucoup changé même avec l'introduction de pipelines matériels programmables), un livre que je recommanderais certainement serait celui de Jim Blinn: A Trip Down The Graphics Pipeline.

Contrairement à certaines autres suggestions, elle n'est pas particulièrement complète, mais elle est très lisible et je pense que si vous débutez avec la 3D, c'est une bonne introduction. Et il est écrit par Jim Blinn, qui est l'un des pères fondateurs de l'infographie, et est donc écrit du point de vue de quelqu'un qui a réellement inventé / découvert ces techniques.

JasonD
la source
1

J'ai été l'AT du cours de graphisme de mon université pendant plusieurs années. J'ai défini le programme et j'ai couvert des sujets tels que les tramages et ombrages logiciels, Java3D, OpenGL, etc. Quelque temps après, à mon époque, j'ai décidé d'écrire un traceur de rayons pour ma propre édification. Ce fut une expérience incroyable - avec un tampon de trame et une routine putpixel (x, y, couleur), en 500 lignes, j'avais du code pour générer une image avec des sphères, des triangles, un ombrage par pixel, des ombres, etc. Si je devais refaire les pracs pour les cours, j'insisterais pour que les étudiants fassent un traceur de rayons. Il est facile de se laisser prendre dans les détails d'un algorithme de ligne de balayage lors de la construction d'un rasterizer, ou de se sentir comme si vous travailliez dans une boîte noire à l'aide d'une API 3D.

Pour un accès rapide et solide à un bac à sable graphique, je recommande d'écrire votre propre ray-tracer. Évidemment, c'est loin de ce qui est couramment utilisé dans la production de graphiques 3D en temps réel, mais c'est une façon vraiment intuitive et compacte de voir et d'apprendre la théorie.

Crowley9
la source