3D-Theorie vor Grafik-APIs? [geschlossen]

19

Ich bin ein Softwareentwickler und hoffe, meine Karriere in Richtung Spieleentwicklung voranzutreiben. Ich lese gerade ein Buch über 2D mit C ++ / DirectX. Wenn ich in 3D komme, weiß ich, dass ich es richtig machen möchte. Zum Beispiel weiß ich nichts über 3D-Raum. Wenn ich also nur eine API lerne, weiß ich es vielleicht, aber ich weiß nicht, ob ich damit eine interaktive Mini-3D-Welt entwickeln kann. Ich würde mich nicht als erfolgreich bezeichnen, wenn ich nur eine rotierende Kiste mit den neuesten Shadern usw. hätte. Meine mathematischen Fähigkeiten reichen bis zur Trig / Linear-Algebra und sind noch im College. Ich weiß, dass mehr Mathe kommen wird. Sollte ich vor dem Erlernen von OpenGL / Direct3D in Büchern mit 3D-Theorie lesen oder andere Vorschläge machen? Ich weiß nur, dass eine API die Entwicklung von 3D-Spielen nicht lehrt und danach nicht verloren gehen möchte. Ich bin sehr buchorientiert, also ist das in Ordnung, wenn es dort auch Vorschläge gibt. Gedanken sind willkommen. Vielen Dank!

Phil
quelle

Antworten:

11

Nachdem ich dich auf der anderen Seite aufgelöst habe, fühle ich mich verpflichtet zu antworten :)

Ich bin selbst kein Profi, aber ich habe an meiner Universität einen 3D-Computergrafikkurs besucht, der mir wirklich geholfen hat, die APIs zu verstehen, die ich letztendlich verwendet habe.

Unter anderem fand ich besonders nützlich:

  1. Transformationsmatrizen und wie sie funktionieren, nicht nur für Objekttransformationen, sondern auch zum Betrachten von Transformationen, perspektivischen Projektionen usw. Das ist wahrscheinlich das Wichtigste.
  2. Die ganze Theorie hinter Blitz und Schatten, besonders nützlich, wenn Sie anfangen, sich in Shader zu vertiefen.
  3. Texturabtastung, Mipmapping.
  4. Farbtheorie und Mischtechniken sind ebenfalls nützlich.

Und ich denke auf jeden Fall, dass dies Themen sind, die durch einfaches Lesen eines oder zweier Bücher zum Thema aufgegriffen werden können, solange Sie über den mathematischen Hintergrund verfügen.

Eiche
quelle
Vielen Dank. Hast du von diesem Buch gehört? Ich habe gehört, es lehrt die 3D-Theorie, konzentriert sich aber auch auf die 3D-Software-Rasterisierung. Ich denke, es hilft vielleicht noch zu verstehen, was los ist. amazon.com/
Phil
1
@Phil-Rasterisierung ist wichtig, aber ich weiß nicht, ob ich mit einem Buch namens "tips" begonnen hätte und "fortgeschrittene" 3D-Entwickler angesprochen hätte ... das klingt nach etwas, das ich später lesen könnte.
Oak
Ich lese gerade Band 1 und dies ist Band 2. Ich vermute, es führt Sie zusammen, aber ich habe es nie angeschaut. Ich weiß, dass er "fortgeschritten" sagt, aber die meisten sagen, dass es nicht so ist. Ich werde es auf der Liste halten :)
Phil
1
Ray Tracing ist ebenfalls ein interessantes Thema, aber für Echtzeitspiele viel zu langsam
Bryan Denny
@Byran +1 für die Erwähnung. Es wird jedoch eine Vorberechnung der Beleuchtung verwendet.
Jonathan Fischoff
9

Beginnen Sie damit. Auf diese Weise entdecken Sie, was Sie nicht wissen.

Dann holen Sie sich ein gutes Buch über 3D-Mathematik.

Ich empfehle '3D Math Primer für Grafik und Spieleentwicklung'

von Fletcher Dunn und Ian Parberry. (Wordware)

Ganz klar, auf den Punkt gebracht, relevant - mit C ++ - Code und allem.

Es ist sehr wichtig, die Grundlagen von Punkten, Vektoren, Transformationen usw. zu kennen.

Das heißt aber nicht, dass du alles lernen solltest, bevor du eintauchst. :)

