PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : aus Interesse Grafikdarstellung von Grundauf verstehen


urpils
2010-03-28, 19:21:14
Hallo!

ich studiere ein Fach, was absolut gar nichts mit Computern, Medien,.. zu tun hat... aber das ist in meiner Freizeit einfach ein schönes Hobby...
in meinen Semesterferien habe ich z.B. das Buch Computerarchitektur von A.S. Tanenbaum mit einem unglaublichen Genuss verschlungen.. nicht, weil mir das etwas bringt oder ich mit dem Wissen konkret etwas anfangen köntne - ich finde es einfach faszinierend :)

auf ähnliche Weise (rein für das Interesse.. ohne den Hintergedanken ein Spiel zu basteln) wollte ich mich an (3D)-Grafik heranwagen.. also von 0 anfangen in einer Programmiersprache (ob das jetzt, C(++), Java, Basic,... ist, ist mir egal - bin da flexibel) alles zusammenzuschrauben, um zunächst 2D-Grafiken darzustellen und irgendwann (nachdem das verstanden ist) auch eine kleine 3D-Engine zu basteln (wirklich erstmal nur die Grafik.. keine Physik, kein Netzwerkzeug.,...).

Dabei möchte ich aber nicht einfach nachprogrammieren, was andere geleistet haben und mich nicht mit "Unwichtigkeiten" der Implementierung wie Plattformunabhängigkeit, OpenGL oder Direct3D, herumquälen müssen.

bei bestehenden Open-Source (3D)Engines, die ich kenne steckt so viel Zeug dahinter, dass ich nichtmal wüsste, wo ich dort anfangen soll.. zudem möchte ich mir das alles ganz gern von unten erarbeiten und nicht von oben herab schauen, wie etwas denn realisiert wurde.

Hat das jemand Bücherempfehlungen, Open-Source-Projekte, Weblinks o.ä., womit ich etwas anfangen könnte?

bringt es etwas, z.B. sich den Code von Wolfenstein3D oder ähnliches frühen Spielen anzusehen, um den Werdegang der Grafik-Engines nachzuverfolgen?

(btw: ich habe nur 2 Arten von Rechner zur Verfügung: OSX oder Windows 98/DOS. alles, was ich darauf nicht ohne großen Aufwand zum laufen bekomme, kann ich leider nicht nutzen :/ )

vielen Dank schonmal :)

Tesseract
2010-03-28, 20:36:09
meinst du einen software-renderer oder mit hilfe einer 3D-API und was soll das ding genau können? ich werd aus dem posting nicht ganz schlau.

urpils
2010-03-28, 20:39:03
meinst du einen software-renderer oder mit hilfe einer 3D-API?

das ist mir erstmal ziemlich egal...
wenn ich mit der Stufe von Wolfenstein anfange, dann reicht wohl erstmal ein Software-Renderer...

gleich auf eine 3D-API aufzuspringen würde das ganze doch eher noch verkomplizieren - oder? (wenn es nicht so ist, lasse ich mich gerne eines besseren belehren :) )

huha
2010-03-28, 20:42:36
Okay, wichtigste Sachen zuerst: Wie sieht's mit deinem mathematischen Verständnis aus?

Lineare Algebra auf Uni-Niveau ist Pflicht. Ohne das kommst du einfach nicht weit. Dann ist es außerdem noch sinnvoll, mal eine Vorlesung oder ein Buch zur Numerik gehabt zu haben, damit man über einige Besonderheiten informiert ist.

Kurzum: Das Zeug ist verdammt schwierig und aufwendig. Wenn du dich nicht ordentlich auskennst, werden die Ergebnisse auch nicht besonders beeindruckend sein.
Wenn's sowieso in Software laufen soll, ist ggf. ein Raytracer einfacher zu schreiben (wenngleich aber auch langsamer).

-huha

Tesseract
2010-03-28, 20:43:59
das ist mir erstmal ziemlich egal...
wenn ich mit der Stufe von Wolfenstein anfange, dann reicht wohl erstmal ein Software-Renderer...

