Teoria 3D prima delle API grafiche? [chiuso]


19

Sono un ingegnere del software e spero di spostare la mia carriera verso lo sviluppo del gioco. Sto leggendo un libro in questo momento in 2D usando C ++ / DirectX. Quando entro in 3D so che voglio farlo correttamente. Ad esempio, non so nulla dello spazio 3D. Quindi, se imparo solo un'API, potrei saperlo ma non so se posso sviluppare un mini mondo 3d interattivo con esso. Non mi definirei un successo avendo solo una cassa rotante con gli ultimi shader, ecc. Le mie abilità matematiche sono all'algebra trig / lineare e sono ancora al college. So che più matematica verrà. Dovrei leggere libri di teoria 3D prima di prendere OpenGL / Direct3D o altri suggerimenti? So solo che un'API non insegnerà lo sviluppo di giochi 3D e non voglio perderli in seguito. Sono molto orientato ai libri, quindi va bene se ci sono anche suggerimenti. I pensieri sono ben accetti. Grazie!

Risposte:


11

Dopo averti disseduto sull'altro sito, mi sento in dovere di rispondere :)

Io stesso non sono un professionista, ma ho frequentato un corso di computer grafica 3D nella mia università e mi ha davvero aiutato a capire le API che ho finito per usare.

Tra le cose che ho trovato particolarmente utili:

  1. Matrici di trasformazione e come funzionano, non solo per le trasformazioni di oggetti ma anche per visualizzare la trasformazione, la proiezione prospettica ecc. Questa è probabilmente la cosa più importante.
  2. Tutta la teoria dietro il lampo e l'ombra, particolarmente utile quando inizi a dilettarti con gli shader.
  3. Campionamento delle trame, mipmapping.
  4. Anche la teoria del colore e le tecniche di fusione sono utili.

E penso sicuramente che si tratti di argomenti che possono essere presi semplicemente leggendo un libro o due sull'argomento, purché tu abbia un background matematico.


Grazie. Hai sentito parlare di questo libro? Ho sentito che insegna la teoria 3d ma si concentra anche sulla rasterizzazione del software 3d. Immagino che possa ancora aiutare a capire cosa sta succedendo. amazon.com/…
Phil

1
La rasterizzazione di @Phil è importante, ma non so se avrei iniziato con un libro intitolato "suggerimenti" e rivolto agli sviluppatori 3D "avanzati" ... sembra qualcosa da leggere in seguito.
Oak

Sto leggendo il volume 1 in questo momento e questo è il volume 2. Immagino che ti unisca ma non l'ho mai visto. So che dice "avanzato" ma molti dicono che non lo è. Lo terrò nella lista :)
Phil

1
Anche il ray tracing è un altro argomento interessante, ma è troppo lento per i giochi in tempo reale
Bryan Denny

@Byran +1 per averlo menzionato. Tuttavia, viene utilizzata per l'illuminazione pre-calcolata.
Jonathan Fischoff il

9

Inizia facendo. In questo modo scoprirai ciò che non sai.

Quindi prendi un buon libro di matematica 3D.

Consiglio '3D Math Primer per la grafica e lo sviluppo di giochi'

di Fletcher Dunn e Ian Parberry. (Wordware)

Molto chiaro, al punto, rilevante - con il codice C ++ e tutto il resto.

È molto importante conoscere le basi di punti, vettori, trasformazioni, ecc.

Ma ciò non significa che dovresti studiare tutto prima di immergerti. :)


3

Ho frequentato un corso di introduzione alla computer grafica al college (1-2 anni fa) e il sito web del corso è ancora attivo. Molte diapositive di PowerPoint sono ancora disponibili che potresti trovare utili e utili. Gli argomenti riguardano sia la teoria grafica 2D che 3D.


2

Sono su una barca simile a te (anche se tecnicamente sto riapprendendo cose che vagamente conoscevo al college), e la mia soluzione è stata quella di dare un'occhiata a molti dei libri citati nella domanda " Good 3D Math Theory Books " qui. Se sei uno studente di libri che potrebbe essere un buon modo per te. Soprattutto se il tuo college in realtà non ha un buon corso di grafica 3D (il mio no).


2

Hmmm, quando ho dovuto realizzare il mio primo gioco 3D circa 15 anni fa (dovevo fare il mio lavoro, che aiuta a perseverare) non avevo alcuna conoscenza 3D se non la matematica delle superiori. Se hai una passione per la risoluzione e la lettura di enigmi, puoi ragionare in gran parte da solo e con l'aiuto di Internet (comp.graphics.algorithms faq). Ho letto le bibbie openGL e http://www.amazon.com/Computer-Graphics-Principles-Practice-2nd/dp/0201848406(avvertendo oldskool) in quanto forniscono informazioni di base valide. Se lo fai in questo modo, potresti iniziare nel modo sbagliato, ma a un certo punto immaginerai o ti imbatterai in una soluzione migliore. La maggior parte dei problemi 3d può essere risolta se la tua conoscenza 2d è buona. Aggiungi al trigma generale, pitagora, matrici e inversioni / trasposizione (per proiezione), punto e prodotto incrociato e per cosa li usi, quaternioni (non devi capirli, sappi solo come usarli - puoi farne a meno ma loro possono fanno parte del vocabolario di base) e puoi risolvere la maggior parte dei problemi che incontri. Mentre vai, ti imbatterai in modi migliori, ma quei pochi possono risolvere qualsiasi cosa. Il modo migliore è porsi un obiettivo fuori dalla tua portata e forzarti ad arrivarci. I problemi che incontri sono ciò che devi imparare e, ehi, tu '