jacmoe
quelle
3

Ich habe am College eine Einführung in die Computergrafik gemacht (vor 1-2 Jahren) und die Kurswebsite ist noch in Betrieb. Es sind noch viele PowerPoint-Folien verfügbar, die für Sie nützlich und hilfreich sein könnten. Die Themen umfassen sowohl die 2D- als auch die 3D-Grafiktheorie.

Bryan Denny
quelle
2

Ich bin in einem ähnlichen Boot wie Sie (obwohl ich Dinge, die ich im College vage kannte, technisch neu lerne), und meine Lösung bestand darin, einige der Bücher zu lesen, die in der Frage " Gute 3D-Mathematik-Theorie-Bücher " hier erwähnt wurden. Wenn Sie ein Buchlerner sind, ist dies möglicherweise ein guter Weg für Sie. Vor allem, wenn Ihr College keinen guten 3D-Grafikkurs hat (meiner nicht).

Ben Zeigler
quelle
2

Hmmm, als ich vor 15 Jahren mein erstes 3D-Spiel machen musste (musste, weil es mein Job war, der zum Durchhalten beiträgt), hatte ich keinerlei 3D-Kenntnisse außer Mathematik an der High School. Wenn Sie gerne Rätsel lösen und lesen, können Sie das meiste selbst und mit Hilfe des Internets herausfinden (comp.graphics.algorithms faq). Ich habe die openGL-Bibeln und http://www.amazon.com/Computer-Graphics-Principles-Practice-2nd/dp/0201848406 gelesen(Warnung oldskool), da sie gültige Hintergrundinformationen geben. Wenn Sie es auf diese Weise tun, beginnen Sie möglicherweise falsch, aber irgendwann werden Sie sich entweder eine bessere Lösung ausdenken oder darauf stoßen. Die meisten 3D-Probleme können gelöst werden, wenn Ihr 2D-Griff gut ist. Fügen Sie zu den allgemeinen Trig, Pythagoras, Matrizen und Inversen / Transponieren (für die Projektion), Punkt- und Kreuzprodukt und dem, wofür Sie sie verwenden, Quaternionen hinzu (Sie müssen sie nicht verstehen, wissen nur, wie man sie verwendet - Sie können ohne sie auskommen sind heutzutage Teil des Grundwortschatzes), und Sie können die meisten Probleme lösen, auf die Sie stoßen. Während du gehst, wirst du auf bessere Wege stoßen, aber diese wenigen können alles lösen. Am besten setzen Sie sich ein Ziel, das Sie nicht erreichen können, und zwingen sich, dorthin zu gelangen. Die Probleme, auf die Sie stoßen, müssen Sie lernen.

Kaj
quelle
2

Der Blog von Wolfire Games hat in letzter Zeit eine wirklich hervorragende Reihe von Tutorials zur linearen Algebra für Spieleentwickler veröffentlicht.

Es ist wirklich wichtig, die Mathematik dahinter zu verstehen, bevor Sie anfangen, eine API zu lernen. Andernfalls ergeben die Reihenfolge und der Zweck der API-Aufrufe für Sie keinen großen Sinn. Sie müssen zuerst verstehen, was sie für Sie auf mathematischer Ebene tun.

Bob Somers
quelle
1

Ich schlage vor, dass Sie sich beim Game Institute anmelden , insbesondere in den Kursen zur Grafikprogrammierung mit DirectX 9.

Sie müssen nicht an den interaktiven Kursen teilnehmen, wenn Sie nur selbst lernen möchten.

Übrigens gibt es die Möglichkeit, gedruckte Bücher zu einem sehr geringen Aufpreis zu beziehen. Sie sind es wert.

Ich habe viele ihrer Kurse vor ein paar Jahren gemacht und die Kurse, obwohl ein bisschen old-skool wirklich ziemlich gut ist und ich sie nicht genug empfehlen kann - und Gary Simmons ist ein wirklich netter Kerl.

Oktonion
quelle
1

Versuchen Sie vor allem, Sachen zu machen. In erster Linie einspringen. Andernfalls werden Sie ein Experte in Theorie, aber nicht in der Praxis.

Wenn Sie der Meinung sind, dass Sie sich wirklich für Grafik begeistern, können Sie sich vorstellen, dass Sie den größten Teil Ihres Lebens weiterhin neues Material lernen werden. Es ist nicht so, dass Sie alles lernen können, was Sie brauchen, bevor Sie anfangen. Das funktioniert einfach nicht so.