gleich auf eine 3D-API aufzuspringen würde das ganze doch eher noch verkomplizieren - oder? (wenn es nicht so ist, lasse ich mich gerne eines besseren belehren :) )

ne, genau anders rum. wenn du einen softwarerenderer schreiben willst ist das ein ziemlicher aufwand. etwas lauffähiges in z.B. OpenGL kannst du im prinzip in ein paar stunden von null weg zusammen bauen.
und das was das ganze erst wirklich komplex macht ist das drum herum. ein paar polygone, die sich drehen sind einfach. für richtige models brauchst du dann irgendeinen loader für ein format usw.
ich will dir ja nicht deine euphorie nehmen, aber je nach dem was du genau machen willst kann das SEHR viel aufwand sein. vor allem, wenn du keine grundlagen hast. das ist etwas vollkommen anderes, als mal eben ein kleines shellprogramm zu coden, dass ein paar zahlen cruncht.

urpils
2010-03-28, 20:47:34
Okay, wichtigste Sachen zuerst: Wie sieht's mit deinem mathematischen Verständnis aus?

Lineare Algebra auf Uni-Niveau ist Pflicht. Ohne das kommst du einfach nicht weit. Dann ist es außerdem noch sinnvoll, mal eine Vorlesung oder ein Buch zur Numerik gehabt zu haben, damit man über einige Besonderheiten informiert ist.

Kurzum: Das Zeug ist verdammt schwierig und aufwendig. Wenn du dich nicht ordentlich auskennst, werden die Ergebnisse auch nicht besonders beeindruckend sein.
Wenn's sowieso in Software laufen soll, ist ggf. ein Raytracer einfacher zu schreiben (wenngleich aber auch langsamer).

-huha

nun ich hab hier das Buch "Lineare Algebra" von Beutelspacher liegen, sowie "Mathematik für Elektronik & IT-Berufe". Ich stehe mich Mathe nicht so sehr auf Kriegsfuß und habe auch schon 2-3 populärwissenschaftliche Mathebücher "gefuttert", die mir viel Spaß gemacht haben. Daran soll es also nicht scheitern.

Das sind übrigens genau die Tips, die mich interessieren :D also welche Bereiche der Mathematik, Welche Zusammenhänge muss ich kenne.. gibts Standardwerke,...

(Raytracer würde ich vllt. erst später mal ansehen, weil mich im Moment eher interessiert, wie es (prinzipiell gesehen) wirklich gemacht wird)

das muss auch nicht zwangsweise in Software laufen - nur vermute ich, dass man wohl noch ne ganze Menge Komplexität draufläd, wenn man direkt damit anfängt spezifische Grafikhardware für sich rechnen zu lassen.. wie gesagt - wenn das nciht der Fall ist, dann würde ich natürlich gleich OpenGL in meine Planung miteinbeziehen :)

urpils
2010-03-28, 20:49:57
ne, genau anders rum. wenn du einen softwarerenderer schreiben willst ist das ein ziemlicher aufwand. etwas lauffähiges in z.B. OpenGL kannst du im prinzip in ein paar stunden von null weg zusammen bauen.

und das was das ganze erst wirklich komplex macht ist das drum herum. ein paar polygone, die sich drehen sind einfach. für richtige models brauchst du dann irgendeinen loader für ein format usw.

ich will dir ja nicht deine euphorie nehmen, aber je nach dem was du genau machen willst kann das SEHR viel aufwand sein. vor allem, wenn du keine grundlagen hast.

ok - dann halt kein Software-Renderer ;)

ich weiß, dass jede Woche 20 Skriptkiddies ankommen, die gleich das nächste MMORPG im Alleingang programmieren wollen... mir läuft das aber nicht weg und gerade aufgrund der interessanten Hintergründe möchte ich mir das ansehen..
ich habe nicht vor innerhalb von 2 Wochen nen Quake3 Level laden zu können ;)

Tesseract
2010-03-28, 21:00:06
kannst du c++?
wenn nein schau dir das vorher mal an. inkl. z.B. SDL.

wenn du dich damit halbwegs auskennst fällt dir alles weitere wesentlich leichter.