2

Il blog Wolfire Games ha pubblicato di recente una serie di tutorial davvero eccellenti sull'algebra lineare per gli sviluppatori di giochi.

È davvero importante capire la matematica che sta dietro prima di preoccuparti di iniziare a imparare un'API. Altrimenti, l'ordine e lo scopo delle chiamate API non avranno molto senso per te. Devi prima capire cosa stanno facendo per te a livello di matematica.


1

Ti suggerisco di iscriverti al Game Institute , in particolare la Programmazione grafica con i corsi DirectX 9.

Non devi prendere parte alle lezioni interattive se vuoi solo imparare da solo.

A proposito, c'è un'opzione per ottenere anche libri stampati per un importo aggiuntivo molto basso. Ne valgono la pena.

Ho fatto molti dei loro corsi alcuni anni fa e quelli, anche se un po 'vecchio stile sono davvero abbastanza buoni e non posso raccomandarli abbastanza vivamente - inoltre Gary Simmons è davvero un bravo ragazzo.


1

Soprattutto, prova a fare cose. Innanzitutto saltate dentro. Altrimenti diventerete esperti di teoria ma non di pratica.

Se pensi di essere veramente appassionato di grafica, allora immagina che continuerai a imparare nuovi materiali per gran parte della tua vita. Non è che puoi imparare tutto ciò di cui hai bisogno prima di iniziare. Semplicemente non funziona in questo modo.

Man mano che impari sempre di più sulla matematica della grafica 3D, ti renderai conto che non esiste matematica per la computer grafica, ma solo matematica. Impara come insegnarti la matematica da solo . Quindi sarai in grado di digerire nuove tecniche come sono presentate in letteratura.

Con l'evoluzione delle tecnologie grafiche prenderemo in prestito diverse tecniche matematiche. Ciò che è popolare oggi potrebbe non esserlo domani.

Ecco alcune cose che rimarranno le stesse.

In questo momento sto trovando il materiale in Algebra geometrica per l'Informatica molto interessante e penso che potrebbe essere meglio iniziare con l'approccio che impongono per la computer grafica. http://www.amazon.com/Geometric-Algebra-Computer-Science-Object-Oriented/dp/0123694655

Il libro spiega cose come i quaternioni in un modo molto più semplice e potrebbe essere utile per te a seconda del tuo background matematico e dei tuoi interessi.


1

Non andare per libri "computer grafica". Inizia con l'algebra lineare: pone le basi per tutto ciò di cui hai bisogno. Il MIT ha un buon corso di video: http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2005/

Da lì, dovrebbe essere semplice raccogliere qualsiasi testo introduttivo sulla grafica del computer. UoWashington ha un corso online (nessun video, però): http://www.cs.washington.edu/education/courses/457/06au/lectures/

Se sei impaziente puoi iniziare con il corso di grafica senza algebra lineare, ma credimi quando dico che tornerà a morderti :)


1

Se vuoi capire come funziona una pipeline di rendering di software tradizionale (e le cose non sono cambiate così tanto anche con l'introduzione di pipeline hardware programmabili), un libro che consiglio vivamente sarebbe quello di Jim Blinn: A Trip Down The Graphics Pipeline.

A differenza di altri suggerimenti, non è particolarmente completo, ma è molto leggibile e penso che se hai appena iniziato con il 3D, è una buona introduzione. Ed è scritto da Jim Blinn, che è uno dei padri fondatori della computer grafica, e quindi è scritto dal punto di vista di qualcuno che ha effettivamente inventato / scoperto queste tecniche.


1

Sono stato l'AT del corso di grafica presso la mia università per diversi anni. Ho impostato il programma e ho coperto cose come rasterizzazioni e shading del software, Java3D, OpenGL, ecc. Qualche tempo dopo, ai miei tempi ho deciso di scrivere un ray-tracer per la mia edificazione. È stata un'esperienza incredibile - con un frame buffer e una routine putpixel (x, y, color), in 500 righe avevo il codice per generare un'immagine con sfere, triangoli, ombreggiatura per pixel, ombre, ecc. Se avessi dovuto rifare i prac per i corsi, insisto affinché gli studenti facciano un ray-tracciante. È molto semplice rimanere invischiati nei dettagli di un algoritmo scanline quando si costruisce un rasterizzatore o sentirsi come se stessi lavorando in una scatola nera usando un'API 3D.

Per un accesso rapido e solido a una sandbox grafica, ti consiglio di scrivere il tuo ray-tracer. Ovviamente, questo è molto diverso da ciò che viene comunemente utilizzato nella produzione di grafica 3D in tempo reale, ma è un modo davvero intuitivo e compatto per vedere e apprendere la teoria.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.