Wenn Sie mehr und mehr über die Mathematik der 3D-Grafik lernen, werden Sie feststellen, dass es keine Mathematik der Computergrafik gibt, sondern nur Mathematik. Erfahren Sie, wie Sie sich selbst Mathematik beibringen können . Dann werden Sie in der Lage sein, neue Techniken zu verarbeiten, wie sie in der Literatur vorgestellt werden.

Im Zuge der Weiterentwicklung der Grafiktechnologien werden wir verschiedene mathematische Techniken ausleihen. Was heute populär ist, ist morgen vielleicht nicht populär.

Hier sind einige Dinge, die gleich bleiben werden.

Im Moment finde ich das Material in der Geometrischen Algebra für die Informatik sehr interessant und denke, dass es vielleicht besser ist, mit dem Ansatz zu beginnen, den sie für die Computergrafik entwerfen. http://www.amazon.com/Geometric-Algebra-Computer-Science-Object-Oriented/dp/0123694655

Das Buch erklärt Dinge wie Quaternionen auf viel einfachere Weise und kann für Sie hilfreich sein, abhängig von Ihrem mathematischen Hintergrund und Ihren Interessen.

Jonathan Fischoff
quelle
1

Gehen Sie nicht für "Computergrafik" Bücher. Beginnen Sie mit der linearen Algebra - sie legt den Grundstein für alles, was Sie brauchen. MIT hat einen guten Videokurs: http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2005/

Von dort aus sollte es einfach sein, einführenden Text zu Computergrafiken zu lesen. UoWashington hat einen Kurs online (allerdings kein Video): http://www.cs.washington.edu/education/courses/457/06au/lectures/

Wenn Sie ungeduldig sind, können Sie mit dem Grafikkurs ohne lineare Algebra beginnen, aber glauben Sie mir, wenn ich sage, dass er zurückkommt, um Sie zu beißen :)

Rachel Blum
quelle
1

Wenn Sie verstehen möchten, wie eine herkömmliche Software-Rendering-Pipeline funktioniert (und die Dinge sich auch mit der Einführung programmierbarer Hardware-Pipelines nicht wesentlich geändert haben), würde ich auf jeden Fall Jim Blinns Buch empfehlen: A Trip Down The Graphics Pipeline.

Im Gegensatz zu einigen anderen Vorschlägen ist es nicht besonders umfassend, aber sehr gut lesbar, und ich denke, wenn Sie gerade erst mit 3D anfangen, ist es eine gute Einführung. Und es wurde von Jim Blinn geschrieben, der einer der Gründerväter der Computergrafik ist und daher aus der Perspektive von jemandem geschrieben wurde, der diese Techniken tatsächlich erfunden / entdeckt hat.

JasonD
quelle
1

Ich war mehrere Jahre TA für den Grafikkurs an meiner Universität. Ich stellte den Lehrplan ein und behandelte Dinge wie Software-Rasterisierungen und -Schattierungen, Java3D, OpenGL usw. Einige Zeit später entschloss ich mich in meiner Freizeit, einen Ray-Tracer für meine eigene Erbauung zu schreiben. Dies war eine unglaubliche Erfahrung - mit einem Framebuffer und einer Putpixel-Routine (x, y, Farbe) hatte ich in 500 Zeilen Code, um ein Bild mit Kugeln, Dreiecken, Schattierungen pro Pixel, Schatten usw. zu erzeugen Ich würde darauf bestehen, dass die Studenten einen Ray-Tracer machen. Es ist viel zu einfach, sich mit den Details eines Scanline-Algorithmus vertraut zu machen, wenn Sie einen Rasterizer erstellen, oder das Gefühl zu haben, mit einer 3D-API durch eine Black Box zu arbeiten.

Für den schnellen und sicheren Zugriff auf eine Grafik-Sandbox empfehle ich, einen eigenen Ray-Tracer zu schreiben. Offensichtlich ist dies weit entfernt von dem, was in der Produktion von Echtzeit-3D-Grafiken häufig verwendet wird, aber es ist eine sehr intuitive und kompakte Möglichkeit, die Theorie zu sehen und zu lernen.

Crowley9
quelle