buch... puh.
ein wirklich gutes fällt mir jetzt nicht ein aber z.B.
http://www.amazon.de/Computer-Graphics-OpenGL-Donald-Hearn/dp/0131202383/ref=sr_1_2?ie=UTF8&s=books-intl-de&qid=1269802446&sr=1-2
ist wohl für das was du wissen willst nicht so verkehrt.

urpils
2010-03-28, 21:19:06
kannst du c++?
wenn nein schau dir das vorher mal an. inkl. z.B. SDL.

wenn du dich damit halbwegs auskennst fällt dir alles weitere wesentlich leichter.

buch... puh.
ein wirklich gutes fällt mir jetzt nicht ein aber z.B.
http://www.amazon.de/Computer-Graphics-OpenGL-Donald-Hearn/dp/0131202383/ref=sr_1_2?ie=UTF8&s=books-intl-de&qid=1269802446&sr=1-2
ist wohl für das was du wissen willst nicht so verkehrt.

"können" ist vielleicht etwas viel gesagt, aber ich kann damit so umgehen, dass ich mir alles weitere innerhalb kürzester Zeit aus ner Referenz zusammensuche... (für ein Schiffe-Versenken Spiel o.ä. sollte es reichen ;) ).

bei den Büchern habe ich auf Amazon schon einige gefunden, die sich damit auseinandersetzen - aber es ist nicht erkennbar, inwieweit dort wirklcih auf die Materie eingegangen wird, oder ob man nur dem Autor zuschaut, wir er sich ein konkretes Projekt erarbeitet.

danke für den Buchtip - ich schau es mir mal an! :)

Nighthawk13
2010-03-28, 21:44:43
Mathekenntnisse sind nötig, aber so tiefgreifend müssen sie nicht sein zum Einstieg. Vektorrechnung in 3D ist wohl das wichtigste;)
Grundlegende Programmierkenntnisse sollten auch soweit vorhanden sein, dass man zumindest ein paar for-Schleifen und Debugausgaben beherrscht.

Als Einstieg in OpenGL ist Nehe-Seite zu empfehlen:
http://nehe.gamedev.net/lesson.asp?index=01
Alternativ in Direct3d hats ja gute Samples im SDK, wobei ich OpenGL für Lernzwecke anschaulicher finde.

Ansonsten finde ich die Idee mit Raytracer nicht schlecht, wenn du wirklich von Null anfangen willst.
Ist am anschaulichsten, und du brauchst dich mit keiner API rumzuschlagen.

Es ist wirklich nicht schwer:
- Für jeden Pixel des Bildes ein Strahl mit gleichem Ursprung
- Kollision Strahl vs eine Kugel
- Wenn getroffen setPixel(weiss) ansonsten setPixel(schwarz) (zur Not im Textmodus)

Ryatracing geht sogar in Javascript:
http://labs.flog.co.nz/raytracer/

Einen Raytracer dann schnell zu kriegen ist hingegen eine Kunst;)

Tesseract
2010-03-28, 22:07:40
Vektorrechnung in 3D ist wohl das wichtigste;)
jein. eigentlich matrizenrechnung. mit vektoren alleine kommt man zumindest im renderbereich nicht all zu weit.

Gast
2010-03-28, 22:13:06
Hallo,


könnt ihr denn gute Bücher zum Lernen der Oberstufenmathematik empfehlen? Habe leider nur Mittlere Reife und mache eine Ausbildung und würde aus Spaß an der Sache gerne die gesamte Mathematik erlernen, die man für das Abitur braucht.
Mit Übungen und Beispielen.

Gast
2010-03-29, 15:52:30
jein. eigentlich matrizenrechnung. mit vektoren alleine kommt man zumindest im renderbereich nicht all zu weit.
Also lineare Algebra, das wurde doch schon gesagt. Lineare Algebra beschäftigt sich mit dem Studium von linearen (nona) Vektorräumen, ob die jetzt 1, 2 oder 34-dimensional sind ist dann egal...
Eine "hands-on" Literatur dazu wäre der Hartley Zisserman klick (http://www.amazon.de/Multiple-View-Geometry-Computer-Vision/dp/0521540518), da sollte man aber schon etwas Ahnung von linearer Algebra haben, mit Grundlagen beschäftigt sich der nicht mehr wirklich. Behandelt dafür sehr schön die für Computer Grafik wichtigen Bereiche (Kameramodelle, projektive Geometrie, Transformationen usw. )

Und zum Anfangen BITTE nicht die NeHe Sachen verwenden, da wird einem aus heutiger Sicht veraltete Technologie beigebracht.

Brillus
2010-03-29, 16:32:20
Wenn du dich mit OpenGL beschäftigen willst:

Nehe wurde ja schon erwähnt.

Was ich auch sehr empfehlen kann ist die Delphi OpenGL Seite.
http://www.delphigl.com/

Hat sehr gute Tutorials und auch eine prima Befehlsreference für OpenGL Befehle. Auch interesant wenn du NICHT mit Delphi programmierst. Die Seite war meine primäre Nachschlageseite bzgl. OpenGL als ich meine Diplomarbeit geschrieben habe(hat C++ und OpenGL genutzt).

Als erstes solltest du dir halt überlegen was genau du machen willst. Da hast du die auswahl zwischen Grundsätzlich 3 Möglichkeiten:

Raytracing: Kann ich eher wenig dazu sagen da ich keine Erfahrung damit habe. Contra halt ist das es nicht das ist was aktuell in Spielen und Anwendungen(mit paar ausnahmen) verwendet wird.

Softwarerenderer: Alles selber Programmieren, Pro wenn du es hinbekommst weiß du wirklich wie es funktioniert from Scratch. Contra Sehr schwer.

3D-API Verwenden(Ich persönlich empfehle OpenGL(evtl mit Shadern) + SDL(www.libsdl.org)) Pro: Leichter und auch viele Tutorials/Erklärungen im Web vorhanden Contra: abstrahiert halt bestimmte Feinheiten weg.

Gast
2010-03-29, 17:10:59
Das hier ist das Richtige für Dich:

http://www.amazon.de/3D-Grafik-Programmierung-mathematischen-Grundlagen-Rasteralgorithmen/dp/3826617673/ref=sr_1_5?ie=UTF8&s=books&qid=1269875420&sr=8-5

{655321}-Hades
2010-04-01, 20:25:17
Hallo,


könnt ihr denn gute Bücher zum Lernen der Oberstufenmathematik empfehlen? Habe leider nur Mittlere Reife und mache eine Ausbildung und würde aus Spaß an der Sache gerne die gesamte Mathematik erlernen, die man für das Abitur braucht.
Mit Übungen und Beispielen.

Also, ich hab mich auch gerade erst auf Uni-Niveau gekämpft (bzw. kämpfe immer noch), daher hier mal ein guter Anfang:

Hogben - Mathematics for the Million (Englisch, aber ein absolutes Standardwerk)

Kline - Mathematics for the Nonmathematician (empfiehlt sich für Kulturwissenschaftler enorm, aber eben Englisch)

Puchnatschow/Popow - Mathematik ohne Formeln (hat keine Übungen, dafür aber weit über Oberstufe an sehr plastischen Beispielen einige Felder abgedeckt)

Kreul - Mathematik leicht gemacht (stell dir vor, du kannst die Schule bis Oberstufe nachholen. Habe blöderweise ein paar Fehler entdeckt, aber ansonsten sehr gut)



Aber rechne gleich viel Zeit ein. Ist mit Mathematik aber komisch: Irgendwann macht man es einfach nur aus Spaß an der Freude. Ich konnte bisher gerade einmal die Irrationalität von Wurzel2 und die Gauß'sche Summenformel beweisen. Reicht erstmal. Nie vergessen: Was man nicht versteht, kann man auch schlicht rein mechanisch exekutieren lernen.

Gast
2010-04-02, 00:16:40
gleich auf eine 3D-API aufzuspringen würde das ganze doch eher noch verkomplizieren - oder? (wenn es nicht so ist, lasse ich mich gerne eines besseren belehren :) )

Nein, nen schnellen effiziennten Softwarerenderer zu schreiben der überall läuft ist aufwendiger als einfach eine 3D API zu nutzen.


Da du Mac OS X nutzt und dein Win98 uralt ist, würde ich dir in diesem Fall definitiv zu OpenGL raten, denn DirectX läuft auf einem Mac nicht.

Ich weiß jetzt halt nur nicht, ob du schon OpenGL 3.0 und neurer verwenden kannst, denn da hat sich schon sehr viel im Vergleich zu OpenGL 1.x - 2.x geändert.
Vom Hörensagen weiß ich nur, daß Mac OS X noch OpenGL 2.x benötigen würde. Wenn dem so ist, dann sind deine Anforderungen fest definiert.


Als OpenGL Buch kannst du das Redbook nehmen. Dürftest du auch überall in der Unibücherrei zum Ausleihen finden.

Gast
2010-04-02, 00:20:28
Hallo,


könnt ihr denn gute Bücher zum Lernen der Oberstufenmathematik empfehlen? Habe leider nur Mittlere Reife und mache eine Ausbildung und würde aus Spaß an der Sache gerne die gesamte Mathematik erlernen, die man für das Abitur braucht.
Mit Übungen und Beispielen.

Alle Bücher von Papula, also Band 1-3

Gast
2010-04-02, 00:22:11
Und zum Anfangen BITTE nicht die NeHe Sachen verwenden, da wird einem aus heutiger Sicht veraltete Technologie beigebracht.

Er kann problemlos die NeHe Sachen verwenden, denn er verwendet eh einen Mac und das bedeutet OpenGL Version < 3.0

_DrillSarge]I[
2010-04-02, 12:18:36
Kurzum: Das Zeug ist verdammt schwierig und aufwendig. Wenn du dich nicht ordentlich auskennst, werden die Ergebnisse auch nicht besonders beeindruckend sein.
quatsch. dreiecke malen *gg* ist sogar recht primitiv. von vektoren und co sollte man schon mal gehört haben :wink:, viel kommt dann auch später von allein. "uni-niveau" (wie auch immer) ist nicht "pflicht".
ich würde mich auch mal in ältere, aber dennoch sehr lehrreiche (für den anfang!) sachen einlesen zB von james d. foley, phillips u.a. (-> introduction to computer graphics).
ok, bei NULL programmierkenntnissen wirds leicht eng, aber das ist auch nicht so schwer, da man heutzutage eh die ganzen umgebungen inkl. doku hinterhergeworfen bekommt.

Spasstiger
2010-04-02, 15:59:23
Am Wirksamsten dürfte wirklich der Besuch einer entsprechenden Vorlesung inklusive Programmierübungen sein. Einfach mal bei den Vorlesungen der Informatiker stöbern. Hier z.B. an der Uni Stuttgart: http://www.vis.uni-stuttgart.de/ger/teaching/lecture/ws01/gis/.

Coda
2010-04-02, 20:31:54
I[;7946378']quatsch. dreiecke malen *gg* ist sogar recht primitiv. von vektoren und co sollte man schon mal gehört haben :wink:, viel kommt dann auch später von allein. "uni-niveau" (wie auch immer) ist nicht "pflicht".
Um es zu verstehen - was er will - ist es Pflicht. Punkt aus.

urpils
2010-04-02, 20:37:32
ich danke euch.. ich habe mir nun eine Reihe Bücher bestellt (Lineare Algebra, Mathematik für Informatiker, OpenGL, Computergrafik) - mal sehen, wie weit ich bi, wenn ich mit denen durch bin :)

danke! :)

Gast
2010-04-04, 06:40:39
Um es zu verstehen - was er will - ist es Pflicht. Punkt aus.

Nö, du irrst.

Mathematik ist ein ziemlich umfangreiches Gebiet, es ist sogar so umfangreich, daß es dafür sogar einen eigenen Studiengang gibt.

Aber das was er braucht ist nur ein Teil davon, ein Auszug und denn sollte er aber gut verstehen.